Написать функцию с параметрами, обеспечивающую умножение матрицы навектор
Написать функцию с параметрами, обеспечивающую умножение матрицы на
вектор
2 ответа
Vjacheslav Tiptev
Сама процедура занимает 5 строчек.
// PascalABC.NET 3.3, сборка 1607 от 31.12.2017
// Внимание! Если программка не работает, обновите версию!
procedure MV(a:array[,] of integer; b,c:array of integer);
begin
for var i:=0 to b.Length-1 do
c[i]:=a.Row(i).Zip(b,(p,q)-gt;p*q).Sum;
end;
begin
var a:array[,] of integer:=((2,4,0),(-2,1,3),(-1,0,1));
var b:array of integer:=(1,2,-1);
Writeln('Матрица A'); a.Println(3);
Write('Вектор B: '); b.Println;
var c:=new integer[3];
MV(a,b,c);
Write('Вектор С: '); c.Println
end.
// PascalABC.NET 3.3, сборка 1607 от 31.12.2017
// Внимание! Если программка не работает, обновите версию!
procedure MV(a:array[,] of integer; b,c:array of integer);
begin
for var i:=0 to b.Length-1 do
c[i]:=a.Row(i).Zip(b,(p,q)-gt;p*q).Sum;
end;
begin
var a:array[,] of integer:=((2,4,0),(-2,1,3),(-1,0,1));
var b:array of integer:=(1,2,-1);
Writeln('Матрица A'); a.Println(3);
Write('Вектор B: '); b.Println;
var c:=new integer[3];
MV(a,b,c);
Write('Вектор С: '); c.Println
end.
Сема Гольдяев
PROGRAM MultiplyMatrix2Vector;
// творение матрицы на вектор.
// R[m] = A[m,n]*B[n]
const
row = 2;
col = 3;
type
matrix = array[1..row, 1..col] of byte;
vect_mul = array[1..col] of byte; // вектор на который умножаем
vect_res = array[1..row] of byte; // вектор с произведением
var
A:matrix := ( (3, 7, 5), (1, 0, 4) ); //матрица
B:vect_mul := ( 1, 2, 3 ); // вектор на который умножаем
R:vect_res; // вектор с твореньем
// m: количество рядов n: количество столбцов
function mulMatVec(n,m:byte; var MX:matrix; var VR:vect_mul):vect_res;
var
i,j:byte;
r:vect_res;
begin
for i:=1 to m do
for j:=1 to n do
R[i]:=R[i] + MX[i,j] * VR[j];
mulMatVec := R;
end;
BEGIN
writeln('Матрица: ', A);
writeln('Вектор: ', B);
R := mulMatVec(3, 2, A, B);
writeln('Произведение: ', R);
END.
// творение матрицы на вектор.
// R[m] = A[m,n]*B[n]
const
row = 2;
col = 3;
type
matrix = array[1..row, 1..col] of byte;
vect_mul = array[1..col] of byte; // вектор на который умножаем
vect_res = array[1..row] of byte; // вектор с произведением
var
A:matrix := ( (3, 7, 5), (1, 0, 4) ); //матрица
B:vect_mul := ( 1, 2, 3 ); // вектор на который умножаем
R:vect_res; // вектор с твореньем
// m: количество рядов n: количество столбцов
function mulMatVec(n,m:byte; var MX:matrix; var VR:vect_mul):vect_res;
var
i,j:byte;
r:vect_res;
begin
for i:=1 to m do
for j:=1 to n do
R[i]:=R[i] + MX[i,j] * VR[j];
mulMatVec := R;
end;
BEGIN
writeln('Матрица: ', A);
writeln('Вектор: ', B);
R := mulMatVec(3, 2, A, B);
writeln('Произведение: ', R);
END.
Елена Томчаковская
3.3 1607 Только что проверил
Алёна Тамошина
Стараюсь чтоб было совместимо с самым простым паскалем. А Write - для удобства. Задача то - сделать функцию которая перемножает. А не вполне ввод-вывод матрицы и вектора с кучей проверок
Валерия Бердович
R[row] = A[row,col]*B[col]. Вроде правильно
, оставишь ответ?
Похожие вопросы
-
Вопросы ответы
Новое
NEW
Статьи
Информатика
Статьи
Последние вопросы
Игорь 14 лет назад был на 8 лет моложе, чем его
Математика.
Два тела массами m1 и m2 находящие на расстоянии R друг
Физика.
В сосуде 4целых одна пятая литр воды что бы заполнить сосуд
Математика.
Двум малярам Диме И Олегу поручили выкрасить фасад дома они разделили
Разные вопросы.
найти порядковый номер 41Э если в ядре 20 нейтронов
Разные вопросы.
в ряду натуральных чисел 3, 8, 10, 24, … 18 одно
Математика.
Предприятие по производству с/хоз продукции на производство затратило 3527000 руб Валовый
Разные вопросы.
Математика, задано на каникулы. ВАРИАНТ 1004
НОМЕР 1,2,3,4,5,6,7,8.
Математика.
Имеются три конденсатора емкостью С1=1мкФ, С2=2мкФ и С3=3мкФ. Какую наименьшую емкость
Физика.
Из точки м выходят 3 луча MP MN и MK причём
Геометрия.
Облако тегов