matlab数值求解边界条件微分方程组

期望高手指点一下我的疑问,指出一个大方向也好,我现在就是处于无从下手的阶段,求点拨解一个方程组,文献上给出了如下的形式:du/dx+dv/dx=0u=dn/dxv=-dm... 期望高手指点一下我的疑问,指出一个大方向也好,我现在就是处于无从下手的阶段,求点拨
解一个方程组,文献上给出了如下的形式:
du/dx+dv/dx=0
u=dn/dx
v=-dm/dx
du/dx=-exp(-x)+n*m/(m+n)
边界条件和初值条件
u(p)=0,u(0)=v(p),v(0)=0
n(0)=q
其中函数自变量为x,边界条件和初值条件中p为常量,q为变量

按照matlab求解边界条件微分方程bvp4c方法,我进行了如下处理:
y(1)=n,y(2)=m,y(3)=u,y(4)=v
y'(1)=y(3),y'(2)=-y(4),y'(3)=-exp(-x)+y(1)*y(2)/(y(1)+y(2)),y'(4)=exp(-x)-y(1)*y(2)/(y(1)+y(2))

方程M文件
function dydx=ivode(x,y)
dydx=[y(3);-y(4);-exp(-x)+2*y(1)*y(2)/(2*y(2)+y(1));exp(-x)-2*y(1)*y(2)/(2*y(2)+y(1))];

边界条件M文件
function res=ivbc(ya,yb)
res=[ya(1)-q;ya(4);yb(3);ya(3)-yb(4)];

command:
solinit=bvpinit(linspace(0,1,10),[1 1 0 0]);
sol=bvp4c(@ivode,@ivbc,solinit);
??? Error using ==> bvp4c
Unable to solve the collocation equations -- a singular Jacobian encountered

请问这个问题怎么解决呢?还有边界条件中u(0)=v(p)是否必须需要等于一个常量,方程组才能给出数值解。手工处理du/dx=-exp(-x)+n*m/(m+n)方程,分离变量也没弄明白。。。
展开
 我来答
周永红_ZYH
推荐于2018-04-05 · TA获得超过2911个赞
知道大有可为答主
回答量:1455
采纳率:90%
帮助的人:674万
展开全部
试了一下,发现在一定的边界条件下,可以解:

如:
① 设定每个变量的初值
边界条件M文件
function res=ivbc(ya,yb)
q = 5;
res = [ya(1) - q
ya(2) - 2
ya(3) - 3
ya(4)];

② 设定每个变量的终值
边界条件M文件
function res=ivbc(ya,yb)
q = 5;
res = [yb(1) - q
yb(2) - 2
yb(3) - 3
yb(4)];

③ 为每个变量设定一个初值(或终值)
边界条件M文件
function res=ivbc(ya,yb)
q = 5;
res = [ya(1) - q
yb(2) - 2
ya(3) - 3
yb(4) - 3];

总之,你可以设定四个边界条件,
在对每个变量都有限定的情况下,是有解的。

边界条件中u(0)=v(p)必须等于一个常量
你可以设定不同的值分别计算。
卫玉枝钊璧
2019-12-31 · TA获得超过3.6万个赞
知道大有可为答主
回答量:1.3万
采纳率:28%
帮助的人:695万
展开全部
请核实一下条件:
d=2*h*v2*dv2*(1+1/(exp(h*(v1-v2)*kb*t)-1));
这个式子确定无误吗?
按照现在给的数值:h=6.62e-34;kb=1.38e-23;
h*(v1-v2)*kb*t的值约为3.7e-041,所以exp(h*(v1-v2)*kb*t)-1=0,d为inf,根本没法往下算。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式