声振论坛

 找回密码
 我要加入

QQ登录

只需一步,快速开始

查看: 1639|回复: 11

[编程技巧] 我这个程序所在的错误我弄不明白,请大家指点

[复制链接]
发表于 2007-5-13 15:59 | 显示全部楼层 |阅读模式

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

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

x
我要对一个悬臂梁振动前四阶振型进行求导,然后用matlab做出其图像,但是总是出现这个错误
的提示:??? Error using ==> plot
Vectors must be the same lengths.
请大家给予指点。


L=1;  %悬臂梁的度
C1=10;    %假设 C1
a1=1.875/L;
a2=4.694/L;
a3=7.855/L;
a4=7*pi/2*L;
x=0:0.01:1;

y1=C1*( cos(a1*x)-cosh(a1*x) + (cos(a1*L)+cosh(a1*L))*(sinh(a1*x)-sin(a1*x))/(sin(a1*L)+sinh(a1*L)) );
%第一阶振型函数
y2=C1*( cos(a2*x)-cosh(a2*x) + (cos(a2*L)+cosh(a2*L))*(sinh(a2*x)-sin(a2*x))/(sin(a2*L)+sinh(a2*L)) );
%第三阶振型函数
y3=C1*( cos(a3*x)-cosh(a3*x) + (cos(a3*L)+cosh(a3*L))*(sinh(a3*x)-sin(a3*x))/(sin(a3*L)+sinh(a3*L)) );
%第三阶振型函数
y4=C1*( cos(a4*x)-cosh(a4*x) + (cos(a4*L)+cosh(a4*L))*(sinh(a4*x)-sin(a4*x))/(sin(a4*L)+sinh(a4*L)) );
%第四阶振型函数

m1=diff(y1);
%对第一阶振型函数求导
m2=diff(y2);
%对第二阶振型函数求导
m3=diff(y3);
%对第三阶振型函数求导
m4=diff(y4);
%对第四阶振型函数求导

plot(x,m1,x,m2,x,m3,x,m4)
%绘各阶振型函数曲线
回复
分享到:

使用道具 举报

发表于 2007-5-13 16:05 | 显示全部楼层
求导之后,导数值比变量少了一个。

评分

1

查看全部评分

发表于 2007-5-13 16:06 | 显示全部楼层
提示不是写的很清楚吗,长度不同,x是101的,m1 m2 m3 m4都是100的
发表于 2007-5-13 16:10 | 显示全部楼层

看看这样行不行

L=1;  %悬臂梁的度
C1=10;    %假设 C1
a1=1.875/L;
a2=4.694/L;
a3=7.855/L;
a4=7*pi/2*L;
x=0:0.01:1;
xl=length(x)
y1=C1*( cos(a1*x)-cosh(a1*x) + (cos(a1*L)+cosh(a1*L))*(sinh(a1*x)-sin(a1*x))/(sin(a1*L)+sinh(a1*L)) );
%第一阶振型函数
y2=C1*( cos(a2*x)-cosh(a2*x) + (cos(a2*L)+cosh(a2*L))*(sinh(a2*x)-sin(a2*x))/(sin(a2*L)+sinh(a2*L)) );
%第三阶振型函数
y3=C1*( cos(a3*x)-cosh(a3*x) + (cos(a3*L)+cosh(a3*L))*(sinh(a3*x)-sin(a3*x))/(sin(a3*L)+sinh(a3*L)) );
%第三阶振型函数
y4=C1*( cos(a4*x)-cosh(a4*x) + (cos(a4*L)+cosh(a4*L))*(sinh(a4*x)-sin(a4*x))/(sin(a4*L)+sinh(a4*L)) );
%第四阶振型函数
m1=diff(y1);
m1l=length(m1)
%对第一阶振型函数求导
m2=diff(y2);
%对第二阶振型函数求导
m3=diff(y3);
%对第三阶振型函数求导
m4=diff(y4);
%对第四阶振型函数求导
xx=x(2:xl)
plot(xx,m1,xx,m2,xx,m3,xx,m4)
liang.bmp
发表于 2007-5-13 16:27 | 显示全部楼层
你的X输出有101个数,而y1,y2,y3,y4求导后都会少一个数,是100个。应该再定义一个X1=0.01:0.01:1。最后改为plot(x1,m1,x1,m2,x1,m3,x1,m4)就可以了
 楼主| 发表于 2007-5-13 19:11 | 显示全部楼层

请问这个程序改里面的哪个部分才能正确

L=1;  %悬臂梁的度
C1=10;    %假设 C1
a1=1.875/L;
a2=4.694/L;
a3=7.855/L;
a4=7*pi/2*L;
x=0:0.1:1;

y1=C1*( cos(a1*x)-cosh(a1*x) + (cos(a1*L)+cosh(a1*L))*(sinh(a1*x)-sin(a1*x))/(sin(a1*L)+sinh(a1*L)) );
%第一阶振型函数
y2=C1*( cos(a2*x)-cosh(a2*x) + (cos(a2*L)+cosh(a2*L))*(sinh(a2*x)-sin(a2*x))/(sin(a2*L)+sinh(a2*L)) );
%第三阶振型函数
y3=C1*( cos(a3*x)-cosh(a3*x) + (cos(a3*L)+cosh(a3*L))*(sinh(a3*x)-sin(a3*x))/(sin(a3*L)+sinh(a3*L)) );
%第三阶振型函数
y4=C1*( cos(a4*x)-cosh(a4*x) + (cos(a4*L)+cosh(a4*L))*(sinh(a4*x)-sin(a4*x))/(sin(a4*L)+sinh(a4*L)) );
%第四阶振型函数

