В чем ошибка при решении матричного уравнения? - Turbo Pascal

Узнай цену своей работы

Формулировка задачи:

Это решение СЛУ матричным методом. Проблемма в проверке и нахождении корня ! мб ошибка в формуле, 100рас проверел ненашол, оч прошу, опытные программисты гляньте в чем ошипка. БУДУ очень очень очень благодарен! Вот на всякий случий теор матерьял которым пользовался при состовлении кода http://ru.wikipedia.org/wiki/Матричный_метод! Когда идет проверка должна получитьс я матрица типа: определитель 0 0 0 определитель 0 0 0 определитель Проверка происходит при умножении исходной матрицы на транспонировваную!

Решение задачи: «В чем ошибка при решении матричного уравнения?»

textual
Листинг программы
 var
    a,n,pr:array [1..3,1..3] of integer;
    h,k,g,i,l,j,d:integer;
    b,xc,x:array [1..3] of real;
begin
{-----------------------------------------------------} //заполнение матрицы А
    writeln('vvedite matrichnoe yrovnenie');
    for i:= 1 to 3 do
        for j:= 1 to 3 do
        readln(A[i,j]);
 
{-----------------------------------------------------}//Вывод на Экран
    writeln('matrica:=');
 
    for i:= 1 to 3 do
    begin
        for j:= 1 to 3 do
        write(a[i,j]:4);
        writeln(' ');
    end;
{-----------------------------------------------------} //Заполнение столбца B
    writeln('vvedite B');
    
    for j:= 1 to 3 do
        read(b[j]);
{-----------------------------------------------------}
    G:=A[1,1]*A[2,2]*A[3,3]+A[1,2]*A[2,3]*A[3,1]+A[2,1]*A[3,2]*A[1,3]-A[1,3]*A[2,2]*A[3,1]-A[1,2]*A[2,1]*A[3,3];//магические числа :\
    H:=A[2,3]*A[3,2]*A[1,1];
    D:=G-H;
    writeln('opredelitel:=',D);
{-----------------------------------------------------} //Ужас...
    writeln('algebroicheskie dopolneniya:=');
    
    n[1,1]:=a[2,2]*a[3,3]-a[2,3]*a[3,2];
    writeln('a1.1=',n[1,1]);
    writeln;
    
    n[1,2]:=(a[2,1]*a[3,3]-a[2,3]*a[3,1])*(-1);
    writeln('a1.2=',n[1,2]);
    writeln;
    
    n[1,3]:=a[2,1]*a[3,2]-a[2,2]*a[3,1];
    writeln('a1.3=',n[1,3]);
    writeln;
    
    n[2,1]:=(a[1,2]*a[3,3]-a[1,3]*a[3,2])*(-1);
    writeln('a2.1=',n[2,1]);
    writeln;
    
    n[2,2]:=a[1,1]*a[3,3]-a[1,3]*a[3,1];
    writeln('a2.2=',n[2,2]);
    writeln;
    
    n[2,3]:=(a[1,1]*a[3,2]-a[1,2]*a[3,1])*(-1);
    writeln('a2.3=',n[2,3]);
    writeln;
    
    n[3,1]:=a[1,2]*a[2,3]-a[1,3]*a[2,2];
    writeln('a3.1=',n[3,1]);
    writeln;
        
    n[3,2]:=(a[1,1]*a[2,3]-a[1,3]*a[2,1])*(-1);
    writeln('a3.2=',n[3,2]);
    writeln;
        
    n[3,3]:=a[1,1]*a[2,2]-a[1,2]*a[2,1];
    writeln('a3.3=',n[3,3]);
    writeln;
{-----------------------------------------------------}
 
    writeln('matrica a=');
        
    for i:=1 to 3 do
        begin
            for j:=1 to 3 do
            write(' ',n[i,j]);
            writeln;
        end;
{-----------------------------------------------------} 
    for i:=1 to 3 do
        for j:=i+1 to 3 do
            begin
                k:=n[i,j];
                n[i,j]:=n[j,i];
                n[j,i]:=k;
            end;
{-----------------------------------------------------}         
    writeln('transponiruem matrixy=');
    
    for i:= 1 to 3 do
        begin
            for j:= 1 to 3 do
                write(' ',n[i,j]);
                writeln(' ');
        end;
{-----------------------------------------------------}
    writeln('organizuem proverky');
    
    for i:=1 to 3 do
        for j:=1 to 3 do
            for l:=1 to 3 do
                pr[i,j]:=pr[i,j]+a[l,i]*n[j,l];
{-----------------------------------------------------}     
    for i:=1 to 3 do
    begin
        for j:=1 to 3 do
            write(pr[i,j]:4);
            writeln;
    end;
{-----------------------------------------------------} 
    for i:= 1 to 3 do
        for j:= 1 to 3 do
            x[i]:=x[i]+n[i,j]*b[j];
    
    for i:= 1 to 3 do
        xc[i]:=x[i]*(1/d);
    writeln;
{-----------------------------------------------------} 
    writeln('nahodim korni');
    for i:=1 to 3 do
        writeln(xc[i]:2:2);
 
    writeln('Нажмите Enter для завершения');
    readln; 
end.

Объяснение кода листинга программы

В этом коде решается система линейных уравнений методом Крамера. Ошибка в решении матричного уравнения не указана.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

9   голосов , оценка 3.667 из 5
Похожие ответы