查看: 1773|回复: 23|关注: 0

[已解决] MATLAB解微分方程并画图

[复制链接]

新手

14 麦片

财富积分


050


11

主题

28

帖子

0

最佳答案
本帖最后由 top123 于 2018-2-28 11:23 编辑

如图微分方程,怎么在MATLAB中画出m与h的关系图?h是自变量,其他为参数,
ms=1.7e6
α=0.001
a=1000
k=2000
c=0.1
文献上提到用四阶龙格库塔法,怎么使用,谢谢
QQ图片20180228111821.png
QQ图片20180228111828.png

论坛优秀回答者

专家

2024 麦片

财富积分


20003000


4

主题

4095

帖子

464

最佳答案
  • 关注者: 278
发表于 2018-3-1 11:55:54 | 显示全部楼层 |此回复为最佳答案
本帖最后由 halleyhit 于 2018-3-1 12:00 编辑

  • 帮助里有这么一句话

  • Fully implicit ODEs of the form f(t,y,y')=0. Fully implicit ODEs cannot be rewritten in an explicit form, and might also contain some algebraic variables. The ode15i solver is designed for fully implicit problems, including index-1 DAEs.

所以你应该是用ode15i函数

新手

14 麦片

财富积分


050


11

主题

28

帖子

0

最佳答案
 楼主| 发表于 2018-3-1 14:01:13 | 显示全部楼层
halleyhit 发表于 2018-3-1 11:55
  • 帮助里有这么一句话

  • 请问能具体一点吗?就是怎么实现龙格库塔法的?程序上应该怎么实现?谢谢

    论坛优秀回答者

    专家

    2024 麦片

    财富积分


    20003000


    4

    主题

    4095

    帖子

    464

    最佳答案
    • 关注者: 278
    发表于 2018-3-1 14:05:09 | 显示全部楼层
    top123 发表于 2018-3-1 14:01
    请问能具体一点吗?就是怎么实现龙格库塔法的?程序上应该怎么实现?谢谢 ...

    你看了ode15i函数的帮助吗?

    新手

    14 麦片

    财富积分


    050


    11

    主题

    28

    帖子

    0

    最佳答案
     楼主| 发表于 2018-3-1 14:30:41 | 显示全部楼层
    halleyhit 发表于 2018-3-1 14:05
    你看了ode15i函数的帮助吗?

    看过了,ode15i是用来解隐式常微分方程的,但是我的目标函数应该怎么写呢?怎么把图片里的两个式子转换成ode15i里面的那个odefun呢?第一个式子要是代入第二个式子应该可以,但是要手动带入吗?MATLAB可以处理吗?谢谢

    论坛优秀回答者

    专家

    2024 麦片

    财富积分


    20003000


    4

    主题

    4095

    帖子

    464

    最佳答案
    • 关注者: 278
    发表于 2018-3-1 14:35:29 | 显示全部楼层
    top123 发表于 2018-3-1 14:30
    看过了,ode15i是用来解隐式常微分方程的,但是我的目标函数应该怎么写呢?怎么把图片里的两个式子转换成 ...

    从你的方程上看,隐式微分方程,matlab系统自带就只有这个函数
    至于怎么把方程输到函数里,可能要变个形啥的,这些应该是你的工作

    新手

    14 麦片

    财富积分


    050


    11

    主题

    28

    帖子

    0

    最佳答案
     楼主| 发表于 2018-3-1 17:01:47 | 显示全部楼层
    halleyhit 发表于 2018-3-1 14:35
    从你的方程上看,隐式微分方程,matlab系统自带就只有这个函数
    至于怎么把方程输到函数里,可能要变个形 ...

    我刚把第一个方程用隐函数求导的方法求出了导数,带入了第二个方程中,转换成了一般的常微分方程,然后用ode45函数求解,但是运行报错说输入不是单精度与双精度浮点值,应该如何解决?谢谢

    论坛优秀回答者

    专家

    2024 麦片

    财富积分


    20003000


    4

    主题

    4095

    帖子

    464

    最佳答案
    • 关注者: 278
    发表于 2018-3-2 09:48:05 | 显示全部楼层
    top123 发表于 2018-3-1 17:01
    我刚把第一个方程用隐函数求导的方法求出了导数,带入了第二个方程中,转换成了一般的常微分方程,然后用 ...

    我不太清楚你是怎么按照第一个方程求导,再代入的
    但如果你是要用ode45显式方法的化,倒是有个思路:
    1.第一个方程,用fsolve方法求出一系列H-Man对应点列
    2.用diff差分或者gradient对点列求导,求出一系列H-dMan/dH点列
    3.利用两个点列,通过interp1做两个function,用来算Man(H)和dMandH(H)
    4.第二个方程右边的Man和Man求导用两个function代替,右侧的变量只有M和H
    5.此时方程形式满足显式标准形式,直接ode45

    新手

    14 麦片

    财富积分


    050


    11

    主题

    28

    帖子

    0

    最佳答案
     楼主| 发表于 2018-3-7 10:34:13 | 显示全部楼层
    本帖最后由 top123 于 2018-3-7 10:43 编辑
    halleyhit 发表于 2018-3-2 09:48
    我不太清楚你是怎么按照第一个方程求导,再代入的
    但如果你是要用ode45显式方法的化,倒是有个思路:
    1. ...

    您好,我明白您的思路,感觉很好,正在按这个思路做,但是第二步我是用隐函数求导的方法直接求出了H-dMan/dH点列,没用第一步,但是您说的第一步那个用fsolve方法求出一系列H-Man对应点列应该怎么写呢?我程序编了几次总是报错,您能给个这块的参考程序吗?谢谢

    论坛优秀回答者

    专家

    2024 麦片

    财富积分


    20003000


    4

    主题

    4095

    帖子

    464

    最佳答案
    • 关注者: 278
    发表于 2018-3-7 12:24:18 | 显示全部楼层
    top123 发表于 2018-3-7 10:34
    您好,我明白您的思路,感觉很好,正在按这个思路做,但是第二步我是用隐函数求导的方法直接求出了H-dMan/ ...

    你说的和写的,都是符号运算
    我说的都是数值计算
    完全是两个概念,你要摆脱掉求导这种操作,用数值的方法去计算
    您需要登录后才可以回帖 登录 | 注册

    本版积分规则

    关闭

    站长推荐上一条 /3 下一条

    快速回复 返回顶部 返回列表