24小时热门版块排行榜    

查看: 532  |  回复: 4

zhycfb2009

新虫 (初入文坛)

[求助] 请问这段Matlab程序中哪里有错?

a=792;
b=9.8;
c=0.02255;
h=0.0283;
dydt=[
    y(2);
    (a*b*(h+y(1))/c-y(2)/(t*(1+y(2)^2)^(1/2)))*(1+y(2)^2)^(3/2);
     ];
[z y]=ode45(@equl,[0.00000001,0.00015],[0,0]);
plot(t,y(:,1),'-');
z=vpa(z,4);
e=y(:,1);
Matlab里面显示“??? Undefined function or method 'y' for input arguments of type 'double'.”请问怎么修改才能得到预想的X,Y点集?谢谢!
回复此楼

» 猜你喜欢

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

已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

jiji_n

木虫 (小有名气)

【答案】应助回帖

感谢参与,应助指数 +1
Undefined function or method 'y'
没有定义y
你的y是向量还是二维矩阵?
2楼2013-06-15 23:11:07
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

tianxd

木虫 (初入文坛)

【答案】应助回帖

感谢参与,应助指数 +1
你应该把dydt写成函数
3楼2013-06-16 22:26:39
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

zhycfb2009

新虫 (初入文坛)

引用回帖:
3楼: Originally posted by tianxd at 2013-06-16 22:26:39
你应该把dydt写成函数

噢,对,还没有定义函数,谢谢!function dydt=equl(t,y)
但还有一个问题。我定义函数后,把abch的数据进行了些修改。
发现还是有些问题。
如:
function dydt=equl(t,y)
a=5510;
b=9.8;
c=1.419;
h=0.02149;
dydt=[
    y(2);
    (a*b*(h+y(1))/c-y(2)/(t*(1+y(2)^2)^(1/2)))*(1+y(2)^2)^(3/2);
     ];
[z y]=ode45(@equl,[0.00000001,0.0025],[0,0]);
电脑显示“Warning: Failure at t=2.048343e-004.  Unable to meet integration tolerances without reducing the step size below the smallest value allowed
(4.336809e-019) at time t. ”
这又是为什么呢?或者怎么修改才好?
4楼2013-06-17 09:43:34
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

tianxd

木虫 (初入文坛)

【答案】应助回帖

步长过小,导致输出的矩阵过大,超出计算机存储空间容量
5楼2013-06-19 01:22:47
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
相关版块跳转 我要订阅楼主 zhycfb2009 的主题更新
信息提示
请填处理意见