matlab ode边值问题,Matlab求解边值问题方法+例题分析.ppt

Matlab求解边值问题方法例题分析

把待解的问题转化为标准边值问题 因为边值问题可以多解,所以需要为期望解指定一个初始猜测解。该猜测解网(Mesh)包括区间[a, b]内的一组网点(Mesh points)和网点上的解S(x) 根据原微分方程构造残差函数 利用原微分方程和边界条件,借助迭代不断产生新的S(x),使残差不断减小,从而获得满足精度要求的解 Matlab求解边值问题方法:bvp4c函数 solinit=bvpinit(x,v,parameters) 生成bvp4c调用指令所必须的“解猜测网” sol=bvp4c(odefun,bcfun,solinit,options,p1,p2,…) 给出微分方程边值问题的近似解 sxint=deval(sol,xint) 计算微分方程积分区间内任何一点的解值 Matlab求解边值问题的基本指令 solinit=bvpinit(x,v,parameters) x指定边界区间[a,b]上的初始网络,通常是等距排列的(1×M)一维数组。注意:使x(1)=a,x(end)=b;格点要单调排列。 v是对解的初始猜测 solinit(可以取别的任意名)是“解猜测网(Mesh)”。 它是一个结构体,带如下两个域: solinit.x是表示初始网格有序节点的(1×M)一维数组,并且solinit.x(1)一定是a,solinit.x(end)一定是b。M不宜取得太大,10数量级左右即可。 solinit.y是表示网点上微分方程解的猜测值的(N×M)二维数组。solinit.y(:,i)表示节点solinit.x(i)处的解的猜测值。 初始解生成函数:bvpinit() sol=bvp4c(odefun,bcfun,solinit,options,p1,p2,…) 输入参数: odefun是计算导数的m函数文件。该函数的基本形式为:dydx=odefun(x,y,parameters,p1,p2,…),在此,自变量x是标量,y,dydx是列向量。 bcfun是计算边界条件下残数的m函数文件。其基本形式为:res=bcfun(ya,yb,parameters,p1,p2,…),文件输入宗量ya,yb是边界条件列向量,分别代表y在a和b处的值。res是边界条件满足时的残数列向量。注意:例如odefun函数的输入宗量中包含若干“未知”和“已知”参数,那么不管在边界条件计算中是否用到,它们都应作为bcfun的输入宗量。 输入宗量options是用来改变bvp4c算法的控制参数的。在最基本用法中,它可以缺省,此时一般可以获得比较满意的边值问题解。如需更改可采用bvpset函数,使用方法同odeset函数。 输入宗量p1,p2等表示希望向被解微分方程传递的已知参数。如果无须向微分方程传递参数,它们可以缺省。 边值问题求解指令:bvp4c() 输出参数: 输出变量sol是一个结构体 sol.x是指令bvp4c所采用的网格节点; sol.y是y(x)在sol.x网点上的近似解值; sol.yp是y'(x)在sol.x网点上的近似解值; sol.parameters是微分方程所包含的未知参数的近似解值。 当被解微分方程包含未知参数时,该域存在。 边值问题求解指令:bvp4c() 原方程组等价于以下标准形式的方程组: solinit=bvpinit(linspace(0,1,10),[1 0]); sol=bvp4c(@ODEfun,@BCfun,solinit); x=[0:0.05:0.5]; y=deval(sol,x); xP=[0:0.1:0.5]; yP=[0 -0-0.729740656... -0-1-1; plot(xP,yP,'o',x,y(1,:),'r-') legend('Analytical Solution','Numerical Solution') % 定义ODEfun函数 function dydx=ODEfun(x,y) dydx=[y(2);y(1)+10]; % 定义BCfun函数 function bc=BCfun(ya,yb) bc=[ya(1);yb(1)]; 求解两点边值问题: 令: 边界条件为: 边值问题的求解 原方程组等价于以下标准形式的方程组: solinit=bvpinit(linspace(0,1,10),[0 1]); sol=bvp4c(@ODEfun,@BCfun,solinit); x=[0:0.1:1]; y=deval(sol,x); xP=[0:0.1:1.0]; yP=[1 1.0743 1.1695 1.2869 1.4284... 1.5965 1.794

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值