Помощь - Поиск - Пользователи - Календарь
Полная версия: сделать программу которая найдёт неизвестные 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, например, это даже компилировать не станет, и правильно сделает)

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