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

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

Вернуться   Форум программистов > C/C++ программирование > C++ Builder
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 16.11.2009, 00:33   #1
LuBuMaster
Пользователь
 
Регистрация: 30.10.2009
Сообщений: 56
Смущение Ряд Тейлора. Не получается.

тут пытался писать програмку на ряд тейлора на С++ в студии 2008
и что то вот не получается!((((
перед глазами был исходник тоже тейлора но на ареатангенс.
Вообщем подскажите кто что может, что тут неверного?
P.S. функция логарифма в прикреплённом файле
заранее спасибо)

Код:
#include "stdafx.h"
#include "math.h"
#include <conio.h>

int main()
{
	double xn, xk, dx, F, summ, eps,el;  

	const int MaxI = 100;
	printf("xn, xk, dx, eps\n");
	scanf("%lf%lf%lf%lf", &xn, &xk, &dx, &eps);
	double x = xn;
	int n = 0;   
	summ=0;
	while (x<=xk)
	{
		el= (pow(x-1,2*n+1)) /  (pow  ((2*n+1)*(x+1),2*n+1)) ;
		
		F=+2*el;
	}	
	if(n > MaxI)
	{
		printf("ряд расходится\n");
	}
	else if (el < eps)
	{
	printf("------------------------------------\n");
	printf("|  %lf  |  %i  |  %lf  |  %lf  |  %lf  |\n", x, n, F, el);
				
			}
			n++;
			{
			int x=+dx;
			}
	return 0 ;
}
Изображения
Тип файла: jpg Безымянный.JPG (9.5 Кб, 126 просмотров)

Последний раз редактировалось Sazary; 16.11.2009 в 00:50.
LuBuMaster вне форума Ответить с цитированием
Старый 16.11.2009, 12:31   #2
KHEXT
 
Регистрация: 30.09.2009
Сообщений: 6
По умолчанию

Код:
el= (pow(x-1,2*n+1)) /  (pow  ((2*n+1)*(x+1),2*n+1)) ;
F=+2*el;
Вычисления не соответствуют формуле.

2 *el должно быть за циклом, так как должен выполниться только один раз.
pow ((2*n+1)*(x+1),2*n+1) - тут не всё должно быть в степени, а только вторая часть (x+1), смотри формулу.

Так же, инкрементиться должен "n", а у тебя он всё время 0.

В общем всё не как надо

Последний раз редактировалось KHEXT; 16.11.2009 в 12:35.
KHEXT вне форума Ответить с цитированием
Старый 17.11.2009, 01:08   #3
LuBuMaster
Пользователь
 
Регистрация: 30.10.2009
Сообщений: 56
По умолчанию

почему он всё время 0 ?? я же его увеличиваю потом!
LuBuMaster вне форума Ответить с цитированием
Старый 17.11.2009, 15:03   #4
Sweta
Форумчанин
 
Регистрация: 22.11.2007
Сообщений: 664
По умолчанию

Потому что Ваш цикл
Код:
while (x<=xk)
	{
		el= (pow(x-1,2*n+1)) /  (pow  ((2*n+1)*(x+1),2*n+1)) ;
		
		F=+2*el;
	}
не изменяет ни х, ни n, кроме того можете при выполнении прграммы получить ошибку при х=1,2. 0 в степень возводить нельзя!!
Неприятности приходят и уходят, а жизнь продолжается!
Sweta вне форума Ответить с цитированием
Старый 17.11.2009, 15:06   #5
LuBuMaster
Пользователь
 
Регистрация: 30.10.2009
Сообщений: 56
По умолчанию

Код:
{
	printf("------------------------------------\n");
	printf("|  %lf  |  %i  |  %lf  |  %lf  |  %lf  |\n", x, n, F, el);
				
			}
			n++;
			{
			int x=+dx;
			}
	return 0 ;
}

ну тут то n изменяется! или это не тут надо писать?
а вот насчёт нуля спасибо

Последний раз редактировалось Sazary; 17.11.2009 в 18:39.
LuBuMaster вне форума Ответить с цитированием
Старый 17.11.2009, 15:33   #6
Sweta
Форумчанин
 
Регистрация: 22.11.2007
Сообщений: 664
По умолчанию

Код:
while (x<=xk)
	{
		el= (pow(x-1,2*n+1)) /  (pow  ((2*n+1)*(x+1),2*n+1)) ;
		
		F=+2*el;
	}
while -это цикл и он выполняется до тех пор пока условие(x<=xk) не станет ложным. цикл ограничен {}.
Неприятности приходят и уходят, а жизнь продолжается!

Последний раз редактировалось Sweta; 17.11.2009 в 15:47.
Sweta вне форума Ответить с цитированием
Старый 17.11.2009, 19:24   #7
LuBuMaster
Пользователь
 
Регистрация: 30.10.2009
Сообщений: 56
По умолчанию

Цитата:
Сообщение от Sweta Посмотреть сообщение
Код:
while (x<=xk)
	{
		el= (pow(x-1,2*n+1)) /  (pow  ((2*n+1)*(x+1),2*n+1)) ;
		
		F=+2*el;
	}
while -это цикл и он выполняется до тех пор пока условие(x<=xk) не станет ложным. цикл ограничен {}.


значит должно быть так:

while (x<=xk)
{
el= (pow(x-1,2*n+1)) / (pow ((2*n+1)*(x+1),2*n+1)) ;

F=+2*el;
n++
x+=dx
}

так что ли?
LuBuMaster вне форума Ответить с цитированием
Старый 17.11.2009, 21:28   #8
Sweta
Форумчанин
 
Регистрация: 22.11.2007
Сообщений: 664
По умолчанию

Да так, только для не Вашей формулы. В вашей формуле
el= (pow(x-1,2*n+1)) /((2*n+1)*(pow ((x+1),2*n+1)) ;
F+=2*el;
Только объявите правильно все переменные и если у Вас Вижуал
вместо (х-1) и (х+1) д.б (х-1.0) и (х+1.0) иначе будет ругаться.
Неприятности приходят и уходят, а жизнь продолжается!
Sweta вне форума Ответить с цитированием
Старый 17.11.2009, 22:04   #9
LuBuMaster
Пользователь
 
Регистрация: 30.10.2009
Сообщений: 56
По умолчанию

? не понял немного, что мне надо будет изменить?
тоесть то что я написал в предыдущем ответе то и надо вписать?
LuBuMaster вне форума Ответить с цитированием
Старый 17.11.2009, 22:20   #10
Sweta
Форумчанин
 
Регистрация: 22.11.2007
Сообщений: 664
По умолчанию

Да. Так вы посчитаете сумму.У Вас точность, шаг и т.п заданы?
Код:
while (x<=xk)
{
el= (pow(x-1.0,2*n+1)) / ( (2*n+1)*pow((x+1.0),2*n+1)) ;

F=+2*el;
n++
x+=dx
}
Если не тяжело, полное задание.
Неприятности приходят и уходят, а жизнь продолжается!

Последний раз редактировалось Sweta; 17.11.2009 в 22:25.
Sweta вне форума Ответить с цитированием
Ответ


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

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Ряд Тейлора в паскале Ku6ep Помощь студентам 2 10.04.2010 20:16
Ряд тейлора ln(x) R@Ziel Помощь студентам 9 13.11.2009 17:48
Графическая и на ряд Тейлора Proxy Помощь студентам 2 05.05.2009 22:11
Ряд Тейлора siriusz Общие вопросы C/C++ 6 06.02.2009 20:26