24小时热门版块排行榜    

查看: 2522  |  回复: 11

zzstephen

新虫 (初入文坛)

[求助] 【紧急求助】 带有微分平方项的ODE求解

dx/(1+(dx)^2) + x = 0.1sin(2t)   

想用 Matlab 解,自己弄了很久了  dsolve 解不出来, 又不知道怎么转化成ode45 能解的格式,请大家帮帮忙,解析解或者数值解的方法都好
回复此楼
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

guojunhang

金虫 (正式写手)


soliton923(金币+1): 谢谢参与讨论~~~ 2011-11-06 18:01:45
现在感觉这个问题属于“提法不当”,但是又看不出来。
我认为你这个方程的形式要稍微变换一下,再写出来。
变成一般的微分方程,大家好讨论
比如说
f(t,x,dx/dt,....) = 0
的形式。
2楼2011-11-06 14:40:34
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

yimeng123456

铁虫 (小有名气)

【答案】应助回帖


soliton923(金币+1): 谢谢参与讨论~~~ 2011-11-06 18:01:55
换成微分方程组呗 令dx=y ,再对y求导
3楼2011-11-06 17:37:47
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

meveny

银虫 (初入文坛)

【答案】应助回帖

我试了下,貌似没法直接用MATLAB的ode45求解,因为求不出dx.是否可以先用符号函数求解工具(maple?)解二次方程求出dx,再用matlab的ode45做?
4楼2011-11-06 19:48:41
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

dingd

铁杆木虫 (职业作家)

【答案】应助回帖

zzstephen(金币+1): 多谢提供解题思路!后来用matlab 的 ode15i 可以解,对比之后跟你的答案相同。 2011-11-07 00:37:59
有点类似隐式微分方程了,用1stOpt应该可以求解,假设x初值为0.1,t范围=【0,2*pi】:
CODE:
Variable t=[0,2*pi], x=0.1;
Plot x;
ODEFunction x' = (0.1*sin(2*t)-x)*(1+(x')^2);

t        x(t)
0        0.1
0.20943951        0.0850711745007771
0.41887902        0.0801305233227716
0.62831853        0.0813026887426947
0.83775804        0.0846100642268956
1.0471976        0.0864196821522688
1.2566371        0.0839373785627877
1.4660766        0.0755683106928769
1.6755161        0.0610888133870998
1.8849556        0.0416396783046324
2.0943951        0.019519065516734
2.3038346        -0.00226168631502244
2.5132741        -0.0206005920207564
2.7227136        -0.0329220995968774
2.9321531        -0.0376176957124688
3.1415927        -0.0342741951426507
3.3510322        -0.0237389947743921
3.5604717        -0.00803680859667298
3.7699112        0.00991370306354871
3.9793507        0.026808362307764
4.1887902        0.039582546783106
4.3982297        0.0459562014148314
4.6076692        0.0447762626323625
4.8171087        0.0361645432606872
5.0265482        0.0215109045350385
5.2359878        0.00329051787674805
5.4454273        -0.0153456621450357
5.6548668        -0.0311675068120555
5.8643063        -0.0414765431671204
6.0737458        -0.0445541890163028
6.2831853        -0.0398986264011418


5楼2011-11-06 21:43:51
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

zzstephen

新虫 (初入文坛)

引用回帖:
2楼: Originally posted by guojunhang at 2011-11-06 14:40:34:
现在感觉这个问题属于“提法不当”,但是又看不出来。
我认为你这个方程的形式要稍微变换一下,再写出来。
变成一般的微分方程,大家好讨论
比如说
f(t,x,dx/dt,....) = 0
的形式。

恩,这个问题我也困扰了很久,后来发现这个是隐式的微分方程要用ode15i 解
6楼2011-11-07 00:39:23
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

zzstephen

新虫 (初入文坛)

引用回帖:
2楼: Originally posted by guojunhang at 2011-11-06 14:40:34:
现在感觉这个问题属于“提法不当”,但是又看不出来。
我认为你这个方程的形式要稍微变换一下,再写出来。
变成一般的微分方程,大家好讨论
比如说
f(t,x,dx/dt,....) = 0
的形式。

试过了,可能水平不够没弄出来,呵呵。谢谢回复!
7楼2011-11-07 00:40:53
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

zzstephen

新虫 (初入文坛)

引用回帖:
4楼: Originally posted by meveny at 2011-11-06 19:48:41:
我试了下,貌似没法直接用MATLAB的ode45求解,因为求不出dx.是否可以先用符号函数求解工具(maple?)解二次方程求出dx,再用matlab的ode45做?

多谢牛人!根据你的思路后来发现 matlab ode15i 可以解,答案跟你贴出来的一样
8楼2011-11-07 00:42:08
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

zzstephen

新虫 (初入文坛)

引用回帖:
7楼: Originally posted by zzstephen at 2011-11-07 00:40:53:
试过了,可能水平不够没弄出来,呵呵。谢谢回复!

matlab 代码,遇到同样问题的筒子可以瞄一眼

f = @(t,x,dx) dx + (x-0.1*sin(2*t))*(1+dx^2);
t0 = 0;
x0 = 0.1;
[x0mod,dx0mod] = decic(f,t0,x0,[],0,[]);
[t,x] = ode15i(f,[0 2*pi],x0mod,dx0mod);
plot(t,x,'o-')
9楼2011-11-07 00:45:57
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

zhangjob

捐助贵宾 (著名写手)

我这有ode45包的模版
以前不懂,看贴总是不回,一直没赚到金币,也没成为泰斗精英;现在我明白了,回贴赚金币,不回白不回,回了也白回,于是,我就把这句话复制下来,遇贴就回,捞经
10楼2012-05-25 13:49:17
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
相关版块跳转 我要订阅楼主 zzstephen 的主题更新
信息提示
请填处理意见