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

Ошибка в рядах Тейлора - C++

Восстановить пароль Регистрация
 
MikeEl
1 / 1 / 0
Регистрация: 27.03.2012
Сообщений: 52
06.06.2013, 23:56     Ошибка в рядах Тейлора #1
Помогите найти ошибку в этом задании:
адача состоит в проведении программной реализации расчета приблизительного значения функции y, разложив функцию f (x) в ряд Тейлора, при этом необходимо вывести и применить рекуррентное отношение для расчета общей части для каждого слагаемого ряда или его части.Исходными параметрами задач является аргумент функции, изменяется в диапазоне [Xbegin, Xend] с шагом Xdelta, и точность (допустимая погрешность) расчетов е, определяющая условие завершения рекурсивного расчета.

y=x+x3/3x! + x5/5x! + x7/7x! + ..., разложивши функцию sh(x) в ряд Тейлора. x3 - означает в кубе. / - разделить.

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
#include<iostream>
#include<math.h>
#include<conio.h>
using namespace std;
double function1 (int n);
 
double function (int n, int x, int e);
int main(){
    double x, dx, xbegin, xend, e,i,b,n;
    printf("Enter xbegin, xend, dx, e:\n");
    scanf("%f %f %f %f",&xbegin,&xend,&dx,&e);
    
for (x = xbegin; x <= xend; x += dx)
{
b=((2*n-1)*pow(x,2*n+1)/(function1 (n)));
               b=+b;
//printf(" result);
printf("\n Calculated values: %f ", b );
b=0;
    }
getch();
    //return 0;
}
double function1 (int n)
{
if (n==1)
return 1;
else
return n* function1(n-1);
}
double function2 (int n, double x, double e)
{
    double res=(n%2==0)?-1:1;
    res*=function2(n,x,e);
    res=(fabs(res)<e)?0:res+function2(n+1, x, e);
    
    return res;
}

не выводит результат
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
06.06.2013, 23:56     Ошибка в рядах Тейлора
Посмотрите здесь:

C++ Ряд Тейлора
C++ Ряд Тейлора С++
C++ Ряды Тейлора
Переделать код в рядах Тейлора C++
C++ Ряд Тейлора
Ряд Тейлора. В чем ошибка? C++
Ряд Тейлора С++ C++
C++ Ошибка "stack overflow". Разложение функции в ряд Тейлора

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Kuzia domovenok
 Аватар для Kuzia domovenok
1883 / 1738 / 116
Регистрация: 25.03.2012
Сообщений: 5,907
Записей в блоге: 1
07.06.2013, 00:37     Ошибка в рядах Тейлора #2
Нехорошо считать факториал через рекурсию.
И вообще нехорошо считать факториал каждый раз вычисляя значение ряда Тейлора в очередной точке.
Аналогично, нехорошо считать pow.
Оптимизация нужна! Мегагерцы в проце не казённые.

Добавлено через 15 минут
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
#include <stdio.h>
#include <math.h>
#include <conio.h> 
 
const double e=1e-3;
double My_Sh(double x){
  double sum=x;
  double delta=x;
  int n=1;
  while(fabs(delta)>e){
      delta*=x*x;
      n++;
      delta/=n;
      n++;
      delta/=n;
      sum+=delta;
  }
  return sum;
}
int main(){
    double x, dx, xbegin, xend;
    printf("Enter xbegin, xend, dx, e:\n");
    scanf("%lf %lf %lf %lf",&xbegin,&xend,&dx,&e);
    for (x = xbegin; x <= xend; x += dx)
        printf("\n sh(%lf)=%lf ", x, My_Sh(x));
    getch();
    return 0;
}
MikeEl
1 / 1 / 0
Регистрация: 27.03.2012
Сообщений: 52
07.06.2013, 00:40  [ТС]     Ошибка в рядах Тейлора #3
Цитата Сообщение от Kuzia domovenok Посмотреть сообщение
Нехорошо считать факториал через рекурсию.
И вообще нехорошо считать факториал каждый раз вычисляя значение ряда Тейлора в очередной точке.
Аналогично, нехорошо считать pow.
Оптимизация нужна! Мегагерцы в проце не казённые.
на самом деле, здесь немного не мои заданные y и f(x). хотел разобраться почему оно не работало с теми условиями.
но если все так критично, то вот с такими данными поможешь?
Миниатюры
Ошибка в рядах Тейлора  
Yandex
Объявления
07.06.2013, 00:40     Ошибка в рядах Тейлора
Ответ Создать тему
Опции темы

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