Необходимо сравнить результаты метода Гаусса с точкой пересечения прямых на графике - 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. Затем он выполняет итерацию по точкам пересечения, вычисляя координаты этих точек и подписывая оси и график. После выполнения всех итераций, код рисует точку пересечения на графике и подписывает ее. Затем он выводит название графика и координаты точки пересечения. Наконец, код завершается, ожидая ввода от пользователя.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д