zoukankan      html  css  js  c++  java
  • 打靶法求解两点边值问题

    function varargout = shooting_two_point_boundary(varargin)
    % ==========================================================
    % 函数名:shooting_two_point_boundary.m
    % 基于打靶法计算两点边值问题,仅针对二阶微分方程
    % author: xianfa110.
    % blog: http://blog.sina.com.cn/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
        flg=1;
    else
        t1=t0+1;
        y1=rkkt(F,[y_0,t1],x_0,x_1,ts);
        if abs(y1(n,1)-y_end)<=kesi
            flg=1;
        end
    end
    if flg ~= 1
        while abs(y1(n,1)-y_end) > kesi
            % ==========插值法求解非线性方程=============== %
            t2 = t1-(y1(n,1)-y_end)*(t1-t0)/(y1(n,1)-y0(n,1));
            y2 = rkkt(F,[y_0,t2],x_0,x_1,ts);
            t0=t1;
            t1=t2;
            y0=y1;
            y1=y2;
        end
    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;
    

    转载:http://blog.sina.com.cn/s/blog_408540af0100b7mi.html

  • 相关阅读:
    Mac下启动Apache
    Mac OS X中配置Apache
    catransition type
    Block
    mysql 复制表结构和表数据的区别 like 和 select
    mysql kill掉所有的锁表的进程 未验证
    MySQL所有函数及操作符
    linux各种复制命令
    Mac mysql 导入导出数据库
    数据库总结
  • 原文地址:https://www.cnblogs.com/txy19981002/p/7193735.html
Copyright © 2011-2022 走看看