Вы думаете в терминах символьной нотации, но используете матричную нотацию.Когда вы делаете t = linspace(0,100);
, это создает 1x100
матрицу (массив).Поэтому, когда в дальнейшем оно используется в определении y_mat
, каждое выражение, используемое в определении, оценивается как матрица 1x100
.Таким образом, ваше y_mat
определение связано с этим: [1x100] * [1 1x100 ; 1x100 1x100] * [1x100 ; 1]
, что явно не получается.
У вас есть два варианта: выполнить все вычисления в матричной нотации, сначала рассчитав умножение матриц по отдельности и реструктурировав матрицы для представленияфактическое умножение (убедитесь, что 1
s правильно реплицированы).
ИЛИ
использовать символьные переменные и выражения Matlabs , вероятно, так:
syms t % creating symbolic variable
% creating symbolic expressions
f0 = 1/t
f1 = t+(1/2)*exp(-3*t)-(1/2)*exp(-t);
f2 = (3/2)*(exp(-t)-exp(-3*t));
f3 = 1-(3/2)*exp(-3*t)+(1/2)*exp(-t);
f4 = (t-4)/3;
% defining y_mat
y_mat = f0 * [1 f1; f2 f3] * [f4 ; 1]
% putting value in symbolic variable
t = linspace(eps,100); % eps to avoid division by 0 error
% substitute values and evaluate y_mat
y_mat_vals = eval(subs(y_mat));
Это дает y_mat_vals
2x100
матрицу, какответ.