Реферат

Реферат Курсовой проект по Delphi 7

Работа добавлена на сайт bukvasha.net: 2015-10-28

Поможем написать учебную работу

Если у вас возникли сложности с курсовой, контрольной, дипломной, рефератом, отчетом по практике, научно-исследовательской и любой другой работой - мы готовы помочь.

Предоплата всего

от 25%

Подписываем

договор

Выберите тип работы:

Скидка 25% при заказе до 21.9.2024



1.    

2.     Даны натуральные m,nи матрица Am×n. Найти матрицу Сm×n, значение каждого элемента которой (cij, где i=1,2,…,m,j=1,2,…,n) определяется по формуле Су = sj ■ a у, где sj - среднее арифметическое значение всех элементов j-ого столбца матрицы A.
procedure TForm1.Button1Click(Sender: TObject);

begin

m := SpinEdit1.value; считываем значение m

n := SpinEdit2.value; считываем значение n

z:=false;

for i:=1 to m do

  for j:=1 to n do

    begin

      val(stringgrid1.Cells[j-1, i-1], a[i,j], code); //
считываем

значения

элементов

иассива
A


      if code > 0 then z:=true;

    end;

if z then showmessage('
Введено

некорректное

значение
')


  else

    begin

for j:=1 to n do

  begin

    s[j]:=0; //
обнуление

суммы



    for i:=1 to m do

     
s[j]:=s[j]+a[i,j]; //накопление суммы по столбцам


    s[j]:=s[j]/m; //рассчет среднего арифметического  по столбцам

 
end;


for i:=1 to m do

  for j:=1 to n do

    c[i,j]:=s[j]+a[i,j]; //
рассчет

элементов

массива
C


for i:=1 to m do

  for j:=1 to n do

    StringGrid2.Cells[j-1,i-1] := floattostr(c[i,j]);  //
Вывод

элементов

массива

С



   
end;

3. Численные методы уточнения корней нелинейного уравнения.

Задание.

Уточнить корни уравнения   хг -В-х2 +С-Х — £) = О на отрезке [-5.00, 5.00], при h=0.5 и € = 0.01
-2.703   -8.459  9.807

procedure iterat;                        //
метод

простой

итерации



var x,dh,B:real;

i:integer;

begin


B
:=-0.01;


i
:=1;


x:=korni[3];                             //начальное приближение

repeat                                      //
цикл

рассчёта



form1.StringGrid4.RowCount:=i+1;

dh:=func(x)*B;

form1.StringGrid4.Cells[0,i]:=inttostr(i);                          //
Вывод

итераций



form1.StringGrid4.Cells[1,i]:=floattostrF(x,ffFixed,5,7);            // ...

form1.StringGrid4.Cells[2,i]:=floattostrF(func(x),ffFixed,10,7);       //...

form1.StringGrid4.Cells[3,i]:=floattostrF(dh,ffFixed,10,7);              //...

form1.StringGrid4.Cells[4,i]:=floattostrF(x+dh,ffFixed,10,7);              //...

inc(i);

x:=x+dh;

until abs(dh/B)<eps;

end;


procedure polovinnoedel;                  //
метод

половинного

деления



var a,b,x:real;

i:integer;

begin

i:=1;

b:=korni[1];                                //задание правой границы интервала поиска

a:=b-h;                                      //задание левой границы интервала поиска

x:=(b+a)/2;                                  //середина интервала

form1.StringGrid2.Cells[0,i]:=inttostr(i);                    //Вывод первой итерации

form1.StringGrid2.Cells[1,i]:=floattostr(a);                    //...

form1.StringGrid2.Cells[2,i]:=floattostr(x);                      //...

form1.StringGrid2.Cells[3,i]:=floattostr(b);                        //...

form1.StringGrid2.Cells[4,i]:=floattostr(func(a));                    //...

form1.StringGrid2.Cells[5,i]:=floattostr(func(x));                      //...

