Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Паскаль, Turbo Pascal, PascalABC.NET
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 27.05.2009, 20:02   #1
Neznau
Пользователь
 
Регистрация: 17.05.2008
Сообщений: 16
По умолчанию метод Зейделя на Паскале(график)

Необходимо написать программу: метод Зейделя и метод минимальных невязок на Паскале. НО, самое главное это вывести графики. В этом как раз и заключается проблема моя. Как сделать график для метода Зейделя? Один график есть, нужен еще один. Заранее благодарю всех, кто откликнется и попытается помочь.
uses GRAPH;
const n = 2;
type TInd=1..n;
TF = array[TInd] of real;
TMatrix = array[TInd,TInd] of real;
Txy = array[0..100] of record x,y: real
end;
const A: TMatrix = ((2,1),
(1,1));
const f: TF = (11,11);
const eps = 1;
const y0: TF = (0,0);
const gx0 = 10;
gy0 = 450;
l1 = 400;
l2 = 250;
var Bk: TMatrix;
y1,y2,r: TF;
i,j: TInd;
Nm: real;
pt: Txy;
m: integer;

{formirovanie Bk}
procedure pBk;
begin for i:=1 to n do
for j:=1 to n do
if i>=j then Bk[i,j]:=A[i,j]
else Bk[i,j]:=0;
end;

{raschet normi vectora neyazki}
procedure norm;
begin for i:=1 to n do begin r[i]:=f[i];
for j:=1 to n do r[i]:=r[i]-A[i,j]*y1[j]
end;
Nm:=0;
for i:=1 to n do Nm:=Nm + r[i]*r[i];
Nm:=sqrt(Nm)
end;

{vichislenie ocherednogo pribligenia}
procedure nextY;
var Sk, Sk1: real;
begin y1:=y0;
m:=0;
norm;
pt[m].x:=m;
pt[m].y:=Nm;
while (Nm>eps) do
begin for i:=1 to n do begin Sk:=0;
for j:=1 to (i-1) do Sk:=Sk + A[i,j]*y2[j];
Sk1:=0;
for j:=(i+1) to n do Sk1:=Sk1 + A[i,j]*y1[j];
y2[i]:=(f[i]-Sk-Sk1)/A[i,i];
end;
norm;
y1:=y2;
m:=m+1;
pt[m].x:=m;
pt[m].y:=Nm;
end;

for i:=1 to n do write(y1[i]:5:5,' ');
writeln;
writeln('r');
for i:=1 to n do write(r[i],' ');
writeln
end;

{inicializacia grafiki}
procedure initgr;
var dg,mg: integer;
begin dg:= detect;
initgraph(dg,mg,'R:\BP\BGI');
end;

{postroenie grafika zavisimosti normi nevyazki ot nomera iteracii}
procedure rm;
var dl1, dl2: real;
st: string;
begin line(gx0,gy0,gx0,gy0-l2);
line(gx0,gy0,gx0+l1,gy0);
dl1:=l1/m;
for i:=1 to m do
line(gx0+round(dl1*i),gy0-2,gx0+round(dl1*i),gy0+2);
dl2:=l2/m;
for i:=1 to m do
line(gx0+2,gy0-round(dl2*i),gx0-2,gy0-round(dl2*i));

{pervyi grafik}
setcolor(4);
for i:=1 to m do
line(gx0+round(dl1*(i-1)),gy0-round(l2*pt[i-1].y/pt[0].y),gx0+round(dl1*i),gy0-round(l2*pt[i].y/pt[0].y));
str(m,st);
st:='m = ' +st;
outtextxy(gx0+l1+10, gy0+10,st);
readln;

{vtoroi grafik}
setcolor(5);

? ? ? ? ?
? ? ? ? ?
? ? ? ? ?
? ? ? ? ?

end;

{osnovnaya programma}
begin pBk;
initgr;
writeln('y');
nextY;
readln;
rm;
readln;
cleardevice;
closegraph
end.
Neznau вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Графика в паскале (построить график функции) matic Помощь студентам 4 26.11.2012 17:02
Как нарисовать на Tchart график функции, заданной таблично(используя метод наименьших квадратов) Legion2008 Мультимедиа в Delphi 0 11.05.2009 16:00
как построить график в паскале? Vitas1234 Паскаль, Turbo Pascal, PascalABC.NET 1 11.06.2008 16:53
Построить график в Паскале. LEX.darnica Помощь студентам 3 28.11.2007 18:11