找回密码
 注册
Simdroid-非首页
查看: 91|回复: 2

怎么把已知参数引入到对应的ode求解呢?

[复制链接]
发表于 2009-5-9 21:53:11 | 显示全部楼层 |阅读模式 来自 LAN
这个问题好像很简单,不过我不是很明白。。。
我有一个bvp,我用bvp4c求解很正常。可是里边有一个参数(常数)经常变。我就想把整个求解的部分写成一个function,然后每次调用就给那个常数值就好了。可是matlab每次报错。。。或者是bvp4c(@odefun,@bcfun,solinit,p1,p2)我在p1,p2输入我的常数,我看Help说这样可以带入ode&bc,可是运行就报错。。。麻烦大家帮个忙~~~ 以下是我的求解的code。我这里用的是第一种
clear
clc
m=8;
alpha=20;
w=test(m,alpha);

%%%%%%%%%%%%%%%%%%%%%%%%%%%%

function w=test(m,alpha)
options = bvpset('stats','on');
    solinit=bvpinit(linspace(0.74,1,50),[0 0 1 0]);
    sol=bvp4c(@corecorolaode,@corecorolabc,solinit)
w=sol.y;
   
function dudr=corecorolaode(r,u)
dudr=[u(2)
    u(3)
    u(4)
    1/r^4*(4*m^2*u(1)+alpha*m^2*u(1)-m^4*u(1)+alpha*m^2*r^2*u(1)-r*u(2)-3*alpha*r*u(2)...
    -2*m^2*r*u(2)-alpha*r^3*u(2)+r^2*u(3)+alpha*r^2*u(3)+2*m^2*r^2*u(3)-alpha*r^4*u(3)-2*r^3*u(4))];
function res=corecorolabc(ua,ub)
res=[ua(1)
    ua(2)
    -0.5*m^2*ub(1)+0.5*ub(2)+ub(3)
    -2.5*m^2*ub(1)+((1.5*m^2+1)*ub(2)+(-ub(3)-ub(4)))];
end
end
end
发表于 2009-5-11 14:39:19 | 显示全部楼层 来自 北京海淀
Simdroid开发平台
H20版有个1stOpt求解变参数边值ODE方程问题,可以参考一下:(http://forum.simwe.com/thread-879266-1-1.html

评分

1

查看全部评分

回复 不支持

使用道具 举报

 楼主| 发表于 2009-5-12 09:46:59 | 显示全部楼层 来自 LAN
谢谢,我自己做出来了。我只要把所有的code全部写在一个function里就可以了。不知道为什么如果写成一个function再调用就不可以。也可能是技术问题。。
回复 不支持

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

Simapps系列直播

Archiver|小黑屋|联系我们|仿真互动网 ( 京ICP备15048925号-7 )

GMT+8, 2024-10-7 11:26 , Processed in 0.061210 second(s), 18 queries , Gzip On, MemCache On.

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表