Помощь - Поиск - Пользователи - Календарь
Полная версия: сделать программу которая найдёт неизвестные x1 и x3
Форум «Всё о Паскале» > Pascal, Object Pascal > Задачи
moren
сделать программу которая найдёт неизвестные x1 и x3 методом Гаусса — Жордана.
r, V-вводятся с клавиатуры
x1[1/r2+1/r1+1/r3]-x3[1/r3+1/r1]=V1/r2+V2/r1
x3[1/r4+1/r5+1/r1+1/r3] -x1[1/r1+1/r3]=V3/r5-V2/r1+V4/r4
moren
помогите пожалуйста unsure.gif
potter-by
Надо подумать... mad.gif
какие исходные параметры матрицы?
moren
Цитата(potter-by @ 8.12.2011 20:07) *

Надо подумать... mad.gif
какие исходные параметры матрицы?

2х2
как я понял эти два уравнения и есть как бы матрица, просто r и V считаются отдельно и потом составляется матрица
moren
Код

program labrab;
uses crt;
var R1,R2,R3,R4,R5,V1,V2,V3,V4,Ra,Va,Rb,Vb,Rc:real;
begin
clrscr;
write('R1= ');
read(R1);
write('R2= ');
read(R2);
write('R3= ');
read(R3);
write('R4= ');
read(R4);
write('R5= ');
read(R5);
write('V1= ');
read(V1);
write('V2= ');
read(V2);
write('V3= ');
read(V3);
write('V4= ');
read(V4);
  Ra:=1/R2+1/R1+1/R3;
  Rb:=1/R3+1/R1;
  Rc:=1/R4+1/R5+1/R1+1/R3;
  Va:=V1/R2+V2/R1;
  Vb:=V3/R5-V2/R1+V4/R4;
write('Ra= ',Ra:8:4,' Rb= ',Rb:8:4,' Rc= ',Rc:8:4,' Va= ',Va:8:4,' Vb= ',Va:8:4);
readkey;
end.

матрица теперь выглядит так
x1[Ra]-x3[Rb]=Va
x3[Rc] -x1[Rb]=Vb
как решить её методом Гаусса — Жордана?
moren
нашёл вот на форуме и программу самого метода. Но только тут ввод размерности и свободных членов. Помогите соединить эти 2 программы
program labI4;
Uses crt;
Label m1;
Var a,a5: array [1..25,1..25] of real;
b,b5: array [1..25] of real;
k,i,m,n,st:integer;
t,x,x1,x2,x3,a1,b1,c1:real;
BEGIN
clrscr;
write('Vvedite razmernost');
readln(n);
For i:=1 to n do
For k:=1 to n do begin
write('a[',i,',',k,']=');readln(a[i,k]);a5[i,k]:=a[i,k];
end;
writeln('Vvedite svobodnye chleny B');
For i:=1 to n do begin
write('b[',i,']=');readln(b[i]);b5[i]:=b[i];
end;
writeln('Nachalnaya matriza');
For i:=1 to n do begin
For k:=1 to n do begin
write('a[',i,',',k,']=',a[i,k]:5:2,'':4);
end;
writeln('b[',i,']=',b[i]:5:2,'':4);
end;
readln;
For k:=1 to n do begin
st:=k;
For i:=k to n do
If a[st,k]<=a[i,k] Then st:=i;
For i:=1 to n do begin
t:=a[k,i];
a[k,i]:=a[st,i];
a[st,i]:=t;
end;
t:=b[k];
b[k]:=b[st];
b[st]:=t;
For i:=1 to n do begin
If i=k Then i:=i+1;
If i=n+1 Then goto m1;
t:=a[i,k]/a[k,k];
For m:=1 to n do
a[i,m]:=a[i,m]-t*a[k,m];
b[i]:=b[i]-t*b[k];
end;
m1:
end;
writeln(' Konechnaya matriza');
For i:=1 to n do begin
For k:=1 to n do begin
write('a[',i,k,']=',a[i,k]:5:2,'':4);
end;
writeln('b[',i,']=',b[i]:5:2,'':4);
end;
readln;
For k:=1 to n do begin
x:=b[k]/a[k,k];
writeln('x(',k,')=',x:5:2);
a[1,k]:=x;
end;
readkey
END.
moren
ребята как перенести эти значения в метод?
a[1.1]=Ra
a[1.2]=-Rb
a[2.1]=-Rb
a[2.2]=Rc
b[1]=Va
b[2]=Vb
IUnknown
Цитата
ребята как перенести эти значения в метод?
Ты для начала приведи в порядок тот код, который ты нашел, а потом будешь думать, как в него передать свои значения. В том виде, в котором он есть - он не верен (переменную цикла внутри цикла менять НЕЛЬЗЯ. Заявления типа "работает и ладно" не принимаются всерьез. Ибо FPC, например, это даже компилировать не станет, и правильно сделает)
moren
Цитата(IUnknown @ 11.12.2011 15:16) *

Ты для начала приведи в порядок тот код, который ты нашел, а потом будешь думать, как в него передать свои значения. В том виде, в котором он есть - он не верен (переменную цикла внутри цикла менять НЕЛЬЗЯ. Заявления типа "работает и ладно" не принимаются всерьез. Ибо FPC, например, это даже компилировать не станет, и правильно сделает)

да но из всех тех что я нашёл посчитала правильно именно эта.Можете показать что здесь не правильно?
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.