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

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

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 29.10.2008, 13:25   #1
vdv08
Пользователь
 
Регистрация: 01.04.2008
Сообщений: 42
По умолчанию Как в Методе гаусса создать обратную(At) матрицу!выполнить проверку!

Как в Методе гаусса создать обратную(At) матрицу!выполнить проверку!var
r,i,j,k,n: integer;
max,c,m,s:real;a: array[1..100,1..100] of real;
x,b: array[1..100]of real;
f: file of real;
begin
{ввод элементов массива}
write ('Введите размерность = '); {Вводим размерность}
read (n);
for i:=1 to n do
begin
for j:=1 to n do
begin
write ('a[',i,',',j,']='); {Вводим значение}
read (a[i,j]);
end;
writeln;
write ('b[',i,']='); {Вводим значение свободного члена}
readln(b[i]);
end;
{прямой ход метода Гаусса}
for k:=1 to n do begin
max:=abs(a[k,k]); {Сохраняем в max модуль диогонального элемента}
r:=k; {В r запоминаем номертекущей строки}
for i:=k+1 to n do
if abs(a[i,k])>max then {Если модуль текущего элемента больше max, то}
begin
max:=abs(a[i,k]); {cохраняем его значение в max, а в r номер текущей строки}
r:=i;
end;
for j:=1 to n do begin
c:=a[k,j]; {меняем элементы текущей строки и строки,содержащий максимальный элемент}
a[k,j]:=a[r,j];
a[r,j]:=c;
end;
c:=b[k]; {меняем элементы текущей строки и строки,содержащий максимальный элемент}
b[k]:=b[r];
b[r]:=c;
for i:=k+1 to n do
begin
m:=a[i,k]/a[k,k]; {находим коэфициент для текущей строки}
for j:=k to n do {в цикле по номеру строки}
a[i,j]:=a[i,j]-m*a[k,j]; {присваиваем элементам строки новыен значения}
b[i]:=b[i]-m*b[k]; {последним элементом строки явл новое значение свободного члена}
end;
end;
{вывод треугольной матрицы}
for i:=1 to n do
begin
for j:=1 to n do
write(a[i,j]:1:2,' ');
writeln(b[i]:1:2);
end;
{Обратный ход метода Гаусса}
assign(f, 'otvet.dat'); {otvet.dat - имя файла на диске}
rewrite(f);
if a[n,n]=0 then
if b[n]=0 then
writeln ('Бесконечное множество решений')
else
writeln ('Нет решений (Матрица несовместна)')
else for i:=n downto 1 do
begin
s:=0;
for j:=i+1 to n do begin
s:=s+a[i,j]*x[j];
end;
x[i]:b[i]-s)/a[i,i]; {находим неизвестное в текущей строке}
writeln('x(',i,')=',x[i]:1:2); {выводим текущее значение}
write(f, x[i]);
end;
close(f);
readln
end.
vdv08 вне форума Ответить с цитированием
Старый 29.10.2008, 15:46   #2
puporev
Старожил
 
Регистрация: 13.10.2007
Сообщений: 2,740
По умолчанию

А зачем в методе Гаусса обратная матрица? По-моему есть способ решения СЛАУ методом обратных матриц, там есть проверка - умножение прямой матрицы на обратную, но это не Гаусс в том виде как его обычно описывают, это другой способ решения. И непонятно для чего Вы тут приводите чужой код, да еще без тегов? Кто понимает, тот сам напишет, кто не понимает и читать не будет.

Последний раз редактировалось puporev; 29.10.2008 в 15:49.
puporev вне форума Ответить с цитированием
Ответ


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

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
создать типизированный файл который будет использоваться в Методе Гаусса vdv08 Помощь студентам 5 23.10.2008 15:17
Как составить матрицу корреспонденции? Alex2008 Помощь студентам 3 25.04.2008 19:17
Как создать обратную функцию, которая из уникального номера будет возвращать строку? SkAndrew Общие вопросы Delphi 8 06.04.2008 21:10
Как посчитать матрицу? RECREATOR Помощь студентам 8 30.11.2007 07:10
Как в С++ вывести(записать ) информацию в файл, когда инфа находится в методе класса? Artur_cod Общие вопросы C/C++ 1 06.05.2007 00:34