永发信息网

matlab编程用ode求解器求微分方程组遇到问题求助

答案:2  悬赏:40  手机版
解决时间 2021-01-26 21:25
我编了个程序求微分方程组,循环次数36000次,运行过程中出现错误,提示
Attempting to evaluate the solution outsidethe interval [0.000000e+000, 2.672556e-002] where it is defined.
请问这是什么错误,怎样解决,请高手帮忙,多谢了
最佳答案
可能是误差要求达不到。当方程组比较复杂是,你可以适当增加tolerance来是的积分更容易进行。
还有就是试试用别的solver。
全部回答
1、你贴出来的报错信息和代码对不上号:前面显示错误的那行代码和你贴出来的完全不一样;而后面的错误(input argument 'u1' is undefined)也不可能是目前的代码所导致的——的确是有错,但错误应该是il未定义才对。   2、使用ode*系列函数解常微分方程,用于描述微分方程的函数(例如你这里的current)输入输出参数是有固定格式要求的,应该是     dy = current( t, y ) 其中t是时间,y是t时刻的状态变量。这两二个参数即使你在函数中用不上,也必须列在参数表中。当然,变量的具体名字可以自定,但含义就是上面说的。   例如,按照你现在的写法,传递到current函数的u1就是时间,而u2则是微分方程的状态变量,相当于y,是一个向量,有3个元素。如果按照上面的固定格式,current函数不允许有三个输入参数,那么,既然你写了三个输入参数,第三个参数il自然就没有定义,所以会出错。   我猜测,你的方程中u1、u2和il其实就是状态变量y——如果是这样,那么在current函数中将其分别以y(1)、y(2)、y(3)代替就可以了,后面的大部分内容也就没必要看了。   之所以对描述微分方程的函数(例如current)有这种固定的格式要求,是因为 ode*系列函数属于所谓“函数的函数”(function functions),也就是说,它的输入参数当中有其它函数(可以是函数文件名,或者函数句柄,也可以是inline函数、匿名函数)。ode* 函数在求解过程中,会反复调用作为参数传递给它的函数,而调用的过程并非由我们决定的,而是固定地写在ode*函数代码中的,所以,对描述微分方程的函数有固定格式要求也就不足为奇了。   3、假如描述微分方程的函数除了t和y之外,的确还需要其它数据,应该怎么办?   首先,请认真考虑一下问题本身,这些数据到底是什么性质?
  • 如果是常数,可以考虑直接写在current函数里面;
  • 如果变化的,但仅与时间t和状态变量y及其导数有关,也可以直接在current函数里面计算出来,而无需由外部传递。   如果上面两种情况都不适合,那么就需要用到传递附加参数了。传递附加参数的常用手段包括使用匿名函数、嵌套函数以及通过函数参数传递三种方式,下面介绍一下第三种方式。   ode系列函数较为一般的调用格式为     [t,y] =solver(odefun,tspan,y0,options,p1,p2...) 这些参数中,p1、p2等就是要额外传递的参数,而相应的微分方程函数应该定义成     dy = current( t, y,p1, p2... ) options为求解器选项,如果不知道(同时也不想知道)它有什么用,可以不用管它,调用的时候用空数组([])代替即可。   4、还有一点小问题:     dy=zeros(1,3); 应改成     dy=zeros(3,1); 描述微分方程的函数要求返回列向量。   参考改动 function dy = current( t, y ) u1 = y(1); u2 = y(2); il = y(3); dy=zeros(3,1); dy(1)=u1; dy(2)=u1/(1.96*10^-4)+u2/(1.96*10^-4)+il/(10^-7); dy(3)=-u2/(17.2*10^-3)-0.5*il/(17.2*10^-3);   这样修改后,程序可以运行,但求出来的结果是发散的,请你再仔细检查一下方程是否正确。   由于不确定你的方程中u1、u2和il到底是什么,所以只能帮你说到这里了。
  • 我要举报
    如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
    大家都在看
    中国工商银行ATM(陶家渡西路133)地址有知道的
    我国土地资源的突出特点是BA. 耕地多,林地少
    安盾开锁服务部(塘渡口镇环虎路63号安盾开锁
    英髦的意思是什么啊?知道的请说下!
    根据下列材料,请回答题:2012年,邮政企业和
    身高173、体重62公斤 上衣应该穿什么型号的衣
    猜成语,有一个杯子,杯子冒着热气什么有个和
    山东蓝翔为什么10.1不放假
    中国工商银行atm(太平南路太平矿公交站西南)
    谁知道密室逃脱之二 碧绿色房间的骷髅上的密
    oppoR6007屏锁怎么设置
    梦见水里很多蛇
    电子配钥匙(宝庆东路与邵石路交叉口南50米电
    you can never teach an old dog new trick.
    没可得的意思是什么啊?知道的请说下!
    推荐资讯
    高中学生一天需要多少热量
    左后脑疼,好像筋被拉伤一样的疼。抬头,低头
    请问广州东方重机有限公司怎么样?正式员工的
    秀昌村地址在什么地方,我要处理点事
    渤海船舶职业学校毕业时能拿到高级海员证吗
    中国移动数字家庭服务站(中国移动数字家庭服
    北京丰台路口周围 卖系统光盘的地方
    下列有关光合作用的叙述,哪项不正确?  A.
    记住:没有篮天的深邃可以有白云的飘阅读答案
    hp deskjet 1011 找不到指定模块
    我的电脑一开机 就进入blos 怎么办 求解 大神
    法标卫浴牌子怎么样
    正方形一边上任一点到这个正方形两条对角线的
    阴历怎么看 ?