倪举鹏 发表于 2014-7-7 09:09:50

谁软件画下这个方程图

y/(1-x)=1/2*(1+y'^2)^(1/2)-y'   y(0)=0   y(1)=0   求数值解画图两大软件直接罢工了   谁还有办法

kastin 发表于 2014-7-7 11:29:16

本帖最后由 kastin 于 2014-7-7 12:30 编辑

一阶常微分方程,只需要一个初值条件即可,不需要形成边值条件。
% matlab codes
odefun=@(x,y)fsolve(@(dy)sqrt(1+dy^2)-dy-y/(1-x),x);
xspan=; %求解区间为
y0=0;% 初值y(0)=0
=ode45(odefun,xspan,y0);
plot(x,y,'.-'), axis equal
看上去像是半圆

wayne 发表于 2014-7-7 11:47:58

我的不太一样:

kastin 发表于 2014-7-7 13:05:37

wayne 发表于 2014-7-7 11:47
我的不太一样:

我用Mathematica求出微分方程根

选取其中第二个正根,然后用matlab求解微分方程
odefun=@(x,y)(sqrt((x-1)^2*(3*x^2-6*x+4*y^2+3))+4*(x-1)*y)/3/(x-1)^2;
=ode45(odefun,,0);
plot(x,y,'.-'),axis()
结果是

下面是Mathematica解的正半支。

倪举鹏 发表于 2014-7-8 08:42:22

嗯是这样的。估计我用的函数命令不同导致画不出。这是高中时候思考的一个国际物理竞赛题:质点在原点,被(1,0)点的线拴着,质点受向上电场力E,受摩擦力f   f>=E.现在绳子慢慢变短,求质点运动过的轨迹。原题直接是E=f结果是半圆。这里我列的是f/E=2的方程

wayne 发表于 2014-7-8 19:37:12

kastin 发表于 2014-7-7 11:29
一阶常微分方程,只需要一个初值条件即可,不需要形成边值条件。

看上去像是半圆

这个应该用ode15i 函数恰当些。
http://www.mathworks.cn/cn/help/matlab/ref/ode15i.html

wayne 发表于 2014-7-8 20:03:48

断断续续花了两天时间,下载安装了个MATLAB r2014a,测试了ode15i函数:




===
所以,我想要说的是,工具永远只是工具,工具出问题了不要第一反应就归咎于工具:
楼主请收回你说的这句话: 求数值解画图两大软件直接罢工了
页: [1]
查看完整版本: 谁软件画下这个方程图