24小时热门版块排行榜    

CyRhmU.jpeg
查看: 5393  |  回复: 24
当前只显示满足指定条件的回帖,点击这里查看本话题的所有回帖

馨香诺言

新虫 (小有名气)

[求助] matlab求解二阶微分方程已有3人参与

我想求解这样一个二阶微分方程(下图1),我使用了matlab边值函数,按着书上编写的程序如下(下图2),可为什么求不出来。提示错误:错误使用 bvp4c (line 251)
无法求解排列方程式 - 遇到了奇异性雅可比行列式。
有做过的大神帮忙给看看哪里出错了,不胜感激。

matlab求解二阶微分方程
1.jpg


matlab求解二阶微分方程-1
2.jpg
回复此楼

» 本帖附件资源列表

  • 欢迎监督和反馈:小木虫仅提供交流平台,不对该内容负责。
    本内容由用户自主发布,如果其内容涉及到知识产权问题,其责任在于用户本人,如对版权有异议,请联系邮箱:xiaomuchong@tal.com
  • 附件 1 : 程序.m
  • 2016-03-26 15:54:55, 561 bytes

» 猜你喜欢

» 本主题相关价值贴推荐,对您同样有帮助:

走好每一步!
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

Mr__Right

专家顾问 (著名写手)

【答案】应助回帖

感谢参与,应助指数 +1
引用回帖:
11楼: Originally posted by 馨香诺言 at 2016-03-28 10:32:51
是一篇中文文献,我上传了,红线标出了求解方程。他不是用边值法,他用的是四阶龙格库塔法。...

用Mathematica求解发现,当前的边值条件下可以得到两个完全符合条件的数值解。

非线性的微分方程其解的唯一性本来就难以确定,这看上去也很正常。这个问题因为简单,所以,两个解容易发现,复杂的问题就难说。

首先要把问题变成初值形式,比如y'[0]=某个给定的值,然后求微分方程,打靶、迭代直至给定的值求出微分方程数值解y[x]中对于的y[1]=1

给定了y'[0]=v 的情况下,求y[1]的函数写成这样:
CODE:
obj[v_] :=
Module[{yy1, y, x},
  yy1[x_] =
   y[x] /. NDSolve[{y''[x] ==
        204/100 (1 - x) (1 + y'[x]^2)^(1/2) + (1 + y'[x]^2)/y[x],
       y[0] == 1, y'[0] == v}, y[x], {x, 0, 2}][[1]];
  yy1[1]
  ]

绘图可以发现,这个函数等于1 (也就是y[1]=1)有两种初值v都能满足条件
matlab求解二阶微分方程-2

这两个初值分别是:
-2.58238958868605

-3.59253658799395

这用牛顿法对上面的函数等于1的方程,从-2 , -4初值出发迭代就可以分别得到
CODE:
FindRoot[obj[x] == 1, {x, -2}, Evaluated -> False]
FindRoot[obj[x] == 1, {x, -4}, Evaluated -> False]

然后可以求两个不同的非线性常微分方程的初值问题得到两个都满足条件的数值解。
matlab求解二阶微分方程-3
文章乃身外之物,要多考虑编辑、审稿人和读者的感受。
13楼2016-03-28 14:00:25
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

Mr__Right

专家顾问 (著名写手)

引用回帖:
14楼: Originally posted by 馨香诺言 at 2016-03-28 15:14:07
谢谢你的解答,你是用Mathematica这个软件求得整个过程吗?这个软件从没接触过。...

求解思路相似,用matlab也完全可以做到。

mathematica解决这个问题的好处是,

语法独特,代码简练。

matlab如果四阶荣格库塔,应该ode45
不过还要把微分方程改写成常微分方程组的形式,要单独写成一个函数,……
这些在mathematica中不是必须的;

而且对一个求解微分方程的过程作迭代的话,matlab中需要嵌套函数,
写法更加繁琐。没有mathematica的notebook演算方式自由。

听说R2016a的matlab中这方面功能有所增强,不妨试试去。
文章乃身外之物,要多考虑编辑、审稿人和读者的感受。
15楼2016-03-28 18:28:53
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

Mr__Right

专家顾问 (著名写手)

引用回帖:
19楼: Originally posted by 皓小天 at 2016-05-05 09:03:09
楼主提的问题的指数不是0.5而是1.5,你换成1.5试试?mathematica也报错吧...



你说试试我就去试试,那也太没面子了吧。

你是自己不会用软件、或对求解ODE/PDE问题不熟悉而已,不关我事。

专门的基础知识的私人辅导都是要收费的。
文章乃身外之物,要多考虑编辑、审稿人和读者的感受。
20楼2016-05-05 09:31:57
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

Mr__Right

专家顾问 (著名写手)

引用回帖:
21楼: Originally posted by 皓小天 at 2016-05-05 10:54:54
这么简单的问题,你有什么好洋气的,你自己看下面图结果,我就用你给出的方法。指数是1.5时,曲线根本没有0点,所以此方程无解的;而你用指数为0.5算才会有两个解,但指数为0.5直接用matlab的bvp方法就可以得到,初 ...

你是对的。非常感谢。
看来问题的确没有精确的解。
文章乃身外之物,要多考虑编辑、审稿人和读者的感受。
22楼2016-05-05 13:05:03
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
相关版块跳转 我要订阅楼主 馨香诺言 的主题更新
信息提示
请填处理意见