matlab 解二阶微分方程 >>我解的方程是光在非均匀介质中的传播,介质折射率为位置的函数n=2-(x^2+y^2)用费马定理得到二阶微分方程y''+2(y+xy')(1+y'^2)/(2-x^2-y^2)=0我把它转换为两个一阶微分方程,t=x ,y(1)=y ,y(2)=y' ,所以y(2)'=2(y(1)+ty(2))(1+y(2)^2)/((t^2+y(1)^2)-2)]其中边界条件为x=-1,y=0从上面的思路,需要解的就是这个二阶微分方程,下面是matlab语句,报错>> clear;close;>> sinit=bvpinit(-1:1,[1;0]);>> odefun=inline('[y(2);2*(y(1)+t*y(2))*(1+y(2)^2)/((t^2+y(1)^2)-2)]','t','y');>> bcfun=inline('[ya(1)+1;yb(1)]','ya','yb');>> sol=bvp4c(odefun,bcfun,sinit)运行结果报错:Error
问题描述:
matlab 解二阶微分方程 >>
我解的方程是光在非均匀介质中的传播,介质折射率为位置的函数n=2-(x^2+y^2)
用费马定理得到二阶微分方程y''+2(y+xy')(1+y'^2)/(2-x^2-y^2)=0
我把它转换为两个一阶微分方程,t=x ,y(1)=y ,y(2)=y' ,
所以y(2)'=2(y(1)+ty(2))(1+y(2)^2)/((t^2+y(1)^2)-2)]
其中边界条件为x=-1,y=0
从上面的思路,
需要解的就是这个二阶微分方程,下面是matlab语句,报错
>> clear;close;
>> sinit=bvpinit(-1:1,[1;0]);
>> odefun=inline('[y(2);2*(y(1)+t*y(2))*(1+y(2)^2)/((t^2+y(1)^2)-2)]','t','y');
>> bcfun=inline('[ya(1)+1;yb(1)]','ya','yb');
>> sol=bvp4c(odefun,bcfun,sinit)
运行结果报错:
Error using ==> bvp4c at 203
Unable to solve the collocation equations -- a singular Jacobian encountered
这个二阶微分方程该怎么解呢,
请给正确的语句,
答
我给你个建议吧,使用ode45进行数值求解吧
答
先把方程化为一阶的,然后利用ode45等函数进行求解,自己试一下,如果还有疑问再说.