Форум программистов, компьютерный форум CyberForum.ru

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
biv-nadya
0 / 0 / 0
Регистрация: 27.02.2013
Сообщений: 3
#1

Разложение экспоненты в ряд тейлора. Цикл в цикле - C++

27.02.2013, 12:25. Просмотров 1015. Ответов 2
Метки нет (Все метки)

Здравствуйте.
Сама задача: составить программу для вычисления множества значений функции
exp x на интервале −40,1 с шагом 0.5 не использующую встроенную функцию,.
Интервал и шаг считывать из текстового файла, результат вывести в текстовый файл
состоящий из трех колонок: x , exp x , встроенный exp x .
Для вычисления использовать разложение в ряд Тейлора, суммировать до тех пор пока
добавление следующего члена ряда перестанет изменять результат.

Вот собственно что у меня получилось:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
#include <iostream>
#include <fstream>
#include <cmath>
using namespace std;
 
int main()
{
    double a,b,c,s=1,d=1,i,x,p=0;
 
    ofstream out;
    ifstream in;
     in.open("in.txt");
     in>>a;     in>>b;     in>>c;
     in.close();
     in.clear();
cout << "inerval ["<<a<<" ; "<<b<<"] \nshag = "<<c<<"\n\n";
 
out.open("out.txt");
   for (i=a;i<b+0.1;i+=c)
 
   {
   if (i<=0)  {for (int k=1;d!=p;k++)
                   {
                s=s*(-1)*i/k;
                p=d;
                d+=s;
                }
                cout <<i<<"             "<<1/d<< endl;
                }
    else    {for (int k=1;d!=p;k++)
                   {
                s=s*(1)*i/k;
                p=d;
                d+=s;
                }
                cout <<i<< "           "<<d<< endl;
              }
 
   }
    out.close();
    out.clear();
    return 0;
 
}

Получается что он во все строки пишет одно и то же значение, т.е. цикл заканчивается на x=-40(хотя при x>0 он пишет другое значение). Не могу найти ошибку.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
27.02.2013, 12:25     Разложение экспоненты в ряд тейлора. Цикл в цикле
Посмотрите здесь:

C++ Ряд Тейлора. Разложение экспоненты
C++ Разложение sin(x) в ряд Тейлора
Разложение в ряд Тейлора C++
разложение в ряд Тейлора C++
Разложение косинуса в ряд Тейлора C++
Разложение функции в ряд Тейлора C++
C++ Разложение в ряд Тейлора lg(x)
Разложение в ряд тейлора C++
C++ Разложение функции в ряд Тейлора
Разложение в ряд Тейлора синуса C++
C++ Разложение ln(1-x) в ряд Тейлора
Разложение в ряд Тейлора C++

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
olya7
477 / 294 / 91
Регистрация: 18.02.2013
Сообщений: 684
27.02.2013, 15:02     Разложение экспоненты в ряд тейлора. Цикл в цикле #2
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
#include <iostream>
#include <fstream>
#include <cmath>
using namespace std;
 
int main()
{
double a,b,c,s=1,d=1,i=1,x,p=0;
 
ofstream out;
ifstream in;
in.open("in.txt");
in>>a; in>>b; in>>c;
in.close();
in.clear();
cout << "inerval ["<<a<<" ; "<<b<<"] \nshag = "<<c<<"\n\n";
 
out.open("out.txt");
for (x=a;x<b+0.1;x+=c)
 
{
    double f=1;
    s=1;
    i=1;
    do
    {    
        f*=x/i;
        s+=f;
        i++;
    }while (s+f!=s);
    cout <<x << "       "<<s <<"       "<<exp (x)<<endl;
 
 
 
}
out.close();
out.clear();
return 0;
 
}
biv-nadya
0 / 0 / 0
Регистрация: 27.02.2013
Сообщений: 3
27.02.2013, 15:59  [ТС]     Разложение экспоненты в ряд тейлора. Цикл в цикле #3
Ой спасибо огромное Вам))

Добавлено через 10 минут
Охо, при отрицательных x неверно же получается!

Добавлено через 29 минут
Вот как исправила:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
#include <iostream>
#include <fstream>
#include <cmath>
using namespace std;
 
int main()
{
    double a,b,c,s=1,i=1,x,d;
 
    ofstream out;
    ifstream in;
     in.open("in.txt");
     in>>a;     in>>b;     in>>c;
     in.close();
     in.clear();
cout << "inerval ["<<a<<" ; "<<b<<"] \nshag = "<<c<<"\n\n";
 
out.open("out.txt");
   for (x=a;x<b+0.1;x+=c)
 
   {
   double f=1;
    s=1;
    i=1;
    do
    {
        { if (x>=0) {   f*=x/i;
        s+=f;d=s;
        i++;          }
 
  else {f*=(-1)*x/i;
        s+=f;d=1/s;
        i++;}
 
}
    }
    while (s+f!=s); cout <<x << "       "<<d <<"       "<<exp (x)<<endl;
 
   }
    out.close();
    out.clear();
    return 0;
 
}
Yandex
Объявления
27.02.2013, 15:59     Разложение экспоненты в ряд тейлора. Цикл в цикле
Ответ Создать тему
Опции темы

Текущее время: 18:40. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru