边值问题(BVP)的Matlab解法

求微分方程 (1+x)D2y=2y-4 初始条件 y(0)=0 y(1)=2Dy(1)
如果想用inline和ode45解决,不用function窗口,该如何做?

1. 对于此类边值微分方程,ode**函数是无力直接求解的,Matlab提供了bvp解算器。 2. 对干你用的Matlab版本,用@(x)函数(匿名函数)比inline更方便。 3. 请参考本文中的其它例题及相关资料理解下面的代码。

http://hi.baidu.com/nature_and_man/item/6757103c923be981b611db6c

4. 在Matlab7.1版上,可用: dsolve('D2y = (2*y-4)/(1+t)', 'y(0) = 0', 'Dy(1) = y(1)/2') 求出解析解(符号解)。 如不需要解析解与数值解的对比,可不要第一段代码。
% 解析解 syms t y = -(1+t)^(1/2)*besseli(1,2*2^(1/2)*(1+t)^(1/2))*(4*i*bessely(0,4*i)-2*bessely(1,4*i)+2^(1/2)*bessely(1,2*i*2^(1/2)))/(2*i*bessely(0,4*i)*besseli(1,2*2^(1/2))-bessely(1,4*i)*besseli(1,2*2^(1/2))+besseli(1,4)*bessely(1,2*i*2^(1/2))-2*besseli(0,4)*bessely(1,2*i*2^(1/2)))+(1+t)^(1/2)*bessely(1,2*i*2^(1/2)*(1+t)^(1/2))*(besseli(1,2*2^(1/2))*2^(1/2)-2*besseli(1,4)+4*besseli(0,4))/(2*i*bessely(0,4*i)*besseli(1,2*2^(1/2))-bessely(1,4*i)*besseli(1,2*2^(1/2))+besseli(1,4)*bessely(1,2*i*2^(1/2))-2*besseli(0,4)*bessely(1,2*i*2^(1/2)))+2; ezplot(y,[0 1])
% 数值解 dydx = @(x,y) [y(2);(2*y(1)-4)/(1+x) ]; %边值微分方程 res = @(ya,yb) [yb(2) - yb(1)/2;ya(1) - 0 ]; %边界条件 solinit = bvpinit(linspace(0,1,10),[1 0]); sol = bvp4c(dydx,res,solinit); xint = linspace(0,1,50); Sxint = deval_r(sol,xint);
% 画图 hold on plot(xint,Sxint(1,:),'*') title('stevenchang041''s equation.') xlabel('x') ylabel('solution y')

 

边值问题(BVP)的Matlab解法

转载于:https://www.cnblogs.com/wangkj/p/3598308.html

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值