2016-06-29 3 views
0

を切り捨て:MATLABコードである enter image description here enter image description here連続時間系の離散化、およびマトリックス指数、出力は、以下に示す連続時間系あり

は:

t=0.01; 
syms s; 
a2=[0 0 -285.7143;0 -0.4533 9.0662;5.2650 -5.2131 -42.5958]; 
b2=[571.4286;0;82.5714]; 
c2=[1 0 0]; 
A2=expm(a2*t); 
B2=(int(expm(a2*s),0,t)*b1); 

しかし、私はB1を計算する際にコンピュータは「出力が切り捨てられました」と表示します。

私を助けてください。

ありがとうございます。

+0

FYIでは、 'b1'はあなたのコードで定義されていません。 – horchler

答えて

0

この行列積分関数の積分にシンボリック数学を使う必要はないと思います。代わりに、あなたは'ArrayValued' optionintegralを使用することができます。

t = 0.01; 
a2 = [0 0 -285.7143; 
     0 -0.4533 9.0662; 
     5.2650 -5.2131 -42.5958]; 
integral(@(s)expm(a2*s),0,t,'ArrayValued',true) 

これははるかに高速であると(数値誤差による微小虚部を無視する)syms s;double(int(expm(a2*s),s,0,t))と非常に類似した結果を返します。 this questionも参照してください。

関連する問題