m1=diff(y1,2);
m2=diff(y2,2);
m3=diff(y3,2);
m4=diff(y4,2);

x1=0.01:0.01:1;

subplot(4,1,1)
plot(x,m1)%绘第一阶振型函数曲线
subplot(4,1,2)
plot(x,m2)%绘第二阶振型函数曲线
subplot(4,1,3)
plot(x,m3)%绘第三阶振型函数曲线
subplot(4,1,4)
plot(x,m4)%绘第四阶振型函数曲线
发表于 2007-5-13 19:43 | 显示全部楼层
前面的帖子不是有人给你回过了吗
 楼主| 发表于 2007-5-13 19:45 | 显示全部楼层
我对振型函数求了二阶导数后,还是弄不明白,改了相关参数后,结果还是不正确
发表于 2007-5-13 19:53 | 显示全部楼层
diff是求差分,对一个向量求n阶差分,就会少n个点。你把x的前两个点去掉再画图
 楼主| 发表于 2007-5-13 20:02 | 显示全部楼层
这样改后还是有错误,我还是不明白

L=1;  %悬臂梁的度
C1=10;    %假设 C1
a1=1.875/L;
a2=4.694/L;
a3=7.855/L;
a4=7*pi/2*L;
x=0:0.01:1;
x1=0.02:0.01:1;

y1=C1*( cos(a1*x)-cosh(a1*x) + (cos(a1*L)+cosh(a1*L))*(sinh(a1*x)-sin(a1*x))/(sin(a1*L)+sinh(a1*L)) );
%第一阶振型函数
y2=C1*( cos(a2*x)-cosh(a2*x) + (cos(a2*L)+cosh(a2*L))*(sinh(a2*x)-sin(a2*x))/(sin(a2*L)+sinh(a2*L)) );
%第三阶振型函数
y3=C1*( cos(a3*x)-cosh(a3*x) + (cos(a3*L)+cosh(a3*L))*(sinh(a3*x)-sin(a3*x))/(sin(a3*L)+sinh(a3*L)) );
%第三阶振型函数
y4=C1*( cos(a4*x)-cosh(a4*x) + (cos(a4*L)+cosh(a4*L))*(sinh(a4*x)-sin(a4*x))/(sin(a4*L)+sinh(a4*L)) );
%第四阶振型函数


z1=diff(y1);
z2=diff(y2);
z3=diff(y3);
z4=diff(y4);


subplot(4,1,1)
plot(x1,z1)%绘第一阶振型函数曲线
subplot(4,1,2)
plot(x1,z2)%绘第二阶振型函数曲线
subplot(4,1,3)
plot(x1,z3)%绘第三阶振型函数曲线
subplot(4,1,4)
plot(x1,z4)%绘第四阶振型函数曲线
??? Error using ==> plot
Vectors must be the same lengths.
 楼主| 发表于 2007-5-13 20:06 | 显示全部楼层
谢谢大家 我终于摸索出来了
L=1;  %悬臂梁的度
C1=10;    %假设 C1
a1=1.875/L;
a2=4.694/L;
a3=7.855/L;
a4=7*pi/2*L;
x=0:0.01:1;
x1=0.02:0.01:1;

y1=C1*( cos(a1*x)-cosh(a1*x) + (cos(a1*L)+cosh(a1*L))*(sinh(a1*x)-sin(a1*x))/(sin(a1*L)

+sinh(a1*L)) );
%第一阶振型函数
y2=C1*( cos(a2*x)-cosh(a2*x) + (cos(a2*L)+cosh(a2*L))*(sinh(a2*x)-sin(a2*x))/(sin(a2*L)

+sinh(a2*L)) );
%第三阶振型函数
y3=C1*( cos(a3*x)-cosh(a3*x) + (cos(a3*L)+cosh(a3*L))*(sinh(a3*x)-sin(a3*x))/(sin(a3*L)

+sinh(a3*L)) );
%第三阶振型函数
y4=C1*( cos(a4*x)-cosh(a4*x) + (cos(a4*L)+cosh(a4*L))*(sinh(a4*x)-sin(a4*x))/(sin(a4*L)

+sinh(a4*L)) );
%第四阶振型函数


z1=diff(y1,2);
z2=diff(y2,2);
z3=diff(y3,2);
z4=diff(y4,2);


subplot(4,1,1)
plot(x1,z1)%绘第一阶振型函数曲线
subplot(4,1,2)
plot(x1,z2)%绘第二阶振型函数曲线
subplot(4,1,3)
plot(x1,z3)%绘第三阶振型函数曲线
subplot(4,1,4)
plot(x1,z4)%绘第四阶振型函数曲线

评分

1

查看全部评分

发表于 2012-12-13 16:21 | 显示全部楼层
我想请问,那个C1为什么取10??
您需要登录后才可以回帖 登录 | 我要加入

本版积分规则

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

GMT+8, 2024-11-19 00:57 , Processed in 0.134370 second(s), 28 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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