编写方程代码
使用代换法 y1=y 和 y2=y′,您可以将 ODE 重写为一阶方程组
y1′=y2,
y2′=-2xy2-1x4y1。
对应的函数是
function dydx = bvpfcn(x,y)
dydx = [y(2)
-2*y(2)/x - y(1)/x^4];
end
注意:所有函数都作为局部函数包含在示例末尾。
编写边界条件代码
边界条件函数要求边界条件的形式为 g(y(a),y(b))=0。在此形式中,边界条件是
y(13π)=0,
y(1)-sin(1)=0。
对应的函数是
function res = bcfcn(ya,yb)
res = [ya(1)
yb(1)-sin(1)];
end
设置选项
使用 bvpset 打开求解器统计信息的显示,并指定宽松误差容限以突出求解器之间误差控制的差异。此外,为了提高效率,请指定解析 Jacobian 矩阵
J=∂fi∂y=[∂f1∂y1∂f1∂y2∂f2∂y1∂f2∂y2]=[01-1x4-2x]。
返回 Jacobian 矩阵值的对应函数为
function dfdy = jac(x,y)
dfdy = [0 1
-1/x^4 -2/x];
end
opts = bvpset('FJacobian',@jac,'RelTol',0.1,'AbsTol'