form1.StringGrid2.Cells[6,i]:=floattostr(func(b));                        //...

form1.StringGrid2.Cells[7,i]:=floattostr(abs(b-a));                         //...

while (abs(b-a)/2)>eps do begin                                   //
Цикл

рассчёта

итерации



inc(i);

form1.StringGrid2.RowCount:=i+1;                                  //изменение числа строк в таблице вывода

if (func(a)*func(x))<0 then                                    //условия сокращения интервала

b:=x

else

a:=x;

x:=(b+a)/2;

form1.StringGrid2.Cells[0,i]:=inttostr(i);                        //
Вывод

итераций



form1.StringGrid2.Cells[1,i]:=floattostr(a);                        //...

form1.StringGrid2.Cells[2,i]:=floattostr(x);                          //...

form1.StringGrid2.Cells[3,i]:=floattostr(b);                            //...

form1.StringGrid2.Cells[4,i]:=floattostr(func(a));                        //...

form1.StringGrid2.Cells[5,i]:=floattostr(func(x));                          //...

form1.StringGrid2.Cells[6,i]:=floattostr(func(b));                            //...

form1.StringGrid2.Cells[7,i]:=floattostr(abs(b-a));                             //...

end;

end;


procedure kas;                   //
метод

касательной



var x,dh:real;

i:integer;

begin

i:=1;

x:=korni[2];                    //задание начального приближения

repeat                            //
цикл

рассчёта

итераций



form1.StringGrid3.RowCount:=i+1;

dh:=func(x)/funcproizv(x);

form1.StringGrid3.Cells[0,i]:=inttostr(i);                         //
Вывод

итераций



form1.StringGrid3.Cells[1,i]:=floattostrF(x,ffFixed,5,7);            //...

form1.StringGrid3.Cells[2,i]:=floattostrF(func(x),ffFixed,10,7);       //...

form1.StringGrid3.Cells[3,i]:=floattostrF(funcproizv(x),ffFixed,10,7);   //...

form1.StringGrid3.Cells[4,i]:=floattostrF(dh,ffFixed,10,7);                //...

form1.StringGrid3.Cells[5,i]:=floattostrF(x-dh,ffFixed,10,7);                //...

inc(i);

x:=x-dh;

until abs(dh)<eps;

end;


procedure TForm1.FormCreate(Sender: TObject);

begin

B:=-2.703;                        //задание коэффициентов уравнения

C:=-8.459;                        //...

D:=9.807;                         //...

StringGrid1.Cells[0,0]:='i';                          //вывод статических надписей таблиц

StringGrid1.Cells[0,1]:='x';                          //...

StringGrid1.Cells[0,2]:='f(x)';                       //

StringGrid2.Cells[0,0]:='i';                          //

StringGrid2.Cells[1,0]:='a';                          //

StringGrid2.Cells[2,0]:='x=(b+a)/2';                  //

StringGrid2.Cells[3,0]:='b';                          //

StringGrid2.Cells[4,0]:='f(a)';                       //

StringGrid2.Cells[5,0]:='f(x)';                       //

StringGrid2.Cells[6,0]:='f(b)';                       //

StringGrid2.Cells[7,0]:='|b-a|';                      //

StringGrid3.Cells[0,0]:='i';                          //

StringGrid3.Cells[1,0]:='x(i-1)';                     //

StringGrid3.Cells[2,0]:='f(x(i-1))';                  //

StringGrid3.Cells[3,0]:='f''(x(i-1))';                //

StringGrid3.Cells[4,0]:='h';                          //

StringGrid3.Cells[5,0]:='x(i)=x(i-1)-h';              //

StringGrid4.Cells[0,0]:='i';                          //

StringGrid4.Cells[1,0]:='x(i-1)';                     //

StringGrid4.Cells[2,0]:='f(x(i-1))';                  //

StringGrid4.Cells[3,0]:='h=B*f(x(i-1))';              //

