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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 26.10.2007, 17:06   #1
Илья Кибель
Пользователь
 
Регистрация: 09.09.2007
Сообщений: 13
По умолчанию Умножение матрицы на вектор

Дана процедура умножения матрицы на вектор:

procedure MultMatVecString(a:aType; b,c:bType);
begin
for i:=1 to m do begin
c[i]:=0;
for j:=1 to m do begin
c[i]:=c[i]+a[i,j]*b[j];
end;
end;
end;

Вызов процедуры:

MultMatVecString(n,u,a);

При вызове процедуры на выходе получается нулевой вектор. Помогите, пожалуйста, найти ошибку.
Илья Кибель вне форума Ответить с цитированием
Старый 26.10.2007, 17:17   #2
Maslan
Форумчанин
 
Регистрация: 15.10.2007
Сообщений: 147
По умолчанию

А что там под m прячется?
Maslan вне форума Ответить с цитированием
Старый 26.10.2007, 18:40   #3
Илья Кибель
Пользователь
 
Регистрация: 09.09.2007
Сообщений: 13
По умолчанию

m=4 - константа, размерность квадратной матрицы.
Илья Кибель вне форума Ответить с цитированием
Старый 26.10.2007, 21:12   #4
Virtson
Владимир М.
Участник клуба
 
Аватар для Virtson
 
Регистрация: 30.10.2006
Сообщений: 1,289
По умолчанию

procedure MultMatVecString(a:aType; b:bType; Var c: bType);

// OFF : с фантаизией туговато ..
Берегите друг друга!
Virtson вне форума Ответить с цитированием
Старый 26.10.2007, 23:32   #5
Илья Кибель
Пользователь
 
Регистрация: 09.09.2007
Сообщений: 13
По умолчанию

Я попробовал. Ничего не получилось. Вектор на выходе по-прежнему нулевой.
Илья Кибель вне форума Ответить с цитированием
Старый 27.10.2007, 11:02   #6
Maslan
Форумчанин
 
Регистрация: 15.10.2007
Сообщений: 147
По умолчанию

Всё работает.... Может ты не инициализировал матрицы с первым вектором?

Код:
program Project2;
{$APPTYPE CONSOLE}
uses
  SysUtils;
Type
 TMatrix=array of array of real;
 TVector=array of real;
procedure MultMatVecString(a:tMatrix; b:tVector; var c:TVector);
Var i,j:integer;
begin
SetLEngth(c,Length(b));
for i:=0 to Length(b)-1 do begin
c[i]:=0;
for j:=0 to Length(b)-1 do begin
c[i]:=c[i]+a[i,j]*b[j];
end;
end;
end;

Var Matr:TMatrix;Vec1,Vec2:TVector;
Var i,j:integer;
begin
Randomize;
 SetLength(Matr,4);
 SetLength(Matr[0],4);
 SetLength(Matr[1],4);
 SetLength(Matr[2],4);
 SetLength(Matr[3],4);
 SetLength(Vec1,4);
 for i:=0 to 3 do for j:=0 to 3 do
 Matr[i,j]:=Random;
 for i:=0 to 3 do Vec1[i]:=Random;
 MultMatVecString(Matr,Vec1,Vec2);
 WriteLn('[',Vec2[0]:3:4,'][',Vec2[1]:3:4,'][',Vec2[2]:3:4,'][',Vec2[3]:3:4,']');
 Readln;
end.
Maslan вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
N-мерный вектор xtraSHAD0W Паскаль, Turbo Pascal, PascalABC.NET 4 16.04.2008 08:18
Умножение матрицы на столбец в ассемблере hecz Помощь студентам 0 04.12.2007 09:55