exponenta event banner

Заменить скаляры матрицами

Создайте следующее выражение, представляющее синусоидальную функцию.

syms w t
f = sin(w*t);

Предположим, ваша задача включает в себя создание матрицы, элементы которой являются синусоидальными функциями с угловыми скоростями, представленными матрицей Тёплица. Сначала создайте матрицу Тёплица 4 на 4.

W = toeplitz(sym([3 2 1 0]))
W =
[ 3, 2, 1, 0]
[ 2, 3, 2, 1]
[ 1, 2, 3, 2]
[ 0, 1, 2, 3]

Затем замените переменную w в выражении f с матрицей Тёплица W. При замене скаляра в символьном выражении матрицей subs расширяет выражение в матрицу. В этом примере: subs расширяется f = sin(w*t) в матрицу 4 на 4, элементами которой являются sin(w*t). Затем он заменяет w в этой матрице с соответствующими элементами матрицы Тёплица W.

F = subs(f, w, W)
F =
[ sin(3*t), sin(2*t),   sin(t),        0]
[ sin(2*t), sin(3*t), sin(2*t),   sin(t)]
[   sin(t), sin(2*t), sin(3*t), sin(2*t)]
[        0,   sin(t), sin(2*t), sin(3*t)]

Найти сумму этих синусоидальных волн на t = π, t = π/2, t = π/3, t = π/4, t = π/5, и t = π/6. Сначала найдите сумму всех элементов матрицы F. Вот, первый звонок sum возвращает вектор строки, содержащий суммы элементов в каждом столбце. Второй вызов sum возвращает сумму элементов этого вектора строки.

S = sum(sum(F))
S =
6*sin(2*t) + 4*sin(3*t) + 4*sin(t)

Теперь используйте subs оценить S для определенных значений переменной t.

subs(S, t, sym(pi)./[1:6])
[ 0,...
  0,...
  5*3^(1/2), 4*2^(1/2) + 6,...
  2^(1/2)*(5 - 5^(1/2))^(1/2) + (5*2^(1/2)*(5^(1/2) + 5)^(1/2))/2,...
  3*3^(1/2) + 6]

Вы также можете использовать subs для замены скалярного элемента матрицы другой матрицей. В этом случае subs расширяет матрицу для размещения новых элементов. Например, замените нулевые элементы матрицы F с вектором-столбцом [1;2]. Исходная матрица 4 на 4 F расширяется до матрицы 8 на 4. subs функция дублирует каждую строку исходной матрицы, а не только строки, содержащие нулевые элементы.

F = subs(F, 0, [1;2])
F =
[ sin(3*t), sin(2*t),   sin(t),        1]
[ sin(3*t), sin(2*t),   sin(t),        2]
[ sin(2*t), sin(3*t), sin(2*t),   sin(t)]
[ sin(2*t), sin(3*t), sin(2*t),   sin(t)]
[   sin(t), sin(2*t), sin(3*t), sin(2*t)]
[   sin(t), sin(2*t), sin(3*t), sin(2*t)]
[        1,   sin(t), sin(2*t), sin(3*t)]
[        2,   sin(t), sin(2*t), sin(3*t)]