bvp4c--例2
Mathieu's equation
y''+(a-2qcos2x)y=0 q=5, a为未知参数
边界条件:y'(0)=0 y'(pi)=0 y(0)=1
首先令y(1)=y y(2)=y' ,则微分方程为:
function dydx=ode(x,y,a,q)
dydx=[y(2)
-y(1)*(a-2*q*cos(2*x))]; %a为未知参数,q为已知参数
边界条件bcfun(y(a),y(b))=0
function res=bcfun(ya,yb,a,q)
res=[ya(1)-1
ya(2)
yb(2)]; %yb(2)表示自变量为b的时候y(2)=0,也就是y'(pi)=0
主程序
q=5
solinit=bvpinit(linspace(0,pi,10),[1,0],5)%5为未知参数a的初始假设
sol=bvp4c(@ode,@bcfun,solinit,[],q)%q为传递参数,已知
plot(sol.x(:),sol.y(1,:),'red');
hold on
plot(sol.x(:),sol.y(2,:),'green');
源文件:
function example
q=5
solinit=bvpinit(linspace(0,pi,10),[1,0],5)%5为未知参数a的初始假设,对于存在未知参数的情况下,必须提供
sol=bvp4c(@ode,@bcfun,solinit,[],q)%q为传递参数,已知
plot(sol.x(:),sol.y(1,:),'red');
hold on
plot(sol.x(:),sol.y(2,:),'green');
function dydx=ode(x,y,a,q)
dydx=[y(2)
-y(1)*(a-2*q*cos(2*x))]; %a为未知参数,q为已知参数
function res=bcfun(ya,yb,a,q)
res=[ya(1)-1
ya(2)
yb(2)];

您当前的位置: