自编打靶法求解两点边值问题的Matlab函数

标签:
matlab打靶法两点边值线性插值教育 |
分类: Matlab实例 |
function varargout = shooting_two_point_boundary(varargin)
% ==========================================================
% 函数名:shooting_two_point_boundary.m
% 基于打靶法计算两点边值问题,仅针对二阶微分方程
%
author: xianfa110.
%
% 函数形式:
% [result,err,z0] =
shooting_two_point_boundary(@fun,[y_0,y_end],[x_0,x_1],h);
% 输入:
% fun = 函数名;
% y_0 = 函数初值;
% y_end = 函数终值;
% x_0 = 自变量初值;
% x_end = 自变量终值;
% h = 积分步长;
% 输出:
% result = [x,y];
% err = 误差;
% z0 = y'初值;
% ===========================================================
% 函数fun:4y''+yy' = 2x^3 +16 ; 2<= x
<=3
% 写法:
% function f = fun(y,x)
% dy = y(2);
% dz = (2*x^3+16-y(1)*y(2))/4;
% f = [dy,dz];
% ===========================================================
% 注意:y(1) = y,y(2) = y'。
% ===========================================================
F = varargin{1};
y_0 = varargin{2}(1);
y_end = varargin{2}(2);
x_0 = varargin{3}(1);
x_1 = varargin{3}(2);
ts = varargin{4};
t0 = x_0-0.5;
flg = 0;
kesi = 1e-6;
y0 = rkkt(F,[y_0,t0],x_0,x_1,ts);
n = length(y0(:,1));
if abs(y0(n,1)-y_end)<=kesi
else
end
if flg ~= 1
end
x = x_0:ts:x_1;
out = [x',y1(:,1)];
varargout{1} = out;
varargout{2} = abs(y1(n,1)-y_end);
varargout{3} = t1;
参考文献:数值计算原理
相关文章:
自编基于龙格库塔法的Matlab数值积分函数