Рекуррентная последовательность
Скорее всего неправильно вывел формулу для определения члена этой последовательности с шагом h=xk-xn/M (M=10). Помогите пожалуйста разобраться. Ниже привожу код и условие в docx, и файл проекта.
Помогите пожалуйста найти ошибку. Нужно, чтобы программа выводила таблицу значений функции. Заранее благодарен.
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';
end;
procedure TForm1.Button1Click(Sender: TObject);
var xn,xk,x,h,e,a,s,y,M : extended;
n:integer;
begin
Memo1.Clear;
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(h,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;
while (abs(a)>e) do begin
n:=n+1;
a:=-a*3*sqr(x)/2*n;
s:=s+a;
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.
Последний раз редактировалось protos, 20.09.2009 в 19:38.
|