StringGrid4.Cells[4,0]:='x(i)=x(i-1)+h';              //

start:=-5;                                            //задание левой границы поиска

finish:=5;                                            //задание правой границы поиска

h:=0.5;                                               //шаг

eps:=0.01;                                            //точность

Label2.Caption:=Label2.Caption+FloatToStr(B);         //вывод коэффициентов уравнения

Label3.Caption:=Label3.Caption+FloatToStr(C);         //...

Label4.Caption:=Label4.Caption+FloatToStr(D);         //...

end;


procedure TForm1.Button1Click(Sender: TObject);             //
запуск

необходимых

для

рассчёта

процедур



begin

poisk;

polovinnoedel;

kas;

iterat;

end;


procedure poisk;                                        //процедура отделения корней

var i,k:integer;

x:real;

begin

i:=0;

k:=1;                                                  //задание начального значения х

x:=start;

form1.StringGrid1.Cells[k,0]:=inttostr(k);             //
вывод

первого

итервала



form1.StringGrid1.Cells[k,1]:=floattostr(x);           //...

form1.StringGrid1.Cells[k,2]:=floattostr(func(x));     //...

while x<finish do begin                                //
цикл

отделения

корней
...


inc(k);

form1.StringGrid1.ColCount:=k+1;

form1.StringGrid1.Cells[k,0]:=inttostr(k);

form1.StringGrid1.Cells[k,1]:=floattostr(x+h);

form1.StringGrid1.Cells[k,2]:=floattostr(func(x+h));

if (func(x)/(abs(func(x))))<>(func(x+h)/(abs(func(x+h)))) then begin  //
условие

определения

интервала
,
содержащего

корень



inc(i);

korni[i]:=x+h;                                           //формирование массива корней

end;

x:=x+h;                                                  //смещение к следующему интервалу

end;

end;

end.

4. Матричные операции.


Вычислите значение матричного выражения R. Сохоаните пгюмежуточные вычисления.

Составите программу, для вычисления R

Проведите расчет по программе и сравните результаты. Операция sled([MarpHna]) - сумма

диагональных элементов матрицы.



//задание элементов матрицы А

A[1,1]:=5;

A[1,2]:=6;

A[1,3]:=7;

A[2,1]:=9;

A[2,2]:=4;

A[2,3]:=7;

//Вывод элементов матрицы А

for

i
:=1
to
2
do



 
for j:=1 to 3 do


    StringGrid1.Cells[j-1,i-1] := inttostr(A[i,j]);

//задание элементов матрицы В

B[1,1]:=3;

B[1,2]:=3;

B[2,1]:=1;

B[2,2]:=6;

B[3,1]:=4;

B[3,2]:=1;

//Вывод элементов матрицы В

for

i
:=1
to
3
do



 
for j:=1 to 2 do


    StringGrid2.Cells[j-1,i-1] := inttostr(B[i,j]);

//задание элементов вектора с

c[1]:=3;

c[2]:=1;

//
Вывод

элементов

вектора
c


for i:=1 to 2 do

    StringGrid3.Cells[0,i-1] := inttostr(c[i]);

//задание элементов вектора d

d[1]:=8;

d[2]:=8;

d[3]:=6;

//Вывод элементов вектора d

for i:=1 to 3 do

    StringGrid4.Cells[0,i-1] := inttostr(d[i]);

//Рассчет и вывод элементов вектора RV1

for i:=1 to 3 do

    begin

    RV1[i]:=d[i];

    StringGrid8.Cells[i-1,0] := inttostr(RV1[i]);

   
end;


//Рассчет и вывод элементов вектора RV2

for i:=1 to 2 do

    begin

    RV2[i]:=0;

    for k:=1 to 3 do

      RV2[i] := RV2[i] + RV1[k]*B[k,i];

    StringGrid7.Cells[i-1,0] := inttostr(RV2[i]);

   
end;


//Рассчет и вывод элементов вектора RV3

