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

Автор работы: Пользователь скрыл имя, 30 Сентября 2009 в 14:05, Не определен

Описание работы

7 типовых заданий

Файлы: 1 файл

Курсовик Кучер 1 АТП-06.doc

— 168.50 Кб (Скачать файл)

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(yx1,yx2,yx3:real):real;   //нахождение значения заданной функции

begin

result:=(yx1*yx1)/(yx2*yx2+yx3)+yx1/yx2;          //заданная функция

end; 

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

begin

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

end; 
 

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

begin

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

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

y:=Yfunc(x1,x2,x3);                                   //нахождение значения функции

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

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

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

end; 

procedure TForm1.FormCreate(Sender: TObject);

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

x1:=1.2;                                           //...

x2:=1.5;                                           //...

x3:=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;               //рассчёт функции - производной

Информация о работе Курсовой проект по Delphi 7