Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
biv-nadya
0 / 0 / 1
Регистрация: 27.02.2013
Сообщений: 3
#1

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

27.02.2013, 12:25. Просмотров 1285. Ответов 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 он пишет другое значение). Не могу найти ошибку.
http://www.cyberforum.ru/cpp-beginners/thread396776.html
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
27.02.2013, 12:25
Я подобрал для вас темы с готовыми решениями и ответами на вопрос Разложение экспоненты в ряд тейлора. Цикл в цикле (C++):

Вычисление функции через разложение в ряд (Ряд Тейлора)
Привет всем. Задание такого плана: Вычислить и вывести на экран в виде...

Разложение ряд в ряд Тейлора.Переделать программу
Написать программу вычисления и вывода на экран в виде таблицы значений...

Разложение ln(1-x) в ряд Тейлора
Здравствуйте! помогите написать функцию разложения в ряд Тейлора ln(1-x)

Разложение в ряд Тейлора lg(x)
Просьба выложите программу у кого есть!

Разложение в ряд Тейлора
Доброго времени суток.Подскажите, пожалуйста разложение в ряд Тейлора функции...

2
olya7
489 / 306 / 231
Регистрация: 18.02.2013
Сообщений: 738
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;
 
}
1
biv-nadya
0 / 0 / 1
Регистрация: 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;
 
}
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
27.02.2013, 15:59
Привет! Вот еще темы с решениями:

Разложение в ряд тейлора
У меня есть программа разложения в ряд тейлора и блок схема к ней какие...

разложение в ряд Тейлора
нужна ваша помощь!!! используя разложение в ряд тейлора, найти значение...

Разложение в ряд Тейлора
Есть функция log(x); Нужно ее разложить в ряд и найти сумму для заданной...

Разложение косинуса в ряд Тейлора
Помогите найти ошибку. Написал код, но работает только с 1, где ошибка? class...


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

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru