[Хелп] Лаба 3 (11 вариант) по ОАиП Делфи
- Войдите на сайт для отправки комментариев
№ Xn Xk S e Y
Вывести на экран таблицу значений функции y(x) и ее разложения в ряд s(x) для x изменяющихся от xn до xk с заданным количеством шагов M и точностью e. Близость значений S(x) и Y(x) во всем диапазоне значений x указывает на правильность вычисления S(x) и Y(x).
Не могу понять как вычислить S.
примерный код:
repeat
a:=1; S:=1; n:=0;
while (abs(a) > e) do begin
n:=n+1;
a:=-a*x/n; Тут должна быть формула S.
s:=s+a;
end;
y:=exp(-x); Тут Y.
Memo1.Lines.Add('при x='+FloatToStrF(x,ffFixed,6,2)+' сумма ='
+ FloatToStrF(s,ffFixed,8,4)+’ y ='
+ FloatToStrF(y,ffFixed,8,4)+' N ='+IntToStr(n));
x:=x+h;
Формула S вычисляется в 2 этапа:
a:=-a*x/n; // вычисляется слагаемое используя рекуррентную зависимость: Аn вычисляется умножением A(n-1)на рекуррентную составляющую (в данном случае -x/n)
s:=s+a; //вычисляется сама сумма S
--------
Для вычисления рекуррентной составляющей (R) можно использовать следующее выражение
A(n)=A(n-1)*R => R=A(n)/A(n-1)
Для Вашего случая:
А(n)=(-1)^n*(2*n^2+1)*(x^(2n))/(2n)!
А(n-1)=(-1)^(n-1)*(2*(n-1)^2+1)*(x^(2(n-1)))/(2(n-1))!=(-1)^(n-1)*(2*(n-1)^2+1)*(x^(2n-2))/(2n-2)!
Используя простое правило деления степенных выражений и свойства факториала n!=(n-1)!*n, делим A(n)на A(n-1):
R=A(n)/A(n-1)=(-1)*(2*n^2+1)/(2*(n-1)^2+1)*X^2/(2n*(2n-1))
Вот это и есть рекуррентная составляющая.
Строго говоря, выражение (2*n^2+1) не является рекуррентным, и красивее его не учитывать в A, а использовать в вычислении S. Как это сделать подумайте сами :)
P.S.:В математических выражениях не использовались строгие правила синтаксиса, написано только для понимания.
Большое спасибо составил алгоритм, работает.