ode求解器中options部分如果使用odeset设置事件,事件函数只有如下一种格式么?
function [value,isterminal,direction] = eventfun(t,x)
如果想让其多读入一个odefun函数中的变量可以做到么?
例如:
op=odeset('Events',@eventfun);
[t,x,te,xe]=ode45(@(t,x)odefuns(t,x,r,1,0),[0,t0],x0,op)
function [value,isterminal,direction] = eventfun(t,x)……end
function dxdt=odefuns(t,x,r,I,xigma)……end
想让eventfun从odefun中多读入一个xigma(在ode迭代过程中会改变)可以做到么?
直接在eventfun(t,x)后面加参数变成eventfun(t,x,xigma)没有作用,实际函数中需要使用xigma时会报错“输入参数的数目不足”
希望有人能回答
两种思路解决:
1. 使用全局变量,通过在函数中用global将xigma申明为全局变量。
2. 将xigma扩充到状态变量x中,即xnew = [x xigma]' ,同时在odefuns中, dxnew = [dx 0]' + [0 xigma]'