1

我在 MATLAB 中有一个这种形式的函数,

C=S*e^(L*t)*inv(S)*C_0

我在哪里

     S=[-2 -3;3 -2] 
     L=[0.5 0; 0 1.5]
     C_0=[1; 1]

我需要根据时间绘制这个函数。我的输出 C 是一个 2×1 矩阵。

我所做的是使用 b=expm(L) 分别计算 e^L,然后将 mpower(b,t) 插入函数中。所以我在脚本中生成的函数看起来像

  b=expm(L);
  C=S*mpower(b,t)*inv(S)*C_0;

现在,我应该如何规划这个时间。我尝试定义时间向量然后使用它,但很明显我收到错误消息,指出矩阵尺寸不同意。有人可以给我一个建议吗?

4

1 回答 1

0

你可能可以用矢量化的方式做到这一点,但如果你不担心速度或简洁的代码,为什么不写一个for循环呢?

ts = 1 : 100;
Cs = zeros(2, length(ts) );

S = [-2 -3;3 -2];
L = [0.5 0; 0 1.5];
C_0 = [1; 1];

for ii = 1 : length(ts)
  b = expm(L);
  Cs(:,ii) = S*mpower(b,ts(ii))*inv(S)*C_0;
end

ts包含时间值,Cs包含C每个时间的值。

于 2013-09-19T09:52:14.460 回答