Решение систем нелинейных алгебраических уравнений

Автор: Пользователь скрыл имя, 24 Марта 2011 в 08:19, лабораторная работа

Краткое описание

Цель работы: Решить системы нелинейных алгебраических уравнений.
Задание: графически и численно решить систему нелинейных алгебраических уравнений, на примере поиска точек пересечения двух функций.

Файлы: 1 файл

Отчет по 8 лабе.docx

— 103.91 Кб (Скачать)

    SetColor(Color);

    with Rect do

      for i:=1 to Width do

        Rectangle(Origin.X-i,        Origin.Y-i,

                  Origin.X+Size.X+i, Origin.Y+Size.Y+i);

    SetColor(OldColor);

  end;

end. 
 

Второй модуль:

{*********** Процедуры и функции для работы с графикой *************}

unit Draw2;

interface

uses consts,types,graph,crt,sysutils;

 { Нарисовать оси }

procedure DrawAxis(var Rect:trect;Xo,Yo,Color:word);

 { Рисование граничных значений по углам рамки }

procedure DrawBounds(Xmin,Xmax,Ymin,Ymax:real;var Rect:trect;Color:word);

 { Рисование координатной сетки }

procedure DrawGridLines(NgrX,NgrY:word;var Rect:trect;Color:word);

 { Вывод координат точек пересечения }

procedure WriteCoord(var RootMas:Troot;K:word;var Rect:trect;Color:word);

implementation

 { Нарисовать оси }

procedure DrawAxis(var Rect:trect;Xo,Yo,Color:word);

var oldcolor:word;

begin

 oldColor:=GetColor;

  setcolor(color);

 line(OriginX,Yo,OriginX+Nx,Yo);

 line(Xo,OriginY,Xo,OriginY+Ny);

 SetColor(OldColor);

end;

{ Рисование граничных значений по углам рамки }

procedure DrawBounds(Xmin,Xmax,Ymin,Ymax:real;var Rect:trect;Color:word);

 var a:string;

begin

   outtextxy(rect.origin.x,

   rect.origin.y+rect.size.y+15,floattostr(Xmin));

   outtextxy(rect.origin.x+rect.size.x,

   rect.origin.y+rect.size.y+15,floattostr(Xmax));

   str(Ymin:6:2,a);

   outtextxy(rect.origin.x-50,

   rect.origin.y+rect.size.y,a);

   str(Ymax:6:2,a);

   outtextxy(rect.origin.x-50,rect.origin.y,a);

end;

 { Рисование координатной сетки }

procedure DrawGridLines(NgrX,NgrY:word;var Rect:trect;Color:word);

var oldcolor:word;

    dx,dy,x0,y0,x1,y1:word;

begin

   setcolor(color);

   dx:=round(rect.size.x/ngrx);

   dy:=round(rect.size.y/ngry);

   y1:=rect.origin.y+rect.size.y;

   x0:=rect.origin.x;

   while x0<=(rect.origin.x+rect.size.x-1) do

     begin

         line(x0,rect.origin.y,x0,y1);

         x0:=x0+dx;

     end;

   y0:=rect.origin.y;

   x1:=rect.origin.x+rect.size.x;

   while y0<=(rect.origin.y+rect.size.y-1) do

     begin

         line(rect.origin.x,y0,x1,y0);

         y0:=y0+dy;

     end;

end;

 { Вывод координат точек пересечения }

procedure WriteCoord(var RootMas:TRoot; K:word; var Rect:trect; Color:word);

var a,i: integer; b:real;  c:string;

begin

 outtextxy(rect.origin.x+rect.size.y+20,rect.origin.y,'Koodinaty tochek peresecheniya:');

 outtextxy(rect.origin.x+rect.size.y+20,rect.origin.y+20,'X:');

 outtextxy(rect.origin.x+rect.size.y+20,rect.origin.y+40,'Y:');

 a:=40;

 for i:=1 to k do

  begin

   b:=rootmas[i].x;

   str(b:6:2,c);

   outtextxy(rect.origin.x+rect.size.y+20+a,

   rect.origin.y+20,c);

  a:=a+50;

  end;

  a:=40;

 for i:=1 to k do

  begin

  b:=rootmas[i].y;

   str(b:6:2,c);

 outtextxy(rect.origin.x+rect.size.y+20+a,

rect.origin.y+40,c);

 a:=a+50;

 end;

 end;

end. 

Результат программы:  

График  функций:  
 
 

Вывод: была составлена программа для графического и численного решения системы нелинейных алгебраических  уравнений, на примере поиска точек пересечения двух функций.

Информация о работе Решение систем нелинейных алгебраических уравнений