С Новым годом! Форум программистов, компьютерный форум, киберфорум
Matlab
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.51/89: Рейтинг темы: голосов - 89, средняя оценка - 4.51
1 / 1 / 2
Регистрация: 18.11.2013
Сообщений: 337

Умножение матрицы на вектор

16.02.2016, 20:33. Показов 16840. Ответов 26
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте, возник вопрос, как такое можно реализовать, функция
Matlab M
1
 sum в matlab
не помогает и вроде как она не для этих целей, понимаю , что например в си это легко реализовать написал += и считает там себе, а как это сделать через циклы в матлаб? B-матрица, x-вектор-столбец.
Matlab M
1
2
3
4
5
6
7
8
9
10
11
12
x=F;
Res=ones(1,n1);
    for i = 1:1:n1
        for j = 1:1:n1
        Res(i)=sum(B(i,j).*x(j));
        end
    end
  
else
    fprintf('Измените значение переменной t\n');
end
Res
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
16.02.2016, 20:33
Ответы с готовыми решениями:

Умножение матрицы 3x3 на вектор в цикле for
Здравствуйте, подскажите пожалуйста как правильно в программе Matlab выполнять операцию умножения матрицы на вектор с циклом for. ...

Реализовать умножение матрицы на матрицу и матрицы на вектор
Доброй ночи форумчане,не знаю куда податься уже, я полный ноль в программировании, но дали задание написать на С++ прогу, Задание такое,...

