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

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

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

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

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

Ряд Тейлора. Разложение экспоненты - C++
Здравствуйте! Нуждаюсь в вашей помощи! Знаю на форуме таких тем около 20 если не больше, но все же! Вычислить значения функции,...

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

Разложение ряд в ряд Тейлора.Переделать программу - C++
Написать программу вычисления и вывода на экран в виде таблицы значений функции, заданной с помощью ряда Тейлора, на интервале от Хзнач до...

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

Разложение в ряд Тейлора - C++
Есть функция log(x); Нужно ее разложить в ряд и найти сумму для заданной точность е=0.0001 Считаю х от 0 до 6.0, для того чтобы...

Разложение в ряд тейлора - C++
У меня есть программа разложения в ряд тейлора и блок схема к ней какие параметры нужно задать чтобы получилось для log(x) и что...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
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;
 
}
1
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;
 
}
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
27.02.2013, 15:59
Привет! Вот еще темы с ответами:

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

Разложение в ряд Тейлора - C++
Доброго времени суток.Подскажите, пожалуйста разложение в ряд Тейлора функции exp(x). И хотелось бы узнать правильность предыдущей...

разложение в ряд Тейлора - C++
нужна ваша помощь!!! используя разложение в ряд тейлора, найти значение sin(x) с заданной точностью eps.

Разложение функции в ряд Тейлора - C++
Дано вещественное число X(|X|&lt;1) и целое число N(N&gt;0). Найти значение выражения: 1 + x/2 - (1*x^3)/(2*3) + (1*3*x^5)/(2*4*5) + ... +...


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

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

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