Реферат

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

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

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

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

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

от 25%

Подписываем

договор

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

Скидка 25% при заказе до 23.11.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. Реферат на тему Stress As Adult Learners Essay Research Paper
4. Реферат на тему Sander
5. Курсовая на тему Предпринимательство в Беларуси состояние и перспективы развития
6. Реферат Використання опорних схем і конспектів
7. Магистерская_работа на тему Разработка и отладка программного обеспечения виртуальной лаборатории Программирование микроконтроллерных
8. Диплом на тему Внешняя политика Франции после президентства де Голя
9. Курсовая Порядок организации и деятельности администрации муниципального образования на примере Выксунско
10. Реферат на тему Julius Ceasar Essay Research Paper Julius CeasarSUMMARYShakespeare