Умножение матрицы на вектор
В чем может быть проблема? пишет invalid floating point operation и сразу же закрывается... function MatVecMul(MyMatrix: TMatrix;...

26
Эксперт по электронике
 Аватар для R2D2
939 / 839 / 121
Регистрация: 23.11.2012
Сообщений: 2,488
16.02.2016, 20:41
ilya0610, вот Вам умножение матрицы на вектор:
Matlab M
1
2
3
A = [1 2 3; 4 5 6; 7 8 9];
b = [1 2 3]';
A*b
0
1 / 1 / 2
Регистрация: 18.11.2013
Сообщений: 337
16.02.2016, 20:42  [ТС]
R2D2, Это понятно, это через командную строку, мне просто нужно в виде функции
0
Эксперт по электронике
 Аватар для R2D2
939 / 839 / 121
Регистрация: 23.11.2012
Сообщений: 2,488
16.02.2016, 20:47
ilya0610, так в чем проблема занести это в функцию?
0
1 / 1 / 2
Регистрация: 18.11.2013
Сообщений: 337
16.02.2016, 20:54  [ТС]
R2D2, мне нужно сделать это через цикл, чтобы вычислить
Matlab M
1
2
3
4
5
6
7
8
Res=ones(1,n1);
if(norm(B,inf) < 1)
    for i = 1:1:n1
        for j = 1:1:n1
        Res(i)=sum(B(i,j).*x(j);
        x(j+1)=Res(j)+F(j); 
        end
    end
Вот такую формулу, которая x(j+1), то есть находит первый раз в цикл у него есть значения x(1), при перемножение матрицы с вектором я получу вектор Res(1), дальше подставляю дальше и получу x(2), и это x(2)-я подставляю в первом опять и тем самым получу вектор-столбец x. Просто по другому я не смогу получить значения вектора x, так как он у меня постоянно меняется.
0
Эксперт по электронике
 Аватар для R2D2
939 / 839 / 121
Регистрация: 23.11.2012
Сообщений: 2,488
16.02.2016, 21:27
ilya0610, простите, но "твоя моя не понимать". Попробуйте переформулировать.
И потом: что такое F? Что такое B?
0
1 / 1 / 2
Регистрация: 18.11.2013
Сообщений: 337
16.02.2016, 21:34  [ТС]
R2D2, вот вообще моя программа
Matlab M
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
. function my(N);
H = 1/N;
p1=(1/(H^2)) + 3;%первый и последний элемент
p2=(-1/(H^2));%верхняя и нижняя диагональ
p3=(2/(H^2)) + 3;
n1=N-1;
t=1/100;
A=diag(p3*ones(1,n1))+diag(p2*ones(1,n1-1),1)+diag(p2*ones(1,n1-1),-1);
A(1,1)=p1;
A(n1,n1)=p1;
A
L = ones(n1,1);
for i=1:n1
L(i)=cos(H*i*pi);%вектор-столбец
end
F=t*L;
F
S=t*A;
E=eye(n1);
B=E-S;
B
x0=F;%начальные условия
x0
if(norm(B,inf) < 1)
    for i = 0:1:n1-1
        x(I+1)=B*x(I)+F(I)
    end
else
    fprintf('Измените значение переменной t');
end
В- трехдиагональная матрица, F-тоже вектор-столбец
0
Эксперт по электронике
 Аватар для R2D2
939 / 839 / 121
Регистрация: 23.11.2012
Сообщений: 2,488
16.02.2016, 22:40
ilya0610, я все ровно Вас не понимаю . Довел Ваш код просто до того состояния, что б его можно было запустить. Принципиальная проблема в том, что в строке:
Matlab M
1
x(ii+1) = B*x(ii)+F(ii);
(строка 26 в предыдущем посте) Вы пытаетесь матрицу запихнуть в одни элемент вектора. Я здесь бессилен.
0
1 / 1 / 2
Регистрация: 18.11.2013
Сообщений: 337
16.02.2016, 22:54  [ТС]
R2D2, R2D2, вот в этом сообщение, я показал что хочу делать
Matlab M
1
2
3
4
5
6
7
8
Res=ones(1,n1);
if(norm(B,inf) < 1)
    for i = 1:1:n1
        for j = 1:1:n1
        Res(i)=sum(B(i,j).*x(j);
        x(j+1)=Res(j)+F(j); 
        end
    end
сначала при помощи перемножения матрицы на вектор получит вектор, а далее сложить да вектора, чтобы получить отает, я не могу сделать почленно умножение матрицы на вектор, вот в чем моя проблема
0
Эксперт по электронике
 Аватар для R2D2
939 / 839 / 121
Регистрация: 23.11.2012
Сообщений: 2,488
16.02.2016, 23:15
ilya0610, все, на что хватило моей соображалки я Вам написал еще во втором посте. В моем понимании матрицу на вектор можно умножить или так:
Matlab M
1
2
3
A = [1 2 3; 4 5 6; 7 8 9];
b = [1 2 3]';
A*b
Или так:
Matlab M
1
2
3
A = [1 2 3; 4 5 6; 7 8 9];
b = [1 2 3];
b*A
Остальные варианты - для меня тайна.
0
1 / 1 / 2
Регистрация: 18.11.2013
Сообщений: 337
16.02.2016, 23:21  [ТС]
R2D2, как это тайна, вы не работали в с++, там это просто через массивы реализована,то что вы пишете, это просто слишком, и не позволит решить мою задачу
0
Эксперт по электронике
 Аватар для R2D2
939 / 839 / 121
Регистрация: 23.11.2012
Сообщений: 2,488
16.02.2016, 23:27
ilya0610, есть правила умножения матриц. Они одинаковы, что в с++, что в матлабе, что в ассемблере, что на бумаге. Строка умножается на столбец, и сумма полученного вектора ложится на пересечение соответствующего столбца и строки. Если Вам надо что то другое- опишите простыми, понятными словами. Или подождите более доходчивого собеседника
0
1 / 1 / 2
Регистрация: 18.11.2013
Сообщений: 337
17.02.2016, 07:10  [ТС]
R2D2, да я это хочу, только чтобы это было написано с помощью циклов
0
 Аватар для bobah16
373 / 343 / 42
Регистрация: 14.07.2015
Сообщений: 2,890
17.02.2016, 08:58
Цитата Сообщение от ilya0610 Посмотреть сообщение
да я это хочу, только чтобы это было написано с помощью циклов
Ну так и в чем проблема? Берете формулу для умножения https://ru.wikipedia.org/wiki/... 0%B8%D1%86 и вперед.
0
1 / 1 / 2
Регистрация: 18.11.2013
Сообщений: 337
17.02.2016, 10:49  [ТС]
bobah16, уже доделал, вот что получилось.
Matlab M
1
2
3
4
5
6
7
 for i = 1:1:n1
        for j = 1:1:n1
        p(j)=B(i,j)*x(i);
        Res(j)=Res(j)+p(j);
        x(j)=Res(j)+F(j);
        end
    end
Теперь проблема не пойму правильно ли я вычисляю потом x(j). если формула имеет вид x(i+1) = B*x(i)+F(i); где B-трехдиагональная матрица, а F- вектор столбец. А формула получается, что я подставляю первое значение, получаю второе, и это второе опять подставляю в начала и получаю третья и так далее
0
 Аватар для bobah16
373 / 343 / 42
Регистрация: 14.07.2015
Сообщений: 2,890
17.02.2016, 12:18
ilya0610, вам нужно просто перемножить матрицу и вектор и потом прибавить вектор? Если да, то B*x=c, х(i)=c(i)+F(i)
0
1 / 1 / 2
Регистрация: 18.11.2013
Сообщений: 337
17.02.2016, 12:21  [ТС]
bobah16, да я сделал это

Добавлено через 1 минуту
Цитата Сообщение от ilya0610 Посмотреть сообщение
p(j)=B(i,j)*x(i);
Res(j)=Res(j)+p(j);
Вот это две строки, которое это делают
0
 Аватар для bobah16
373 / 343 / 42
Регистрация: 14.07.2015
Сообщений: 2,890
17.02.2016, 12:25
Цитата Сообщение от ilya0610 Посмотреть сообщение
Вот это две строки, которое это делают
Они делают что-то другое, еще раз взгляните на формулу для умножения матрицы и вектора. Да и вот еще что, сначала нужно выполнить операцию умножения, а потом сложения. Помните такое в школе проходили?
0
1 / 1 / 2
Регистрация: 18.11.2013
Сообщений: 337
17.02.2016, 12:26  [ТС]
bobah16, я проверил на числах в матлабе и в онлайн калькуляторе
0
 Аватар для bobah16
373 / 343 / 42
Регистрация: 14.07.2015
Сообщений: 2,890
17.02.2016, 12:32
Цитата Сообщение от ilya0610 Посмотреть сообщение
я проверил на числах в матлабе и в онлайн калькуляторе
Плохо проверили значит, т.к. нужно фиксировать строку и варьировать столбцы. У вас x(i), а надо x(j).
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
17.02.2016, 12:32
Помогаю со студенческими работами здесь

Умножение матрицы на вектор
Реализовал умножение матрицы на вектор при построчном разбиении. Как переделать, чтобы умножение было реализовано умножение разбиением...

Умножение матрицы на вектор
Помогите пожалуйста написать программу, написала, конечно, это скорее всего неправильно, но попробывала

Умножение матрицы на вектор
Даны квадратная матрица А порядка N и вектор В с N элементами, которые вычисляются по формуле Вi=1/(i2+2). Получить вектор АВ. Решить в...

Умножение матрицы на вектор
...вопрос, чем будет отлтичатся умножение матрицы на вектор с числами и с тригонометрическими функциями... ...как нужно изменить...

Умножение матрицы на вектор
Задача: Даны натуральные числа n,m последовательность а1…..аm и матрица размером n*m. Найти произведение матрицы на вектор. Результат...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Новые блоги и статьи
сукцессия микоризы: основная теория в виде двух уравнений.
anaschu 11.01.2026
https:/ / rutube. ru/ video/ 7a537f578d808e67a3c6fd818a44a5c4/
WordPad для Windows 11
Jel 10.01.2026
WordPad для Windows 11 — это приложение, которое восстанавливает классический текстовый редактор WordPad в операционной системе Windows 11. После того как Microsoft исключила WordPad из. . .
Classic Notepad for Windows 11
Jel 10.01.2026
Old Classic Notepad for Windows 11 Приложение для Windows 11, позволяющее пользователям вернуть классическую версию текстового редактора «Блокнот» из Windows 10. Программа предоставляет более. . .
Почему дизайн решает?
Neotwalker 09.01.2026
В современном мире, где конкуренция за внимание потребителя достигла пика, дизайн становится мощным инструментом для успеха бренда. Это не просто красивый внешний вид продукта или сайта — это. . .
Модель микоризы: классовый агентный подход 3
anaschu 06.01.2026
aa0a7f55b50dd51c5ec569d2d10c54f6/ O1rJuneU_ls https:/ / vkvideo. ru/ video-115721503_456239114
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR
ФедосеевПавел 06.01.2026
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR ВВЕДЕНИЕ Введу сокращения: аналоговый ПИД — ПИД регулятор с управляющим выходом в виде числа в диапазоне от 0% до. . .
Модель микоризы: классовый агентный подход 2
anaschu 06.01.2026
репозиторий https:/ / github. com/ shumilovas/ fungi ветка по-частям. коммит Create переделка под биомассу. txt вход sc, но sm считается внутри мицелия. кстати, обьем тоже должен там считаться. . . .
Расчёт токов в цепи постоянного тока
igorrr37 05.01.2026
/ * Дана цепь постоянного тока с сопротивлениями и источниками (напряжения, ЭДС и тока). Найти токи и напряжения во всех элементах. Программа составляет систему уравнений по 1 и 2 законам Кирхгофа и. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru