
13.10.2009, 00:45
|
Прохожий
|
|
Регистрация: 13.09.2009
Сообщения: 19
Репутация: 10
|
|
Помогите найти ошибку
Вообщем не могу понять в чем ошибка... Условие задачи такое : Вывести на экран таблицу значений функции y(x) и ее разложения в ряд s(x) для x изменяющихся от xn до xk с заданным количеством шагов M ( ) и точностью e. Близость значений S(x) и Y(x) во всем диапазоне значений x указывает на правильность вычисления S(x) и Y(x). Ниже прикреплю код программы и текстовый файл с функцией.
Код :
PHP код:
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;
type
TForm1 = class(TForm)
Label1: TLabel;
Edit1: TEdit;
Label2: TLabel;
Edit2: TEdit;
Label3: TLabel;
Edit3: TEdit;
Label4: TLabel;
Edit4: TEdit;
Label5: TLabel;
Memo1: TMemo;
Button1: TButton;
procedure FormCreate(Sender: TObject);
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
procedure TForm1.FormCreate(Sender: TObject);
begin
Edit1.text:='0,2';
Edit2.text:='1';
Edit3.text:='10';
Edit4.text:='0,001';
Memo1.Clear;
end;
procedure TForm1.Button1Click(Sender: TObject);
var xn,xk,x,h,e,a,s,y,M,z : extended;
n:integer;
begin
Memo1.Clear;
Memo1.Lines.Add('Результаты ');
xn:=StrToFloat(Edit1.Text);
Memo1.Lines.Add('xn='+FloatToStrF(xn,ffFixed,6,2));
xk:=StrToFloat(Edit2.Text);
Memo1.Lines.Add('xk='+FloatToStrF(xk,ffFixed,6,2));
M:=StrToFloat(Edit3.Text);
Memo1.Lines.Add('M='+FloatToStrF(M,ffFixed,8,3));
e:=StrToFloat(Edit4.Text);
Memo1.Lines.Add('e='+FloatToStrF(e,ffFixed,8,5));
x:=xn;
h:=(xk-xn)/M;
repeat
a:=1;
S:=1;
n:=0;
z:=2*sqr(n)+1;
while abs(a*z)>e do begin
n:=n+1;
a:=-a*sqr(x)/((2*n)*(2*n-1));
s:=s+a*z;
end;
y:=(1-(sqr(x)/2))*cos(x)-(x/2)*sin(x);
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
until x>(xk+h/2)
end;
end.
Ошибка вероятно в строке :
PHP код:
a:=-a*sqr(x)/((2*n)*(2*n-1));
Помогите вывести верную формулу для определения члена этой суммы.
|