Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 28.12.2012, 23:59   #1
eleonora_zv
Пользователь
 
Регистрация: 14.12.2012
Сообщений: 13
По умолчанию Разложение функции в ряд Тейлора (с++)

Провести програмну реалізацію розрахунку приблизного значення функції y, розклавши функцію f(x) в ряд Тейлора, при цьому необхідно вивести та застосувати рекурентне відношення для обрахування загальної частини для кожного доданку ряду або його частки. Аргумент функції має змінюватися в діапазоні [Xbegin, Xend] з кроком Xdelta. Параметри Xbegin, Xend, Xdelta та точність (допустима похибка) розрахунків е, яка визначає умову завершення рекурсивного розрахунку, задаються користувачем з клавіатури. Передбачити ситуації, коли значення функції можу бути не визначене для заданих аргументів.Снимок.JPG
Код:
#include <iostream>  
#include <conio.h> 
#include <math.h>

using namespace std;

double factorial (double p)
{
int n=1;
p=2*n+1;
if (p == 0) 
return 1; 
else 
return p*factorial(p - 1);
}
long double sin_kub(double p, double x, double e, long double y)
{
double fact=factorial(p);
y=((pow(3, p)-3)*pow(x, p)*pow(-1, p-1)/fact);
if (y>e)
return y=(y+sin_kub(p+1, x, e, y))*0.25;
else return y*0.25;
}
void main()
{
setlocale (0,"Russian");
double xbegin, xdelta, xend, e, x;
cout<<"Введите xbegin (начальное значение): ";
cin>>xbegin;
cout<<"Введите xend(конечное значение х): ";
cin>>xend;
while (xend<xbegin)
{
cout<<"Не корректно задано."<<endl;
cout<<"Введите xbegin (начальное значение): ";
cin>>xbegin;
cout<<"Введите xend(конечное значение х): ";
cin>>xend;
}
cout<<"Введите xdelta(шаг): ";
cin>>xdelta;
cout<<"Введите e(точность): ";
cin>>e;
while (e<0.01)
{
cout<<"Ваше \"е\" слишком маленькое. Введите другое: ";
cin>>e;
}
for (double x=xbegin; x<=xend; x+=xdelta)
{
long double f=sin_kub(3, x, e,0);
cout<<"x="<<x<<"      "<<"f(x)="<<f<<endl;
}

getch ();
}
не выводит значения х и у. где ошибка?
eleonora_zv вне форума Ответить с цитированием
Старый 29.12.2012, 00:12   #2
Abstraction
Старожил
 
Аватар для Abstraction
 
Регистрация: 25.10.2011
Сообщений: 3,178
По умолчанию

Цитата:
Провести програмну реалізацію розрахунку приблизного значення функції y, розклавши функцію f(x) в ряд Тейлора, при цьому необхідно (...) не выводит значения х и у. где ошибка?
Well, you could use debugger to find the problem. Actually, it would be much faster then getting answer from some forum on the Internet.
However (as a hint) take note that when you tell computer that
Код:
int n=1;
p=2*n+1;
- it does just that. Might as well simply write
Код:
int n=1;
p=3;
And, unless three equals zero, you get yourself an 'infinite' recursion, which actually should deplete the stack quickly and drop your application with some sort of message.
Abstraction вне форума Ответить с цитированием
Старый 29.12.2012, 00:23   #3
eleonora_zv
Пользователь
 
Регистрация: 14.12.2012
Сообщений: 13
По умолчанию

мне не выдает ошибок и я не пойму в чем проблема.
у меня есть рекулентная формула
Код:
y=((pow(3, p)-3)*pow(x, p)*pow(-1, p-1)/fact)
где р зависит от n и все время возрастает
eleonora_zv вне форума Ответить с цитированием
Старый 29.12.2012, 07:20   #4
koljsch
Форумчанин
 
Регистрация: 26.01.2009
Сообщений: 360
По умолчанию

Оффтоп
Abstraction, жжешь)))
koljsch вне форума Ответить с цитированием
Старый 29.12.2012, 10:19   #5
Abstraction
Старожил
 
Аватар для Abstraction
 
Регистрация: 25.10.2011
Сообщений: 3,178
По умолчанию

Цитата:
мне не выдает ошибок и я не пойму в чем проблема.
Повторяю по-русски: в том, что Ваша функция factorial описывается как "зашёл и не вышел". В отладчике Вы бы это увидели сразу - приучитесь им пользоваться.
Abstraction вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Разложение функции в ряд Тейлора в СИ Fobos45 Помощь студентам 5 12.04.2012 18:26
Разложение функции в ряд Тейлора (Pascal) berdeman Паскаль, Turbo Pascal, PascalABC.NET 3 04.05.2010 21:03
Разложение функции, Ряд Тейлора. Andrag Помощь студентам 6 22.01.2010 14:41
Одномерный массивы; разложение функции в ряд Тейлора.... lTIGRAl Помощь студентам 3 28.12.2009 17:52
Одномерный массивы, разложение функции в ряд Тейлора...... lTIGRAl Помощь студентам 0 28.12.2009 15:30