for i:=1 to 2 do

    begin

    RV3[i]:=0;

    for k:=1 to 3 do

      RV3[i] := RV3[i] + A[i,k]*d[k];

    StringGrid9.Cells[0,i-1] := inttostr(RV3[i]);

   
end;


//Рассчет и вывод элементов вектора RV4

for i:=1 to 2 do

    begin

    RV4[i]:=RV3[i];

    StringGrid10.Cells[i-1,0] := inttostr(RV4[i]);

   
end;


//Рассчет и вывод элементов вектора RV5

for i:=1 to 2 do

  begin

  RV5[i]:=RV2[i]-RV4[i];

  StringGrid11.Cells[i-1,0] := inttostr(RV5[i]);

 
end;


//Рассчет и вывод элементов вектора RV6

for i:=1 to 2 do

  begin

  RV6[i]:=c[i];

  StringGrid12.Cells[i-1,0] := inttostr(RV6[i]);

 
end;


//Рассчет и вывод R1 - нормы вектора RV5

R1:=0;

for i:=1 to 2 do

  R1:=R1 + sqr(RV5[i]);

R1:=sqrt(R1);

Label7.Caption := 'R1 = ||RV5|| = ' + floattostr(R1);

//Рассчет и вывод R1 - нормы вектора RV6

R2:=0;

for i:=1 to 2 do

  R2:=R2 + sqr(RV6[i]*c[i]);

R2:=sqrt(R2);

Label8.Caption := 'R2 = cT * c = ' + floattostr(R2);

//Рассчет и вывод R - конечного результата

R:=R1-R2;

Label9.Caption := 'R = R1 - R2 = ' + floattostr(R);

5. Обращение матриц.
-2.500 -0.500  1.500

0.500 -3.500 -2.500

0.500  1.500  2.500
//Первая часть шага : деление всех элеметов каждой строки на диагональный элемент первой матрицы из этой строки

procedure part1;

begin

v:=a[i,i];

  for j:=1 to 3 do

    begin

      b[i,j]:=b[i,j]/v; //
для

первой

матрицы



      a[i,j]:=a[i,j]/v; //
для

второй

матрицы



    end;

end;

//Вторая часть шага : вычитание из всех строк строки содержащей единицу на главной диагонали, домноженной на элемент того же столбца соответствующей строки

procedure part2;

begin

    for k:=1 to 3 do

      begin

        if (k <> i) then

          begin

            v:=a[k,i];

            for j:=1 to 3 do

              begin

                a[k,j]:=a[k,j]-a[i,j]*v;

                b[k,j]:=b[k,j]-b[i,j]*v

              end;

          end;

      end;

end;

procedure TForm1.Button1Click(Sender: TObject);

begin

button2.Enabled:=true;

//Задание исходных значений первой матрицы

a[1,1]:=-2.5;

a[1,2]:=-0.5;

a[1,3]:=1.5;

a[2,1]:=0.5;

a[2,2]:=-3.5;

a[2,3]:=-2.5;


a[3,1]:=0.5;

a[3,2]:=1.5;

a[3,3]:=2.5;

//Задание исходных значений второй матрицы

b[1,1]:=1;

b[1,2]:=0;

b[1,3]:=0;

b[2,1]:=0;

b[2,2]:=1;

b[2,3]:=0;

b[3,1]:=0;

b[3,2]:=0;

b[3,3]:=1;

//Вывод элементов первой матрицы

for k:=1 to 3 do

  for j:=1 to 3 do

    StringGrid1.Cells[j-1,k-1]:=floattostr(a[k,j]);

//Вывод элементов второй матрицы

for k:=1 to 3 do

 
for j:=1 to 3 do


    StringGrid2.Cells[j-1,k-1]:=floattostr(b[k,j]);

end;

procedure TForm1.Button2Click(Sender: TObject);

begin

button2.Enabled:=false;

i:=1;//
Первый

шаг



part1;//
Первая

часть

