在 MATLAB 函数句柄中传递参数
Passing parameters in a MATLAB function handle
我必须用 ode45
:
来求解我的微分方程
[t, phi]=ode45(@diff_phi, time_period, initial);
其中 diff_phi 是我的函数:
function dphi_dt = diff(t,phi,gamma0,gamma1,L0,L1)
phi0=phi(1);
phi1=phi(2);
dphi0_dt=-2*L0*phi0-gamma0*(phi0^2+1);
dphi1_dt=-2*L1*phi1-gamma1*(phi1^2+1);
dphi_dt=[dphi0_dt; dphi1_dt];
end
这种方式行不通:
[t, phi]=ode45(@(t,phi) diff_phi(gamma0,gamma1,L0,L1), time_period, initial);
因为我收到此错误消息:
Attempted to access phi(2); index out of bounds because numel(phi)=1.
Error in diff_phi (line 18)
phi1=phi(2);
我该怎么办?
diff_phi
仍然需要 6 个参数,所以在你的第二种方法中,尝试:
[t, phi]=ode45(@(t,phi) diff_phi(t,phi,gamma0,gamma1,L0,L1), time_period, initial);
我必须用 ode45
:
[t, phi]=ode45(@diff_phi, time_period, initial);
其中 diff_phi 是我的函数:
function dphi_dt = diff(t,phi,gamma0,gamma1,L0,L1)
phi0=phi(1);
phi1=phi(2);
dphi0_dt=-2*L0*phi0-gamma0*(phi0^2+1);
dphi1_dt=-2*L1*phi1-gamma1*(phi1^2+1);
dphi_dt=[dphi0_dt; dphi1_dt];
end
这种方式行不通:
[t, phi]=ode45(@(t,phi) diff_phi(gamma0,gamma1,L0,L1), time_period, initial);
因为我收到此错误消息:
Attempted to access phi(2); index out of bounds because numel(phi)=1.
Error in diff_phi (line 18)
phi1=phi(2);
我该怎么办?
diff_phi
仍然需要 6 个参数,所以在你的第二种方法中,尝试:
[t, phi]=ode45(@(t,phi) diff_phi(t,phi,gamma0,gamma1,L0,L1), time_period, initial);