В чем ошибка при решении матричного уравнения? - 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.
Объяснение кода листинга программы
В этом коде решается система линейных уравнений методом Крамера. Ошибка в решении матричного уравнения не указана.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д