24小时热门版块排行榜    

查看: 979  |  回复: 7
当前只显示满足指定条件的回帖,点击这里查看本话题的所有回帖

lkcool7

新虫 (初入文坛)

[求助] 运行matlab程序中自定义函数时出问题了,还请大神帮忙!谢谢已有1人参与

我自定义了三个函数Y1(),Y2(),Y3(),三个函数只是内部参数k发生变
在这里我给出Y1()代码

function h=Y1(x)

%参数
k=0.1884;l=25.5;pA=1070;
u=cosh(k*x)+cos(k*x)-((sinh(k*x)+sin(k*x))*(cosh(k*l)-cos(k*l)))/(sinh(k*l)-sin(k*l));

a=sqrt(pA*eval(int(u^2,x,0,l)));
h=u/a;

下面是主程序,目的在于绘出Y1,Y2,Y3曲线图。
clear
clc
x=0.1:0.1:25.5;

for m=1:1:255
y1(m)=Y1(x(m));
end
for m=1:1:255
y2(m)=Y2(x(m));
end
for m=1:1:255
y3(m)=Y3(x(m));
end
plot(x,y1);
hold on
plot(x,y2);
hold on
plot(x,y3);
hold on

运行是程序在调用Y1()时出错,提示为

??? Undefined function or method 'int' for input arguments of type 'double'.

Error in ==> Y1 at 4
a=sqrt(pA*eval(int(u^2,x,0,l)));

Error in ==> zhenxing at 6
y1(m)=Y1(x(m));

也就是在Y1()中调用int积分函数时出错,为什么会这样啊?????如果我将a=sqrt(pA*eval(int(u^2,x,0,l)));提前算出,直接将这行替换为a=169.2216;却可以运行,并最后绘制出我要的曲线。但是在我自己定义的函数中调用int()居然会出错?求大神帮助! 谢谢
回复此楼

» 猜你喜欢

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

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

小木虫zb

木虫 (正式写手)

楼主最好把公式和你想解决的问题完整的放上来
5楼2015-11-13 20:59:56
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
查看全部 8 个回答

转基因奔奔

金虫 (初入文坛)

【答案】应助回帖

感谢参与,应助指数 +1
你的u是一个数,不是一个表达式,对一个数怎么积分嘞?
2楼2015-11-13 09:31:55
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

lkcool7

新虫 (初入文坛)

引用回帖:
2楼: Originally posted by 转基因奔奔 at 2015-11-13 09:31:55
你的u是一个数,不是一个表达式,对一个数怎么积分嘞?

u=cosh(k*x)+cos(k*x)-((sinh(k*x)+sin(k*x))*(cosh(k*l)-cos(k*l)))/(sinh(k*l)-sin(k*l));
这个是u的定义,是以x为自变量的函数啊
3楼2015-11-13 12:15:17
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

转基因奔奔

金虫 (初入文坛)

【答案】应助回帖

★ ★ ★ ★ ★
lkcool7: 金币+5, ★★★很有帮助 2015-11-16 09:57:06
你的x是以输入变量的形式带入的,每次循环都是以一个数作为x输入的。MATLAB会自动解算出u的数值,而不是把u当做一个表达式
4楼2015-11-13 16:52:07
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
信息提示
请填处理意见