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

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

Войти
Регистрация
Восстановить пароль
 
MikeEl
1 / 1 / 0
Регистрация: 27.03.2012
Сообщений: 52
#1

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

06.06.2013, 23:56. Просмотров 327. Ответов 2
Метки нет (Все метки)

Помогите найти ошибку в этом задании:
адача состоит в проведении программной реализации расчета приблизительного значения функции 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;
}

не выводит результат
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
06.06.2013, 23:56
Я подобрал для вас темы с готовыми решениями и ответами на вопрос Ошибка в рядах Тейлора (C++):

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

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

Ошибка "stack overflow". Разложение функции в ряд Тейлора - C++
Задание: рекурентно реализовать разложение ф-ии {\sin}^{2} по ряду Тэйлора. Выдает ошибку &quot;Необработанное исключение в &quot;0x00cc18a9&quot; в...

Ряд тейлора - C++
Не могу написать код правильно Не правильно задаю цикл и не только табулирование для такой функции F(x) =...

Ряд Тейлора - C++
Помогите пожалуйста с решением задачи: Дано действительное число x. Вычислить значение y с помощью стандартной функции и с помощью...

Ряд Тейлора - C++
Вывести на экран таблицу значений функции Y(x) и ее разложения в ряд S(x) с точностью ε (табл. 8.1). Вывести число итераций, необходимое...

2
Kuzia domovenok
2125 / 1955 / 194
Регистрация: 25.03.2012
Сообщений: 6,802
Записей в блоге: 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;
}
0
MikeEl
1 / 1 / 0
Регистрация: 27.03.2012
Сообщений: 52
07.06.2013, 00:40  [ТС] #3
Цитата Сообщение от Kuzia domovenok Посмотреть сообщение
Нехорошо считать факториал через рекурсию.
И вообще нехорошо считать факториал каждый раз вычисляя значение ряда Тейлора в очередной точке.
Аналогично, нехорошо считать pow.
Оптимизация нужна! Мегагерцы в проце не казённые.
на самом деле, здесь немного не мои заданные y и f(x). хотел разобраться почему оно не работало с теми условиями.
но если все так критично, то вот с такими данными поможешь?
0
Миниатюры
Ошибка в рядах Тейлора  
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
07.06.2013, 00:40
Привет! Вот еще темы с ответами:

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

ряд Тейлора - C++
Вычислить и вывести на экран в виде таблицы значения функции, заданной с помощью ряда Тейлора, от xнач до xкон с шагом dx с точностью ε....

Ряд Тейлора - C++
Здравствуйте,помогите пожалйста разобраться.Мне нужно вычислить с помощью ряда Тейлора. в точке x=0.3 а e&lt;=0.001.(принимаем...

Ряд Тейлора - C++
Помогите написать код для COS РЯД ТЕЙЛОРА http://ru.wikipedia.org/wiki/%D0%A0%D1%8F%D0%B4_%D0%A2%D0%B5%D0%B9%D0%BB%D0%BE%D1%80%D0%B0...


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

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

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