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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 10.01.2012, 22:36   #1
renzo111
 
Регистрация: 10.01.2012
Сообщений: 6
По умолчанию в результате нулевые значения...


это задачка.

формулы привожу.


извиняйте за корявость кода

Код:
   uses crt;
 type
  massiv = array[1..4,1..4] of real;
  mas=array[1..2,1..2] of real;
  var m2,m3,m4,m5:massiv;
      x11,x12,x13,x14,x15,x21,x22,x23,x24,x25,x31,x32,x33,x34,x35,x41,x42,x43,x44,x45:integer;
      i,j:1..4;


 procedure inver(var m2:massiv; m3:masmsiv);
 var
  a,a_1,b,c,d,k,l,m,n,ca,cab,ab,nca,abn,abm,d_cab:mas;
  i,j:byte;
  a1,b1,c1,d1,k1,l1,m1,n1,a11,b11,c11,d11,k11,l11,m11,n11:real;
        procedure proiz(var z:mas; a,b:mas);
               var i,j,k:byte;

               begin
               for i := 1 to 2 do
                 for j := 1 to 2 do
                 begin
                        z[i,j] := 0;
                        for k := 1 to 2 do
                        z[i,j] := z[i,j] + a[i,k] * b[k,j]
                end;
                end;

  begin
  {razbili po kletkam}
  for i:=1 to 2 do
   for j:=1 to 2 do
     a[i,j]:=m2[i,j];
   for i:=1 to 2 do
    for j:=3 to 4 do
     b[i,j-2]:=m2[i,j];
   for i:=3 to 4 do
    for j:=1 to 2 do
     c[i-2,j]:=m2[i,j];
   for i:=3 to 4 do
    for j:=3 to 4 do
     d[i-2,j-2]:=m2[i,j];

{s4itaem obratnoe A}
 a1:=a[1,1];
 b1:=a[1,2];
 c1:=a[2,1];
 d1:=a[2,2];

n1:=1/(d1-c1*1/a1*b1);
m1:=-n1*c1*1/a1;
l1:=-1/a1*b1*n1;
k1:=1/a1-1/a1*b1*m1;

a_1[1,1]:=k1;
a_1[1,2]:=l1;
a_1[2,1]:=m1;
a_1[2,2]:=n1;

{promejuto4nye rezult}
{c*a_1 v ca}
 proiz(ca,c,a_1);
 {c*a_1*b v cab}
 proiz(cab,ca,b);
 {a_1*b v ab}
 proiz(ab,a_1,b);
 {n*c*a_1}
 proiz(nca,n,ca);
 {a_1*b*n}
 proiz(abn,ab,n);
 {a_1*b*m}
 proiz(abm,ab,m);
  {naxodim otricatelnie}
 for i:=1 to 2 do
  for j:=1 to 2 do
   begin
   cab[i,j]:=cab[i,j]*-1;
   m[i,j]:=nca[i,j]*-1;      {polu4ili m&l}
   l[i,j]:=abn[i,j]*-1;
   abm[i,j]:=abm[i,j]*-1;
   end;

  for i:=1 to 2 do
   for j:=1 to 2 do
   begin
    d_cab[i,j]:=d[i,j]+cab[i,j];
    k[i,j]:=a_1[i,j]+abm[i,j];  {polu4ili k}
   end;
   
   {obratnoe d_cab}
 a11:=d_cab[1,1];
 b11:=d_cab[1,2];
 c11:=d_cab[2,1];
 d11:=d_cab[2,2];

 n11:=1/(d11-c11*1/a11*b11);
 m11:=-n11*c11*1/a11;
 l11:=-1/a11*b11*n11;
 k11:=1/a11-1/a11*b11*m11;
 
 n[1,1]:=k11;
 n[1,2]:=l11;
 n[2,1]:=m11;
 n[2,2]:=n11;
 
  {m3 obratnaya m2}
   for i:=1 to 2 do
    for j:=1 to 2 do
     m3[i,j]:=k[i,j];
   for i:=1 to 2 do
    for j:=3 to 4 do
     m3[i,j]:=l[i,j-2];
   for i:=3 to 4 do
    for j:=1 to 2 do
     m3[i,j]:=m[i-2,j];
   for i:=3 to 4 do
    for j:=3 to 4 do
     m3[i,j]:=n[i-2,j-2];

 end;

 begin
 clrscr;
  writeln('vvedite indexi "X" i "=" 1-ogo uravneniay');
  writeln('x1');
  readln(x11);
  writeln('x2');
  readln(x12);
  writeln('x3');
  readln(x13);
  writeln('x4');
  readln(x14);
  writeln('=');
  readln(x15);
  writeln('vvedite indexi "X" i "=" 2-ogo uravneniay');
  writeln('x1');
  readln(x21);
  writeln('x2');
  readln(x22);
  writeln('x3');
  readln(x23);
  writeln('x4');
  readln(x24);
  writeln('=');
  readln(x25);
  writeln('vvedite indexi "X" i "=" 3-ogo uravneniay');
  writeln('x1');
  readln(x31);
  writeln('x2');
  readln(x32);
  writeln('x3');
  readln(x33);
  writeln('x4');
  readln(x34);
  writeln('=');
  readln(x35);
  writeln('vvedite indexi "X" i "=" 4-ogo uravneniay');
  writeln('x1');
  readln(x41);
  writeln('x2');
  readln(x42);
  writeln('x3');
  readln(x43);
  writeln('x4');
  readln(x44);
  writeln('=');
  readln(x45);
  
  m2[1,1]:=x11;
  m2[1,2]:=x12;
  m2[1,3]:=x13;
  m2[1,4]:=x14;
  m2[2,1]:=x21;
  m2[2,2]:=x22;
  m2[2,3]:=x23;
  m2[2,4]:=x24;
  m2[3,1]:=x31;
  m2[3,2]:=x32;
  m2[3,3]:=x33;
  m2[3,4]:=x34;
  m2[4,1]:=x41;
  m2[4,2]:=x42;
  m2[4,3]:=x43;
  m2[4,4]:=x44;
  
  inver(m2,m3);
  
  m4[1,1]:=x15;
  m4[2,1]:=x25;
  m4[3,1]:=x35;
  m4[4,1]:=x45;
                 for i:=1 to 4 do
                     begin
                     m5[i,1]:=0;
                     for j:=1 to 4 do
                       m5[i,1]:=m5[i,1]+m3[i,j]*m4[j,1];
                    end;
  for i:=1 to 4 do
   writeln('x',i,'=',m5[i,1])

 end.

Последний раз редактировалось renzo111; 10.01.2012 в 22:39.
renzo111 вне форума Ответить с цитированием
Старый 11.01.2012, 07:13   #2
renzo111
 
Регистрация: 10.01.2012
Сообщений: 6
По умолчанию

извините за беспокойство!!! решение найдено. благодарю всех кто возможно потратил время. кому интересно я не передал в процедуру inver массив m3 как переменную var. всем спасибо

тема закрыта.
renzo111 вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Умножение двух чисел а в результате 0... xcripz Помощь студентам 4 17.10.2011 23:30
в результате выполнения программы выдает -1.#IND Mors13 Помощь студентам 1 01.06.2011 23:10
Копируем из 2 таблиц в результате отображения maksvas Microsoft Office Excel 3 14.10.2010 14:57
Рандомные помехи в результате запроса MySQL Ivan_32 SQL, базы данных 0 17.07.2009 05:52