шага



//Вывод элементов первой матрицы

for k:=1 to 3 do

  for j:=1 to 3 do

    StringGrid3.Cells[j-1,k-1]:=floattostr(a[k,j]);

//Вывод элементов второй матрицы

for k:=1 to 3 do

 
for j:=1 to 3 do


    StringGrid4.Cells[j-1,k-1]:=floattostr(b[k,j]);

part2;//Вторая часть шага

//Вывод элементов первой матрицы

for k:=1 to 3 do

  for j:=1 to 3 do

    StringGrid5.Cells[j-1,k-1]:=floattostr(a[k,j]);

//Вывод элементов второй матрицы

for k:=1 to 3 do

 
for j:=1 to 3 do


    StringGrid6.Cells[j-1,k-1]:=floattostr(b[k,j]);

i:=2;//Второй шаг

part1;//Первая часть шага

//Вывод элементов первой матрицы

for k:=1 to 3 do

 
for j:=1 to 3 do


    StringGrid7.Cells[j-1,k-1]:=floattostr(a[k,j]);

//Вывод элементов второй матрицы

for k:=1 to 3 do

 
for j:=1 to 3 do


    StringGrid8.Cells[j-1,k-1]:=floattostr(b[k,j]);

part2;//Первая часть шага

//Вывод элементов первой матрицы

for k:=1 to 3 do

  for j:=1 to 3 do

    StringGrid9.Cells[j-1,k-1]:=floattostr(a[k,j]);

//Вывод элементов второй матрицы

for k:=1 to 3 do

 
for j:=1 to 3 do


    StringGrid10.Cells[j-1,k-1]:=floattostr(b[k,j]);

i:=3;//Первый шаг

part1;//Первая часть шага

//Вывод элементов первой матрицы

for k:=1 to 3 do

  for j:=1 to 3 do

    StringGrid11.Cells[j-1,k-1]:=floattostr(a[k,j]);

//Вывод элементов второй матрицы

for k:=1 to 3 do

 
for j:=1 to 3 do


    StringGrid12.Cells[j-1,k-1]:=floattostr(b[k,j]);

part2;//Второй шаг

//Вывод элементов первой матрицы

for k:=1 to 3 do

  for j:=1 to 3 do

    StringGrid13.Cells[j-1,k-1]:=floattostr(a[k,j]);

//Вывод элементов второй матрицы

for k:=1 to 3 do

 
for j:=1 to 3 do


    StringGrid14.Cells[j-1,k-1]:=floattostr(b[k,j]);


end;

6.
Погрешность вычислений


unit Unit1;


interface


uses

  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,

  Dialogs, ExtCtrls, StdCtrls;


type

  TForm1 = class(TForm)

    GroupBox1: TGroupBox;

    Label1: TLabel;

    Image5: TImage;

    Image1: TImage;

    Image2: TImage;

    Image3: TImage;

    Image4: TImage;

    GroupBox2: TGroupBox;

    Image6: TImage;

    Image7: TImage;

    Label2: TLabel;

    Image8: TImage;

    Label3: TLabel;

    Image9: TImage;

    Image10: TImage;

    Label4: TLabel;

    Panel1: TPanel;

    Button1: TButton;

    procedure Button1Click(Sender: TObject);

    procedure FormCreate(Sender: TObject);

  private

    { Private declarations }

  public

    { Public declarations }

  end;

function Yfunc(yx1,yx2,yx3:real):real;

function deltafunc(dx1,dx2,dx3,ddx:real):real;

var

  Form1: TForm1;

  y,x1,x2,x3,dx,dy,sigmaY:real;

implementation


{$R *.dfm}

function

Yfunc
(
yx
1,
yx
2,
yx
3:
real
):
real
;   //нахождение значения заданной функции


begin


result
:=(
yx
1*
yx
1)/(
yx
2*
yx
2+
yx
3)+
yx
1/
yx
2;          //заданная функция


end;


