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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 13.11.2010, 22:22   #1
Дезик
 
Регистрация: 20.10.2010
Сообщений: 5
По умолчанию Разложить ф-цию рядом Тейлора (С++)

В поиске не нашёл, решил написать свою тему.
Задание звучит так:
Вычислить и вывести на экран в виде таблицы значение ф-ции, за данной с помощью ряда Тейлора, на интервале от -1 до 1 с шагом Dx с точностью t;
Программирование изучаю месяц.
Я просил преподавателя объяснить, но безуспешно, я 3 раза пересдавал, вот что в итоге получилось:
Код:
#include <math.h>
#include <conio.h>
#include <stdio.h>
#include <iostream>
int main(void)
{
double x,f1,f,t,dx;
int n=0;
dx=0.1;
f=0.;
t=0.1;
f1=0.;
x=0.;
for (x=-1.;x<=1.;x+=dx)
{
	/*f=pow(-1.,n)*pow(x,n+1.)/(n+1.);
		while (fabs(f)>=t)
	for (x=x;fabs(f)>=t;n++)*/
n=0;

	do
	{
		
		n++;
			f=pow(-1.,n)*pow(x,n+1.)/(n+1.);
			f1=f1+f;
		/*std::cout<<"\n F="<<f<<"	| "<<" |	"<<"	F1="<<f1<<" | "<<"	X="<<x<<"\n";*/
		if (fabs(f)<t)
			std::cout<<"\n n="<<n<<"f="<<f;
	}
	while (fabs(f)>=t);
}
getchar();
return 0;
}
Я так понял, что дожно быть 2 цикла, первый должен менять значение аргумента (цикл фор), а второй вычислять конкретно значение ф-ции.
Просьба проверить и указать на ошибки.
И раз уж такое дело, подсказите, чем отличается fabs(x) от abs(x) и можно ли задать число количество цифр, выводящихся после запятой?
Заранее огромное спасибо!

Последний раз редактировалось Stilet; 13.11.2010 в 23:10.
Дезик вне форума Ответить с цитированием
Старый 13.11.2010, 23:12   #2
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Ерунда а не код...
А что за функция то?
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 14.11.2010, 12:01   #3
optimator
Пользователь
 
Регистрация: 12.11.2010
Сообщений: 92
По умолчанию

Цитата:
Сообщение от Stilet
А что за функция то?
Похоже на ln(1+x)
optimator вне форума Ответить с цитированием
Старый 14.11.2010, 17:13   #4
Дезик
 
Регистрация: 20.10.2010
Сообщений: 5
По умолчанию

Да, это именно она и есть...
Извините за полный хаос, писал как самообучился=)
Дезик вне форума Ответить с цитированием
Старый 14.11.2010, 17:25   #5
optimator
Пользователь
 
Регистрация: 12.11.2010
Сообщений: 92
По умолчанию

А левый концец интервала включен или нет? А то ряд Тейлора для ln(1+x) в точке x=-1 не имеет сходимости.
optimator вне форума Ответить с цитированием
Старый 14.11.2010, 17:52   #6
Дезик
 
Регистрация: 20.10.2010
Сообщений: 5
По умолчанию

Нет... Точно, надо изменить!
Дезик вне форума Ответить с цитированием
Старый 14.11.2010, 17:56   #7
optimator
Пользователь
 
Регистрация: 12.11.2010
Сообщений: 92
По умолчанию

Тогда я бы написал две функции: одна считает значение функции в точке, а другая печатает таблицу
Код:
float TEYLOR(float x, float t){
	float sum=0;
	int i=1;
	float q=x;
	
	while(fabs(q)>=t){
		sum+=q/i;
		q*=-x;
		i++;
	}
	return sum;
}	

void PRINT_FUN(float t, float dx){
	float left=-1+t;  //======чтобы была сходимость====
	cout<<"      x     "<<"|      fun(x)     "<<endl;
	while(left<=1.0){

		cout<<"    "<<left<<"  |    " <<TEYLOR(left,t)<<endl;
		left+=dx;
	}
}
А в main() просто бы вызвал PRINT_FUN() с нужными параметрами
optimator вне форума Ответить с цитированием
Старый 15.11.2010, 09:19   #8
Дезик
 
Регистрация: 20.10.2010
Сообщений: 5
По умолчанию

Ой... Такой код у меня точно не примут... Мы ещё даже свои ф-ции не начали проходить, а тут уже 2 своих. Всё равно спасибо, надо работать=)
Дезик вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Вопрос по программе, Нужно протабулировать ф-цию Xeon1024 Помощь студентам 3 26.09.2010 19:04
Вопрос по программе, Нужно протабулировать ф-цию на с++ Xeon1024 Помощь студентам 1 25.09.2010 22:34
С++ Работа со строками, используя сивол.инф-цию Demigoddess Общие вопросы C/C++ 6 03.05.2009 19:02
Передача массива как ссылку в ф-цию IgorKr Общие вопросы C/C++ 1 30.03.2008 14:57