- 积分
- 0
- 注册时间
- 2007-1-22
- 仿真币
-
- 最后登录
- 1970-1-1
|
这个问题好像很简单,不过我不是很明白。。。
我有一个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 |
|