第二类边界条件 matlab,有限差分法 第二类边界条件 - 计算模拟 - 小木虫 - 学术 科研 互动社区...

这个可以考虑用bvp解算器做

BVP解算器

solinit = bvpinit(x, yinit, params)

sol = bvpsolver(odefun,bcfun,solinit,options)

由于边值问题可能有多解,为了便于我们确定那个解是我们需要的,所以必须使用bvpinit函数对初值进行估计

解算器(bvpsolver):Matlab中提供了bvp4c和bvp5c,后者误差控制更好些

输入参数:

x:需要计算的网格点,相当于ode**的tspan

yinit:猜测的值,可以是具体值,也可以是函数,类似与 ode**的 x0

params:其它未知参数,也是一个猜测值

odefun:描述边值问题微分方程的函数句柄

bcfun:边值函数,一般是双边值(x 的上下限即认为两个边界),但也支持多边值(具体看帮助)

bc(y(a),y(b))=0

举个例子,y(0)=0,y(4)=-2 ---bcfun可写成 res =@(ya,yb) [ ya(1) ; yb(1) + 2];

y'(0)=y'(pi)=0,y(0)=1-----------bcfun可写成res = @(ya,yb) [  ya(2); yb(2);ya(1)-1 ];

solinit:由bvpinit生成的初始化网格

solinit = bvpinit(linspace(pa,pb,10),[1 0]);

bvpinit的第一个参数表示求解域及中心节点,第二个参数表示猜测初始值,基本都写成[1 0],它的变化一般对解无影响

options:BVP解算器优化参数,可以通过bvpset设置,具体参数查看帮助

降阶法表达二阶的常微分方程,ya(1)表示函数在求解域[a,b]的左边界a上的值,ya(2)表示函数的一阶导数在a上的值,“ya(1)-5”实际上是“ya(1)-5=0”的简写,表示y(x=a)=5,即函数在左边界上的值为5。yb是右边界,其他与ya相同。

用bvp4c求得的解sol是一个结构体,其中的子项y是一个2行多列的矩阵,第一行表示函数值,第二行表示函数的导数。另一个子项yp也是一个2行多列的矩阵,第一行表示函数一阶导数值,第二行表示函数二阶导数值。用deval求出的y与sol.y相同

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值