huzhaolin 发表于 2006-3-30 17:49

matlab求解振动微分方程组中出现的问题

振动方程组简化如下:x''+x'+y'-f(x,y)(x+y)=g;<BR>                                 y''+x'+y'+f(x,y)(x-y)=k;<BR>                                 g,k为已知量,if (x+y)&gt;=0<BR>                                                            f(x,y)=1<BR>                                                            else<BR>                                                         f(x,y)=0;<BR>如何用ode(45)进行求解!!!!!!!!<BR>

happy 发表于 2006-3-30 17:50

回复:(huzhaolin)matlab求解振动微分方程组中出现的...

把方程转化到状态空间,然后写成function,其中包含对f(x,y)的判断<BR>然后直接调用ode45就行了

huzhaolin 发表于 2006-3-30 18:34

<P>function F=fun(t,f)<BR>if(f(1)+f(2)&gt;=0);<BR>f(e)=1<BR>else<BR>f(e)=0;<BR>F=<BR>=ode(@fun,0,10,0,0,0,0)<BR>请问这样可以吗?<BR>   <BR></P>

happy 发表于 2006-3-30 18:37

回复:(huzhaolin)function F=fun(t,f)if(f(1)+f(2)...

<DIV class=quote><B>以下是引用<I>huzhaolin</I>在2006-3-30 18:34:21的发言:</B><BR>
<P>function F=fun(t,f)<BR>if(f(1)+f(2)&gt;=0);<BR>f(e)=1<BR>else<BR>f(e)=0;<BR>F=<BR>=ode(@fun,0,10,0,0,0,0)<BR>请问这样可以吗?<BR>   <BR></P></DIV>
<br>你这里的f是什么东西?

huzhaolin 发表于 2006-3-30 18:43

<P>令f(1)=y,f(2)=x,f(3)=x',f(4)=y';<BR>function F=fun(t,f)<BR>if(f(1)+f(2)&gt;=0);<BR>fe=1<BR>else<BR>fe=0;<BR>F=<BR>=ode(@fun,0,10,0,0,0,0)</P>

happy 发表于 2006-3-30 18:49

回复:(huzhaolin)令f(1)=y,f(2)=x,f(3)=x',f(4)=y'...

<DIV class=quote><B>以下是引用<I>huzhaolin</I>在2006-3-30 18:43:24的发言:</B><BR>
<P><FONT color=#ff0000>令f(1)=y,f(2)=x,f(3)=x',f(4)=y';<BR></FONT>function F=fun(t,f)<BR>if(f(1)+f(2)&gt;=0);<BR>fe=1<BR>else<BR>fe=0;<BR>F=<BR>=ode(@fun,0,10,0,0,0,0)</P></DIV>
<P>??????</P>

huzhaolin 发表于 2006-3-30 18:55

<P>我这是大致步骤,是个大致草稿,请问是不是这样进行求解的。谢谢教授!</P>

happy 发表于 2006-3-30 18:57

回复:(huzhaolin)matlab求解振动微分方程组中出现的...

是的
页: [1]
查看完整版本: matlab求解振动微分方程组中出现的问题