function deltafunc(dx1,dx2,dx3,ddx:real):real;       //рассчёт абсолютной погрешности

begin


result
:=(
abs
(2*
dx
1/(
dx
2*
dx
2+
dx
3)+1/
dx
2)+
abs
(-2*
dx
1*
dx
1*
dx
2/((
dx
2*
dx
2+
dx
3)*(
dx
2*
dx
2+
dx
3))-
dx
1/(
dx
2*
dx
2))+
abs
(-
dx
1*
dx
1/((
dx
2*
dx
2+
dx
3)*(
dx
2*
dx
2+
dx
3))))*
ddx
;     //функция абсолютной погрешности через частные производные по переменным


end;

procedure TForm1.Button1Click(Sender: TObject);     //запуск вычислений на исполнение

begin


dy
:=
deltafunc
(
x
1,
x
2,
x
3,
dx
);                           //нахождение абсолютной погрешности


Label
2.
Caption
:=
FloatToStrF
(
dy
,
ffFixed
,10,10);        //вывод абс. погрешности


y
:=
Yfunc
(
x
1,
x
2,
x
3);                                   //нахождение значения функции


Label3.Caption:=FloatToStrF(y,ffFixed,10,10);         //его вывод

sigmaY
:=
dy
/
y
;                                         //нахождение относительной погрешности


Label4.Caption:=FloatToStrF(sigmaY,ffFixed,10,10);    //вывод его

end;


procedure TForm1.FormCreate(Sender: TObject);

begin
                                              //задание значений переменных


x
1:=1.2;                                           //...


x
2:=1.5;                                           //...


x
3:=1.8;                                           //погрешность значений переменных


dx
:=0.05;


end
;



end
.

7. Дифференциальные уравнения


Найти решение задачи Коши для дифференциального уравнения первого порядка на равномерной сетке отрезка (a,b) один раз с числом разбиения отрезка n=5, другой - с числом разбиения отрезка n=10 методом Эйлера и модифицированным методом Эйлера. Результаты представить в виде таблиц, а также отобразить на графике.

8

у' + 2ху-хе'х2

yLo=o

0<х<1

1      2     −x2


function

f
(
fx
,
fy
:
real
):
real
;               //рассчёт функции - производной


procedure rasschot;


var

  Form1: TForm1;

  y0,a,b:real;


implementation


{$R *.dfm}

procedure

rasschot
;                               //процедура расчёта и вывода


var h,x,y,ynext,fxy,fpol,ytheor,xpol,ypol:real;

i,n:integer;

begin

Form1.Series1.Clear;                            //очистка графиков

Form1.Series2.Clear;                            //...

Form1.Series3.Clear;                            //...

Form1.Series4.Clear;                            //...

Form1.Series5.Clear;                            //...


n
:=5;                                            //метод Эйлера с 5 интервалами


h
:=(
b
-
a
)/
n
;                                      //шаг


y
:=
y
0;                                            //начальное значение


for

i
:=0
to

n

do

begin
                             //цикл рассчёта по методу


x:=i*h;

fxy:=f(x,y);

ynext:=y+h*fxy;

ytheor
:=
thy
(
x
);


Form
1.
Series
2.
AddXY
(
x
,
y
);                                     //добавление точки на графике


Form
1.
StringGrid
1.
RowCount
:=
i
+2;                                        //увеличение числа строк в таблице


Form1.StringGrid1.Cells[0,i+1]:=IntToStr(i);                            //вывод результатов

Form1.StringGrid1.Cells[1,i+1]:=FloatToStrF(x,ffFixed,7,7);             //...

Form1.StringGrid1.Cells[2,i+1]:=FloatToStrF(y,ffFixed,7,7);             //...

Form1.StringGrid1.Cells[3,i+1]:=FloatToStrF(fxy,ffFixed,7,7);           //...

Form1.StringGrid1.Cells[4,i+1]:=FloatToStrF(ynext,ffFixed,7,7);         //...

