Необходимо сравнить результаты метода Гаусса с точкой пересечения прямых на графике - Turbo Pascal

Узнай цену своей работы

Формулировка задачи:

Необходимо сравнить результаты метода Гаусса с точкой пересечения прямых на графике.
Необходимо как то объединить два кода. Метод Гаусса.
График

Решение задачи: «Необходимо сравнить результаты метода Гаусса с точкой пересечения прямых на графике»

textual
Листинг программы
uses crt,graph;
const n=2;
var a,a1:array [1..n,1..n] of real;
    b,b1,x:array [1..n] of real;
function f(a,b,c,x:real):real;
begin
f:=-a*x/b+c/b;
end;
var i, j, k,x0,y0: integer;
    delenie,xn,xk,m,z,x1,y1:real;
    s,s1:string;
begin
clrscr;
a[1,1]:=1;a[1,2]:=-1;b[1]:=-5;
a[2,1]:=-2;a[2,2]:=-1;b[2]:=7;
a1:=a;
b1:=b;
writeln('Расширеная матрица:');
for i:=1 to n do
 begin
  for j:=1 to n do
  write (a[i,j]:6:2);
  write (b[i]:6:2);
  writeln;
 end;
for i:=1 to n-1 do
 begin
  for k:=i+1 to n do
   begin
    delenie:= a[k,i] / a[i,i];
    for j:=i+1 to n do
    a[k,j]:= a[k,j] - a[i,j] * delenie;
    b[k]:= b[k] - b[i] * delenie;
   end;
 end;
for i:=n downto 1 do
 begin
  for j:= i+1 to n do
  b[i]:= b[i] - a[i,j] * x[j];
  x[i]:= b[i] / a[i,i];
 end;
writeln('ОТВЕТ:');
for i:=1 to n do
writeln('X[',i:1,']=', x[i]:1:2);
write('Нажмите любую клавишу для просиотра графика');
readln;
x0:=0;
initgraph(x0,y0,'');{инициализация графического режима}
xn:=-16;
xk:=10;{интервал по Х}
x0:=getmaxX div 2;{начало координат по Х}
y0:=getmaxY div 2;{начало координат по Y}
m:=(y0-40)/F(a1[1,1],a1[1,2],b1[1],xk);
line(x0-round(17*m),y0,x0+round(17*m),y0);{оси}
line(x0,0,x0,getmaxY);
for i:=1 to 16 do{максимальное количество засечек в одну сторону}
 begin
  line(x0-3,y0-round(i*m),x0+3,y0-round(i*m));{засечки на оси У}
  line(x0-3,y0+round(i*m),x0+3,y0+round(i*m));
  line(x0+round(i*m),y0-3,x0+round(i*m),y0+3); {засечки на оси Х}
  line(x0-round(i*m),y0-3,x0-round(i*m),y0+3);
  if i mod 2=0 then
   begin
    {подпись оси У}
    str(i,s);
    outtextXY(x0-25,y0-round(i*m),s);{соответственно засечкам}
    outtextXY(x0-30,y0+round(i*m),'-'+s);
    {подпись оси Х}
    outtextXY(x0+round(i*m),y0+10,s);
    outtextXY(x0-round(i*m)-10,y0+10,'-'+s);
   end;
 end;
{подписи концов осей}
outtextXY(x0+round(16*m),y0-20,'X');
outtextXY(x0+5,10, 'Y');
{график}
z:=xn;
setcolor(12);
while z<=xk do
 begin
  if z=xn then moveto(x0+round(z*m),y0-round(F(a1[1,1],a1[1,2],b1[1],z)*m))
  else lineto(x0+round(z*m),y0-round(F(a1[1,1],a1[1,2],b1[1],z)*m));
  z:=z+0.1;
 end;
z:=xn;
setcolor(10);
while z<=xk do
 begin
  if z=xn then moveto(x0+round(z*m),y0-round(F(a1[2,1],a1[2,2],b1[2],z)*m))
  else lineto(x0+round(z*m),y0-round(F(a1[2,1],a1[2,2],b1[2],z)*m));
  if abs(F(a1[1,1],a1[1,2],b1[1],z)-F(a1[2,1],a1[2,2],b1[2],z))<0.01 then
   begin
    x1:=z;
    y1:=F(a1[2,1],a1[2,2],b1[2],z);
   end;
  z:=z+0.1;
 end;
setcolor(14);
setfillstyle(1,14);
fillellipse(x0+round(x1*m),y0-round(y1*m),3,3);
{название}
setcolor(12);
outtextXY(10,80,'y=5+x');
setcolor(10);
outtextXY(10,100,'y=-7-2x');
setcolor(14);
str(x1:0:1,s);
str(y1:0:1,s1);
outtextXY(10,120,'x='+s+'  y='+s1);
readln
end.

Объяснение кода листинга программы

Этот код написан на языке Turbo Pascal и предназначен для отображения результатов метода Гаусса на графике. Он использует библиотеку graph, чтобы создать график. В этом коде используются следующие переменные:

  • a, b, x: массивы, представляющие собой прямые, которые пересекаются в точке пересечения.
  • a1, b1, x1, x2: переменные, используемые для вычисления точки пересечения.
  • s, s1: строки, используемые для подписи осей и названия графика.
  • i, j, k, x0, y0: переменные, используемые для итерации по точкам пересечения.
  • n: число, представляющее собой размер массивов. Функция f используется для вычисления коэффициента перед переменной x в методе Гаусса. Код начинается с инициализации графического режима и определения начальных координат осей X и Y. Затем он выполняет итерацию по точкам пересечения, вычисляя координаты этих точек и подписывая оси и график. После выполнения всех итераций, код рисует точку пересечения на графике и подписывает ее. Затем он выводит название графика и координаты точки пересечения. Наконец, код завершается, ожидая ввода от пользователя.

Оцени полезность:

13   голосов , оценка 4.231 из 5
Похожие ответы