close

Вход

Забыли?

вход по аккаунту

?

Приложения (3)

код для вставкиСкачать
ПРИЛОЖЕНИЕ А
Код программы задания 1
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, ExtCtrls, TeeProcs, TeEngine, Chart, Series,math,
Menus, jpeg, ComCtrls, Buttons, XPMan;
type
TForm1 = class(TForm)
RadioGroup1: TRadioGroup;
Edit1: TEdit;
Edit4: TEdit;
Edit5: TEdit;
Edit2: TEdit;
Edit3: TEdit;
Edit6: TEdit;
Edit7: TEdit;
Label8: TLabel;
Memo1: TMemo;
Chart1: TChart;
Series1: TLineSeries;
Button2: TButton;
Series2: TLineSeries;
Series3: TLineSeries;
Label1: TLabel;
Label2: TLabel;
Label3: TLabel;
Button1: TButton;
Label4: TLabel;
function f(a,x:real):real;
function p(a,x:real):real;
procedure Button2Click(Sender: TObject);
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
a,x,x2,x3,x4:real; t,t1,t2:real;
implementation
{$R *.dfm}
procedure TForm1.Button1Click(Sender: TObject);
begin
application.Terminate;
end;
procedure TForm1.Button2Click(Sender: TObject);
var M,c,x,x0,e:extended;
i:integer;
B:array [1..2,1..3]of extended;
begin
B[1,1]:=StrToFloat(Edit1.Text);
B[1,2]:=StrToFloat(Edit2.Text);
B[1,3]:=StrToFloat(Edit3.Text);
B[2,1]:=StrToFloat(Edit4.Text);
B[2,2]:=StrToFloat(Edit5.Text);
B[2,3]:=StrToFloat(Edit6.Text);
a:=StrToFloat(Edit7.Text);
e:=0.0001;
X2:=5;
t:=0.1;
while (t<=X2) do
begin
Series1.AddXY(t,f(a,t));
t:=t+0.01;
end;
case RadioGroup1.ItemIndex of
2: begin
Memo1.Lines.Add(' Метод деления пополам');
for i:=1 to 3 do begin //номер корня
repeat
x0:=(B[1,i]+B[2,i])/2; //находим начальное приближение
if f(a,B[1,i])*f(a,x0)<0 then B[2,i]:=x0; //находим на отрезке начальное приближение
if f(a,B[1,i])*f(a,x0)>0 then B[1,i]:=x0; // находим на отрезке начальное приближение
until (B[2,i]-B[1,i])<=2*e; //находим корень с точностью
Memo1.Lines.Add('Корень'+IntToStr(i)+' = '+FloatToStr(x0));
end;
end;
1: begin
Memo1.Lines.Add(' Метод касательных');
for i:=1 to 3 do begin //номер корня
x:=B[1,i]; //начальное приближение
M:=1; //минимальное значение производ-ной
repeat
x0:=x;
x:=x0-(f(a,x0))/(p(a,x0)); //находим x1
until (abs (f(a,x))/M)<=e;
Memo1.Lines.Add('Корень'+IntToStr(i)+' = '+FloatToStr(x));
end;
end;
0: begin
Memo1.Lines.Add(' Метод хорд');
for i:=1 to 3 do begin //номер корня
c:=B[1,i]; //начальное приближение
x:=B[2,i]; //начальное приближение
M:=1; //минимальное значение производной
repeat
x0:=x;
x:=(c*f(a,x0)-x0*f(a,c))/(f(a,x0)-f(a,c)); //уравнение прямой
until (abs (f(a,x0))/M)<=0.0001;
Memo1.Lines.Add('Корень'+IntToStr(i)+' = '+FloatToStr(x));
end;
end;
end;
end;
function TForm1.f(a,x:real):real;
begin
f:=ln(abs(ln(abs(a*x))))+a*exp((3/4)*ln(x))+a*ln(x)*ln(x)*ln(x)-sqrt(a*x)+a;
end;
function TForm1.p(a,x:real):real;
begin
p:=(3*a)/(4*power(x,(1/4)))-a/(2*sqrt(a*x))+(a*3*ln(x)*ln(x))/x+(a*sign(a*x)*sign(ln(abs(a*x))))/(abs(a*x)*abs(ln(abs(a*x))));
end;
end.
ПРИЛОЖЕНИЕ Б
Код программы задания 2
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, ExtCtrls, TeeProcs, TeEngine, Chart, Series,math,
Menus, jpeg, ComCtrls, Buttons, XPMan;
type
TForm1 = class(TForm)
XPManifest1: TXPManifest;
RadioGroup1: TRadioGroup;
Label4: TLabel;
Edit1: TEdit;
Edit9: TEdit;
Edit10: TEdit;
Edit2: TEdit;
Edit3: TEdit;
Edit11: TEdit;
Memo1: TMemo;
Button2: TButton;
Label1: TLabel;
Label2: TLabel;
Edit4: TEdit;
Edit12: TEdit;
Edit13: TEdit;
Edit5: TEdit;
Edit6: TEdit;
Edit14: TEdit;
Edit15: TEdit;
Edit7: TEdit;
Edit8: TEdit;
Edit16: TEdit;
Chart1: TChart;
Series1: TLineSeries;
Edit17: TEdit;
Edit18: TEdit;
Label3: TLabel;
Label5: TLabel;
Label6: TLabel;
Button1: TButton;
procedure Button2Click(Sender: TObject);
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
n, m: integer;
implementation
{$R *.dfm}
procedure TForm1.Button1Click(Sender: TObject);
begin
application.Terminate;
end;
procedure TForm1.Button2Click(Sender: TObject);
var
T:array [0..16]of extended;
C,A,X,Y:array [0..9]of extended;
B:array [0..9,0..10]of extended;
i,k,j,m,n: Integer;
z: Real;
Bik, Delta, S, h, X2, pol: extended;
begin
Series1.Clear;
X[1]:=StrToFloat(Edit1.Text);
X[2]:=StrToFloat(Edit2.Text);
X[3]:=StrToFloat(Edit3.Text);
X[4]:=StrToFloat(Edit4.Text);
X[5]:=StrToFloat(Edit5.Text);
X[6]:=StrToFloat(Edit6.Text);
X[7]:=StrToFloat(Edit7.Text);
X[8]:=StrToFloat(Edit8.Text);
X[9]:=StrToFloat(Edit17.Text);
Y[1]:=StrToFloat(Edit9.Text);
Y[2]:=StrToFloat(Edit10.Text);
Y[3]:=StrToFloat(Edit11.Text);
Y[4]:=StrToFloat(Edit12.Text);
Y[5]:=StrToFloat(Edit13.Text);
Y[6]:=StrToFloat(Edit14.Text);
Y[7]:=StrToFloat(Edit15.Text);
Y[8]:=StrToFloat(Edit16.Text);
Y[9]:=StrToFloat(Edit18.Text);
m:=9;
case RadioGroup1.ItemIndex of
2: n:=4;
1: n:=3;
0: n:=2;
end;
for i := 1 to m do begin
for j := 1 to 2*n do T[j]:=T[j]+power(X[i],j);
for j := 0 to n do C[j]:=C[j]+Y[i]*power(X[i],j);
end;
T[0]:=m;
for i := 0 to n do
for j := 0 to n do
B[i,j]:=T[i+j];
for i := 0 to n do B[i,n+1]:=C[i];
for k := 0 to n-1 do
for i := k to n do begin
Bik:=B[i,k];
for j := k to n+1 do
if i=k then B[i,j]:=B[i,j]/Bik
else B[i,j]:=B[i,j]/Bik-B[k,j];
end;
Memo1.Lines.Add('Коэффициенты полинома степени '+IntToStr(n));
for i := n downto 0 do
A[i]:=(B[i,n+1]-B[i,1]*A[1]-B[i,2]*A[2]-B[i,3]*A[3]-B[i,4]*A[4]-B[i,5]*A[5]-B[i,6]*A[6]-B[i,7]*A[7]-B[i,8]*A[8]-B[i,9]*A[9])/B[i,i];
for i := 0 to n do begin
Memo1.Lines.Add('A['+IntToStr(i)+'] = '+FloatToStr(A[i]));
end;
for i := 1 to m do begin
S:=0;
for j := 0 to n do S:=S+A[j]*power(X[i],j);
Delta:=Delta+sqr(S-Y[i]);
end;
Delta:=sqrt(Delta/m);
Memo1.Lines.Add('Дельта = '+FloatToStr(Delta));
h:=0.1;
X2:=100;
z:=10;
while (z<=X2) do
begin
pol:=A[0];
for i := 1 to n do
pol:=pol+A[i]*power(z,i);
Series1.AddXY(z,pol);
z:=z+h;
end;
end;
end.
Документ
Категория
Рефераты
Просмотров
35
Размер файла
20 Кб
Теги
приложение
1/--страниц
Пожаловаться на содержимое документа