私は境界で「強制」入力を使用して、状態システムを取得しました。私の SS 方程式は: zp = A*z * B. (A は正方行列、B 列)
Bがステップ(経験の時間に沿ったもの)であれば問題ありません、私は使えるので
tevent = 2;
tmax= 5*tevent;
n =100;
dT = n/tmax;
t = linspace(0,tmax,n);
u0 = 1 * ones(size(z'));
B = zeros(nz,n);
B(1,1)= utop(1)';
A = eye(nz,nz);
[tt,u]=ode23('SS',t,u0);
そしてSSは:
function zp = SS(t,z)
global A B
zp = A*z + B;
end
私の問題は、スロップを適用したときです。そのため、B は時間に依存します。
utop_init= 20;
utop_final = 50;
utop(1)=utop_init;
utop(tevent * dT)=utop_final;
for k = 2: tevent*dT -1
utop(k) = utop(k-1) +(( utop(tevent * dT) - utop(1))/(tevent * dT));
end
for k = (tevent * dT) +1 :(tmax*dT)
utop(k) = utop(k-1);
end
global A B
B = zeros(nz,1);
B(1,1:n) = utop(:)';
A = eye(nz,nz);
問題を解決しようとする新しい方程式を書きましたが、「時間ステップ」を調整できず、22x100 (目的) で au を取得できません。
for k = 2 : n
u=solveSS(t,k,u0);
end
SolveSS には次のコードがあります。
function [ u ] = solveSS( t,k,u0)
tspan = [t(k-1) t(k)];
[t,u] = ode15s(@SS,tspan,u0);
function zp = SS(t,z)
global A B
zp = A*z + B(:,k-1);
end
end
あなたが助けてくれることを願っています!