• 大小: 2KB
    文件类型: .m
    金币: 1
    下载: 0 次
    发布日期: 2021-06-05
  • 语言: Matlab
  • 标签: 打靶法  

资源简介

打靶法-求解边值问题,主要应用于求解微分方程组

资源截图

代码片段和文件信息

function [tx]=lineshoot(f1f2abalphabetamaxiter)
%线性方程边值问题的打靶算法
%对微分方程y‘‘=p*y‘+q*y+ra%构造成两个等效的初值问题
%u‘‘=p*u‘+q*u+ru(a)=alphau‘(a)=0
%v‘‘=p*v‘+q*vv(a)=betav‘(a)=1
%使用Matlab语言描述微分方程u和v,注意我们先必须化为一阶微分方程组
%f1=@(tu)[u(2);p*u(2)+q*u(1)+r];
%f2=@(tv)[v(2);p*v(2)+q*v(1)];
%则原微分方程的解为
%x=u+c*v=u+(beta-u(b))/v(b)*v
%
%输入参数 
% f1 描述方程u的Matlab函数只能是句柄(@()和M函数),或者inline函数
% f2 描述方程v的Matlab函数
% ab 微分计算区间[ab]
% alphabeta 上下边界
% maxiter 最大迭代次数
% 输出参数
% [tx] 坐标点t对应的微分值x
%
% Example
% x‘‘=(2t)/(1+t^2)*x‘-(2x)/(1+t^2)+1
% 边值x(0)=1.25,x(4)=-0.95
%
% f1=@(tu)[u(2);2*t/(1+t.^2)*u(2)-2/(1+t.^2)*u(1)+1];%注意必须使用“;”隔开
% f2=@(tu)[u(2);2*t/(1+t.^2)*u(2)-2/(1+t.^2)*u(1)];
% a=0;b=4;alpha=1.25;

评论

共有 条评论