QQ登录

只需要一步,快速开始

 注册地址  找回密码
查看: 1286|回复: 5
打印 上一主题 下一主题

线性微分方程边值问题打靶算法Matlab程序

[复制链接]
字体大小: 正常 放大

2620

主题

162

听众

1万

积分

升级  0%

  • TA的每日心情
    开心
    2015-3-12 15:35
  • 签到天数: 207 天

    [LV.7]常住居民III

    社区QQ达人 发帖功臣 新人进步奖 优秀斑竹奖 金点子奖 原创写作奖 最具活力勋章 助人为乐奖 风雨历程奖

    群组第六届国赛赛前冲刺培

    群组国赛讨论

    群组2014美赛讨论

    群组2014研究生数学建模竞

    群组数学中国试看培训视频

    跳转到指定楼层
    1#
    发表于 2014-10-6 10:35 |只看该作者 |倒序浏览
    |招呼Ta 关注Ta
    注意该算法只能完成二阶常微分方程双边值问题求解,至于其他形式的边值问题必须先转换到二阶形式

    对于下面的二阶常微分方程

    20090319_ee1f3a88f0e051ac1a7bZlH10CkxnFuy.gif

    file:///http://attach.matlabsky.com/data/attachment/forum/month_0903/20090319_ee1f3a88f0e051ac1a7bzlh10ckxnfuy.gif
    利用上面方程的线性结果和两个特殊的初值问题,我们可以构造两个等效的常微分初值方程初值问题,对于初值问题我们就可以直接使用ode**计算器或者龙哥库塔算法求解了。构造的两个初值问题为

    20090319_aef647afd9e5f3531724bbuILIol73n3.gif

    此时我们可以构造原微分方程的解为
    20090319_317956a9be701da19363jqIYCxERXeok.gif
    有上面的基础那我们很容编写直接边值问题的线性打靶算法,下面我写了一个供大家参考(参见附件),函数内部调用了自己编写的rk4()函数
    %线性方程边值问题的打靶算法
    %对微分方程y''=p*y'+q*y+r,a<t<b,u(a)=alpha,u(b)=beta,其中y,p,q和r都是x的函数
    %构造成两个等效的初值问题
    %u''=p*u'+q*u+r,u(a)=alpha,u'(a)=0
    %v''=p*v'+q*v,v(a)=beta,v'(a)=1
    %使用Matlab语言描述微分方程u和v,注意我们先必须化为一阶微分方程组
    %f1=@(t,u)[u(2);p*u(2)+q*u(1)+r];
    %f2=@(t,v)[v(2);p*v(2)+q*v(1)];
    %则原微分方程的解为
    %x=u+c*v=u+(beta-u(b))[img]file:///C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp\[LC3U)F{0XCAB)LKNIT0K@G.gif[/img](b)*v
    %
    %输入参数
    % f1 描述方程u的Matlab函数,只能是句柄(@()和M函数),或者inline函数
    % f2 描述方程v的Matlab函数
    % a,b 微分计算区间[a,b]
    % alpha,beta 上下边界
    % maxiter 最大迭代次数
    % 输出参数
    % [t,x] 坐标点t对应的微分值x
    %
    我们举一个例子吧,对于下面的二阶边值问题

    20090319_26b5bc282ca5d1a96d2fNt6OK1vPj0kU.gif

    f1=@(t,u)[u(2);2*t/(1+t.^2)*u(2)-2/(1+t.^2)*u(1)+1];%这里必须使用“;”隔开
    f2=@(t,u)[u(2);2*t/(1+t.^2)*u(2)-2/(1+t.^2)*u(1)];
    a=0;b=4;alpha=1.25;beta=-0.95;maxiter=1000;
    [t,x]=lineshoot(f1,f2,a,b,alpha,beta,maxiter);
    plot(t,x)
    复制代码

    20090319_91b2a46deb5b9a7a0fd3oIaDVwXjqUhX.jpg.thumb.jpg
    附件中的代码使用到了自己编写的四阶龙阁库塔算法rk4()函数,但是假如说对Matlab中的ode**函数比较熟悉的网友,可以直接调用ode45。

    下面给出参考代码,但是程序是将原来的边值问题转换为如下四个初值问题:

    20090319_6283cb31a95044720aa1uob2NLr6kQFz.gif
    游客,如果您要查看本帖隐藏内容请回复

    lineshoot.rar (1.68 KB, 下载次数: 0)
    zan
    转播转播0 分享淘帖0 分享分享0 收藏收藏0 支持支持0 反对反对0 微信微信
    深V礼        

    246

    主题

    24

    听众

    8718

    积分

  • TA的每日心情
    慵懒
    2014-11-8 19:08
  • 签到天数: 55 天

    [LV.5]常住居民I

    管理员

    超级版主

    版主

    发帖功臣 新人进步奖 优秀斑竹奖 金点子奖 原创写作奖 最具活力勋章 助人为乐奖 风雨历程奖

    回复

    使用道具 举报

    2802

    主题

    160

    听众

    8882

    积分

  • TA的每日心情
    开心
    2017-4-26 10:25
  • 签到天数: 491 天

    [LV.9]以坛为家II

    自我介绍
    即使不开心也不要皱眉,因为你永远不知道有谁会爱上你的微笑!

    社区QQ达人 发帖功臣 新人进步奖 最具活力勋章

    群组数学中国试看培训视频

    群组2017美赛两天强训

    群组2015司守奎matlab培训

    群组2016国赛优秀论文解析

    群组国赛护航思路养成班

    回复

    使用道具 举报

    36

    主题

    9

    听众

    1263

    积分

  • TA的每日心情

    2014-11-10 12:15
  • 签到天数: 104 天

    [LV.6]常住居民II

    2013挑战赛参赛者

    自我介绍
    我是一个性格外向,热爱数学的孩子

    群组2013电工杯A题讨论群组

    群组2013认证赛D题讨论群组

    群组2013年电工杯B题讨论群

    群组SAS数据分析大赛冲刺

    回复

    使用道具 举报

    1

    主题

    15

    听众

    39

    积分

    升级  35.79%

  • TA的每日心情
    慵懒
    2018-11-16 19:33
  • 签到天数: 15 天

    [LV.4]偶尔看看III

    自我介绍
    fan
    回复

    使用道具 举报

    jiay        

    0

    主题

    11

    听众

    51

    积分

    升级  48.42%

  • TA的每日心情
    奋斗
    2015-2-8 22:05
  • 签到天数: 6 天

    [LV.2]偶尔看看I

    自我介绍
    开朗活泼,热爱建模。

    邮箱绑定达人

    回复

    使用道具 举报

    您需要登录后才可以回帖 登录 | 注册地址

    qq
    收缩
    • 电话咨询

    • 04714969085
    fastpost

    关于我们| 联系我们| 诚征英才| 对外合作| 产品服务| QQ

    手机版|Archiver| |繁體中文 手机客户端  

    蒙公网安备 15010502000194号

    Powered by Discuz! X2.5   © 2001-2013 数学建模网-数学中国 ( 蒙ICP备14002410号-3 蒙BBS备-0002号 )     论坛法律顾问:王兆丰

    GMT+8, 2025-5-22 21:26 , Processed in 0.698132 second(s), 83 queries .

    回顶部