Form1.StringGrid1.Cells[5,i+1]:=FloatToStrF(ytheor,ffFixed,7,7);        //...

y
:=
ynext
;


end
;



n
:=10;                                                               //метод Эйлера с 10 интервалами


h
:=(
b
-
a
)/
n
;                                                           //шаг


y
:=
y
0;                                                                //начальное значение


for i:=0 to n do begin                                                 //цикл рассчёта по методу

x:=i*h;

fxy:=f(x,y);

ynext:=y+h*fxy;

ytheor
:=
thy
(
x
);


Form
1.
Series
3.
AddXY
(
x
,
y
);                                             //добавление точки на графике


Form
1.
StringGrid
3.
RowCount
:=
i
+2;                                      //увеличение числа строк в таблице


Form1.StringGrid3.Cells[0,i+1]:=IntToStr(i);                          //вывод результатов

Form1.StringGrid3.Cells[1,i+1]:=FloatToStrF(x,ffFixed,7,7);           //...

Form1.StringGrid3.Cells[2,i+1]:=FloatToStrF(y,ffFixed,7,7);           //...

Form1.StringGrid3.Cells[3,i+1]:=FloatToStrF(fxy,ffFixed,7,7);         //...

Form1.StringGrid3.Cells[4,i+1]:=FloatToStrF(ynext,ffFixed,7,7);       //...

Form1.StringGrid3.Cells[5,i+1]:=FloatToStrF(ytheor,ffFixed,7,7);      //...

y
:=
ynext
;


end
;


                                                                      //улучшенный метод Эйлера  с 5 интервалами

n:=5;

h:=(b-a)/n;

y:=y0;

for i:=0 to n do begin

x:=i*h;

fxy:=f(x,y);

ypol:=y+h/2*fxy;

xpol:=x+h/2;

fpol:=f(xpol,ypol);

ynext:=y+h*fpol;

ytheor:=thy(x);

Form1.Series4.AddXY(x,y);

Form1.StringGrid2.RowCount:=i+2;

Form1.StringGrid2.Cells[0,i+1]:=FloatToStrF(x,ffFixed,7,7);

Form1.StringGrid2.Cells[1,i+1]:=FloatToStrF(y,ffFixed,7,7);

Form1.StringGrid2.Cells[2,i+1]:=FloatToStrF(fxy,ffFixed,7,7);

Form1.StringGrid2.Cells[3,i+1]:=FloatToStrF(ypol,ffFixed,7,7);

Form1.StringGrid2.Cells[4,i+1]:=FloatToStrF(fpol,ffFixed,7,7);

Form1.StringGrid2.Cells[5,i+1]:=FloatToStrF(ynext,ffFixed,7,7);

Form1.StringGrid2.Cells[6,i+1]:=FloatToStrF(ytheor,ffFixed,7,7);

y
:=
ynext
;


end
;


                                                                        //улучшенный метод Эйлера  с 10 интервалами

n:=10;

h:=(b-a)/n;

y:=y0;

for i:=0 to n do begin

x:=i*h;

fxy:=f(x,y);

ypol:=y+h/2*fxy;

xpol:=x+h/2;

fpol:=f(xpol,ypol);

ynext:=y+h*fpol;

ytheor:=thy(x);

Form1.Series1.AddXY(x,ytheor);

Form1.Series5.AddXY(x,y);

Form1.StringGrid4.RowCount:=i+2;

Form1.StringGrid4.Cells[0,i+1]:=FloatToStrF(x,ffFixed,7,7);

Form1.StringGrid4.Cells[1,i+1]:=FloatToStrF(y,ffFixed,7,7);

Form1.StringGrid4.Cells[2,i+1]:=FloatToStrF(fxy,ffFixed,7,7);

Form1.StringGrid4.Cells[3,i+1]:=FloatToStrF(ypol,ffFixed,7,7);

