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

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

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

Восстановить пароль

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

Ответ
 
Опции темы Поиск в этой теме
Старый 13.06.2010, 14:40   #1
kuzlar
Новичок
Джуниор
 
Регистрация: 13.06.2010
Сообщений: 2
Восклицание Вычисляем значение exp ( -x * x) ряд Тейлора

Дана функция exp( - x * x) имеет вот такой ряд
Замечаем что n+1 член ряда вычисляется после n-ого, поэтому программа получиться более эффективной, если находить член ряда не "с нуля", а умножением предыдущего члена на некоторую величину. Найдем эту величину ( Для этого запишем формулу для n+1, и разделим её на формулу для нахождения n) и получим -x / n + 1.
Теперь пишем код
Код:
program ex;
const Maxlter = 500;         {max колво интераций}
var x, eps : double;          {аргумент и точность}
   c,y  : double;               {член ряда и его сумма}
   n    : integer;               {номер члена ряда}
   done  : boolean;   
 
begin
writeln('BBeduTe argymeHT u To4HocTb:');
readln(x, eps);
done := true;
c := 1 - (x * x);   {первый член ряда}
y := c;                 {задаем начальное значение суммы}
n := 1;
while abs(c) > eps do begin
c := -x /(n + 1);   {очередной член}
y := y + c;              {плюсуем к сумме}
inc(n);
if n <= Maxlter then continue;
writeln('P9D PaccxoduTbc9!');
done := false; break
end;
if done then
writeln('ArgumeHT: ', x:10:6, #13#10,
'3Ha4EHue func:    ', y:10:6, #13#10,
'eps ', eps:8:6, ' 3A ',   n, 'uHTepacuu',
'EXP(-x*x) = ', exp( - x * x):10:6;                                {*прямое вычисление}
);
readln;
end.
Почему прямое вычисление не совпадает с вычислением через ряд Тейлора? ПОМОГИТЕ пожалуйста!
kuzlar вне форума Ответить с цитированием
Старый 13.06.2010, 18:49   #2
Serebro
FORTRAN programmer
Форумчанин
 
Регистрация: 08.12.2009
Сообщений: 153
По умолчанию

Цитата:
Сообщение от kuzlar Посмотреть сообщение
Дана функция exp( - x * x) имеет вот такой ряд
Замечаем что n+1 член ряда вычисляется после n-ого, поэтому программа получиться более эффективной, если находить член ряда не "с нуля", а умножением предыдущего члена на некоторую величину. Найдем эту величину ( Для этого запишем формулу для n+1, и разделим её на формулу для нахождения n) и получим -x / n + 1.
Теперь пишем код
Код:
program ex;
const Maxlter = 500;         {max колво интераций}
var x, eps : double;          {аргумент и точность}
   c,y  : double;               {член ряда и его сумма}
   n    : integer;               {номер члена ряда}
   done  : boolean;   
 
begin
writeln('BBeduTe argymeHT u To4HocTb:');
readln(x, eps);
done := true;
c := 1 - (x * x);   {первый член ряда}
y := c;                 {задаем начальное значение суммы}
n := 1;
while abs(c) > eps do begin
c := -x /(n + 1);   {очередной член}
y := y + c;              {плюсуем к сумме}
inc(n);
if n <= Maxlter then continue;
writeln('P9D PaccxoduTbc9!');
done := false; break
end;
if done then
writeln('ArgumeHT: ', x:10:6, #13#10,
'3Ha4EHue func:    ', y:10:6, #13#10,
'eps ', eps:8:6, ' 3A ',   n, 'uHTepacuu',
'EXP(-x*x) = ', exp( - x * x):10:6;                                {*прямое вычисление}
);
readln;
end.
Почему прямое вычисление не совпадает с вычислением через ряд Тейлора? ПОМОГИТЕ пожалуйста!
Наверное здесь
Код:
c := -x /(n + 1);   {очередной член}
ошибка.
Должно быть
c:=c*(-x/(n+1))

Последний раз редактировалось Serebro; 13.06.2010 в 18:54.
Serebro вне форума Ответить с цитированием
Старый 16.06.2010, 19:44   #3
kuzlar
Новичок
Джуниор
 
Регистрация: 13.06.2010
Сообщений: 2
По умолчанию

перерешал, очередной член равен - х / n, но все равно не правильно! =( помогите решить!
kuzlar вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Вычислить значение функции y, развив функцию ln(x) в ряд Тейлора Lifastyle Общие вопросы C/C++ 2 15.03.2010 11:26
Ряд тейлора ln(x) R@Ziel Помощь студентам 9 13.11.2009 17:48
Ряд Тейлора siriusz Общие вопросы C/C++ 6 06.02.2009 20:26