Версия для печати темы

Нажмите сюда для просмотра этой темы в обычном формате

Форум «Всё о Паскале» _ Задачи _ Решение СЛАУ методом Гаусса И крамера..

Автор: Andrewshkovskii 25.12.2007 1:17

Есть рабочий код программы для Решение СЛАУ методом Гаусса.
Необходимо добавить туда вектор невязок.
Он высчитывается как Vnev=Ax-b. где b= столбец свободных членов,x- вектор решений матрицы,A - основная матрица.

Определил переменную


Vnev: array [1..4] of real;



основная матрица :

type matr=array[1..k,1..k+1] of real;
Var m:matr;



вот так пытаюсь считать невязки(точно знаю что не правильно,но это так,для теста..)

for i:=1 to rr do
for j:=1 to rr do
Vnev:=(m[i,j]*x[i])-m[i,5];
{rr размерность матрицы}



Пишет что несовпадение типов.Хотя вроде все real"ы..
Точно знаю что Vnev не правильно объявил,только как так,раз матрица это массив real,Vnev тоже риал..а пишет не совпадение.
Помогите пожалуйста разобраться:)Да и ещё,если не сложно,алгоритм перемножения матрицы на вектор..Вообщем вектор невязок как правильно посчитать..
П.С : чертов простуда..голова вообще не варит и глаза как-будто вылезают из орбит=/

П.С2 : я добавил ещё файл с с исходником метода,может кому нужен будет.


Прикрепленные файлы
Прикрепленный файл  GAUSS.PAS ( 9.9 килобайт ) Кол-во скачиваний: 438

Автор: volvo 25.12.2007 1:24

Цитата
Vnev тоже риал

Vnev - это не Real, а массив Real-ов. Ты хочешь просто вещественное число записать сразу в массив? Может, все-таки, по индексу обратиться?

Автор: Andrewshkovskii 25.12.2007 1:25

где ошибка??Тут я пытаюсь перемножить матрицу на вектор :

for i:=1 to 4 do
begin
summ:=0;
for j:=1 to 4 do
begin
summ:=summ+m[i,j]*x[i];
end;
Vnev[i]:=summ;

Автор: volvo 25.12.2007 2:54

Цитата
где ошибка??
Ошибка какая? Я вижу только логическую: при перемножении матрицы на вектор обычно делают так:

summ:=summ+m[i,j]*x[J]; { <--- Смотри на индекс массива X }

Автор: Andrewshkovskii 25.12.2007 2:55

да я уже заметил..Спасибо,всеравно!:)
Голова вообще не работает...