Form1.StringGrid4.Cells[4,i+1]:=FloatToStrF(fpol,ffFixed,7,7);

Form1.StringGrid4.Cells[5,i+1]:=FloatToStrF(ynext,ffFixed,7,7);

Form1.StringGrid4.Cells[6,i+1]:=FloatToStrF(ytheor,ffFixed,7,7);

y:=ynext;

end;

function thY(tx:real):real;            //
рассчёт

значений

теоретической

функции



begin

result:=tx*tx*exp(-tx*tx)/2;

end;


function f(fx,fy:real):real;             //рассчёт значений производной

begin

result:=fx*exp(fx*fx)-2*fx*fy;

end
;



procedure

TForm
1.
FormCreate
(
Sender
:
TObject
);      //задание начальных значений и вывод статических надписей


begin


y
0:=0;                                            //начальное приближение функции


a
:=0;                                             //границы отрезка решения


b
:=1;                                              //...



StringGrid
1.
Cells
[0,0]:='
i
';                       //вывод статических надписей


StringGrid1.Cells[1,0]:=' x(i)';                    //...

StringGrid1.Cells[2,0]:=' y(i)';                    //...

StringGrid1.Cells[3,0]:=' f(x,i)';                  //...

StringGrid1.Cells[4,0]:=' y(i+1)';                  //...

StringGrid1.Cells[5,0]:=' y(i) теор.';              //...


StringGrid2.Cells[0,0]:=' x(i)';                    //...

StringGrid2.Cells[1,0]:=' y(i)';                    //...

StringGrid2.Cells[2,0]:='f(x,i)';

StringGrid2.Cells[3,0]:=' y(i+1/2)';

StringGrid2.Cells[4,0]:='f(x(i+1/2),y(i+1/2))';

StringGrid2.Cells[5,0]:=' y(i+1)';

StringGrid2.Cells[6,0]:=' y(i) теор.';

StringGrid3.Cells[0,0]:=' i';

StringGrid3.Cells[1,0]:=' x(i)';

StringGrid3.Cells[2,0]:=' y(i)';

StringGrid3.Cells[3,0]:=' f(x,i)';

StringGrid3.Cells[4,0]:=' y(i+1)';

StringGrid3.Cells[5,0]:=' y(i) теор.';


StringGrid4.Cells[0,0]:=' x(i)';

StringGrid4.Cells[1,0]:=' y(i)';

StringGrid4.Cells[2,0]:='f(x,i)';

StringGrid4.Cells[3,0]:=' y(i+1/2)';

StringGrid4.Cells[4,0]:='f(x(i+1/2),y(i+1/2))';

StringGrid4.Cells[5,0]:=' y(i+1)';

StringGrid4.Cells[6,0]:=' y(i) теор.';

end;

procedure TForm1.Button1Click(Sender: TObject);

begin

rasschot;

end;

end.


















































































































































Заключение
.

Выполнив данную курсовую работу, я приобрел навыки в работе с
Delphi
7. Так же научился работать с компонентами, которые были использованы для создания программ.


        
Delphi
7 является гибким и мощным средством для создания приложений с удобным графическим интерфейсом под современные операционные системы
Windows
.

C
писок использованной литературы.




Delphi
7. Пособие для студентов/ А.В. Маткаримов.- Саяногорск, 2006  964с.


1. Контрольная работа Контрольная работа по Экологическому менеджменту
2. Курсовая Исследование движения механической системы с использованием общих теорем и принципов динамики
3. Лекция на тему Сущность и методы изучения экономической теории
4. Реферат на тему Effects Of The Speeches Of Brutus And
5. Реферат Социалоно-экономическая характеристика Уральского экономического района
6. Реферат на тему Drug Essay Research Paper In the United
7. Контрольная работа Сходимость рядов
8. Реферат Сущность сексуальной революции и ее влияние на изменение института семьи
9. Реферат Способы легализации преступных доходов
10. Реферат на тему Baby Boom Vs Three Men And A