声振论坛

 找回密码
 我要加入

QQ登录

只需一步,快速开始

查看: 1221|回复: 3

[求助]大家帮我看看这个程序的一个warning,怎么解决

[复制链接]
发表于 2005-12-26 13:27 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?我要加入

x
<BR>m文件:<BR>function dx=rotor_fun(t,x);<BR>  %canshu<BR>   g=9.8;<BR>   c1=1.25*10^(-5);<BR>   delta=4.5852*10^(-2);<BR>   beta=1.1404*10^(-2);<BR>   omega=50;<BR>   omegag=omega*g^(1/2)/c1^(1/2);<BR>   dx=zeros(4,1);<BR>%fangcheng<BR>   dx(1,1)=x(3);<BR>   dx(2,1)=x(4);<BR>   dx(3,1)=beta*cos(t)-delta/omega*(((2*x(1)^2+2*x(2)^2-4*x(1)*x(4)+4*x(2)*x<BR>(3))/(1-x(1)^2-x(2)^2)^(1/2)/(2+x(1)^2+x(2)^2)+(pi-16/pi/(2+x(1)^2+x(2)^2))*<BR>(x(1)*x(3)+x(2)*x(4))/(x(1)^2+x(2)^2)^(1/2)/(1-x(1)^2-x(2)^2)^(3/2))*cos(t)+<BR>(pi*(x(1)^2+x(2)^2)^(1/2)*(1-2*(x(1)*x(4)-x(2)*x(3))/(x(1)^2+x(2)^2))/(1-x(1<BR>)^2-x(2)^2)^(1/2)/(2+x(1)^2+x(2)^2)+4*(x(1)*x(3)+x(2)*x(4))/(2+x(1)^2+x(2)^2<BR>)/(1-x(1)^2-x(2)^2))*sin(t));             <BR> dx(4,1)=beta*sin(t)-1/omega^2 -delta/omega*(((2*x(1)^2+2*x(2)^2-4*x(1)*x(<BR>4)+4*x(2)*x(3))/(1-x(1)^2-x(2)^2)^(1/2)/(2+x(1)^2+x(2)^2)+(pi-16/pi/(2+x(1)^<BR>2+x(2)^2))*(x(1)*x(3)+x(2)*x(4))/(x(1)^2+x(2)^2)^(1/2)/(1-x(1)^2-x(2)^2)^(3/<BR>2))*sin(t)-(pi*(x(1)^2+x(2)^2)^(1/2)*(1-2*(x(1)*x(4)-x(2)*x(3))/(x(1)^2+x(2)<BR>^2))/(1-x(1)^2-x(2)^2)^(1/2)/(2+x(1)^2+x(2)^2)+4*(x(1)*x(3)+x(2)*x(4))/(2+x(<BR>1)^2+x(2)^2)/(1-x(1)^2-x(2)^2))*cos(t));<BR>m文件:<BR>clear all;<BR>clc;<BR>x0=[0.001; 0; 0; 0];<BR>t0=[0:10000];<BR>[t,x]=ode23s('rotor_fun',t0,x0);<BR>x<BR>plot(t,x(:,1));<BR>。Warning: Failure at t=1.251361e+002.  Unable to meet integration tolerance<BR>s without reducing the step size below the smallest value allowed (4.445726e<BR>-013) at time t.<BR>(Type "warning off MATLAB:ode23s:IntegrationTolNotMet" to suppress this warn<BR>ing.)<BR>&gt; In D:\MATLAB\toolbox\matlab\funfun\ode23s.m at line 431<BR>  In D:\MATLAB\work\rotor.m at line 5<BR>                                          
回复
分享到:

使用道具 举报

发表于 2005-12-26 16:36 | 显示全部楼层
warning的意思是说:程序运行到t=1.251361e+002时出错。<BR>在时间t时,如果不减小步长,就不能满足积分误差最低容许值4.445726e-013,也就是说误差在这一点大于4.445726e-013。<BR>它给的解决办法是编辑ode。m使其误差大于默认值时不报错,<BR>我建议尽量不要改变其源程序,如果你的数学水平不是很高的话。<BR>问题可以通过减小积分步长来解决
 楼主| 发表于 2005-12-26 18:01 | 显示全部楼层
在不改变源程序的情况下,怎么改变步长啊?<BR>options?
发表于 2005-12-27 16:38 | 显示全部楼层
t0=[0:10000];<BR>设置是步长,默认为1<BR>你可以这样设t0=[0:0.1:10000];此时步长就是0.1<BR><BR>
您需要登录后才可以回帖 登录 | 我要加入

本版积分规则

QQ|小黑屋|Archiver|手机版|联系我们|声振论坛

GMT+8, 2024-6-12 06:56 , Processed in 0.055998 second(s), 18 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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