yuexiashuangfeng
2011-04-30, 16:26
function main()
for w2=1:1:100 %生成一个区间
p1=w2;
p2=p1+1;
eps=1.0e-4;
y=erfen(p1,p2,eps);
end
end
function y=erfen(a,b,eps) %二分法 a,b为区间端点,eps为精度
y1=f(a);
y2=f(b);
if y1*y2<0
n=1;
c=(a+b)/2;
mf=f(c);
while c>eps
if y1*mf<0
b=c;
c=(a+b)/2;
elseif mf*y2<0
a=c;
c=(a+b)/2;
else y=c; %eps=10000;
end
n=n+1;
end
y=c;
elseif f(a)==0
y=a;
elseif f(b)==0
y=b;
else
end
end
function f=f(w) %f函数
k1=1;
k=0.15;m2=7.8;b=0.1;h=0.1;m3=0.78;x3=1;
EI3=166.67;b1=b/2; b2=h/2; cc1=0; cc2=h/2;
J2=m2*(b*b+4*h*h)/12; r=(m3*w*w/(EI3))^(1/4);
U1=[1 0 0 0 0 0;0 1 0 0 0 -1/(k1);0 0 1 1/k 0 0 ;0 0 ...
0 1 0 1;0 0 0 0 1 0;0 0 0 0 0 1];
U2=[1 0 -b2 0 0 0;0 1 b1 0 0 0;0 0 1 0 0 0;-m2*w*w*(b2-cc2) ...
m2*w*w*(b1-cc1) -w*w*(J2-m2*(b2*cc2+b1*cc1)) 1 -b2 b1; ...
m2*w*w 0 -m2*w*w*cc2 0 1 0;0 m2*w*w m2*w*w*cc1 0 0 1];
U3=[1 0 0 0 0 0;0 S(r*x3) T(r*x3)/r U(r*x3)/(EI3*r*r) 0 ...
V(r*x3)/(EI3*r*r*r);0 r*V(r*x3) S(r*x3) T(r*x3)/(EI3*r) 0 ...
U(r*x3)/(EI3*r*r); 0 EI3*r*r*U(r*x3) EI3*r*V(r*x3) S(r*x3) 0 ...
T(r*x3)/r; m3*w*w*x3 0 0 0 1 0;0 EI3*r^3*T(r*x3) EI3*r*r*U(r*x3) ...
r*V(r*x3) 0 S(r*x3)];
Z=U3*U2*U1;
ZZ=Z(4:6,(4:6));
f=det(ZZ);
end
function T=T(x)
T=(sinh(x)+sin(x))/2;
end
function U=U(x)
U=(cosh(x)-cos(x))/2;
end
function S=S(x)
S=(cosh(x)+cos(x))/2;
end
function V=V(x)
V=(sinh(x)-sin(x))/2;
end
运行后错误提示信息
Error in ==> main>erfen at 12
y1=f(a);
??? Output argument "y" (and maybe others) not assigned during call to
"C:\Users\刘宗魁\Documents\MATLAB\新建文件夹\main.m>erfen".
Error in ==> main at 6
y=erfen(p1,p2,eps);
for w2=1:1:100 %生成一个区间
p1=w2;
p2=p1+1;
eps=1.0e-4;
y=erfen(p1,p2,eps);
end
end
function y=erfen(a,b,eps) %二分法 a,b为区间端点,eps为精度
y1=f(a);
y2=f(b);
if y1*y2<0
n=1;
c=(a+b)/2;
mf=f(c);
while c>eps
if y1*mf<0
b=c;
c=(a+b)/2;
elseif mf*y2<0
a=c;
c=(a+b)/2;
else y=c; %eps=10000;
end
n=n+1;
end
y=c;
elseif f(a)==0
y=a;
elseif f(b)==0
y=b;
else
end
end
function f=f(w) %f函数
k1=1;
k=0.15;m2=7.8;b=0.1;h=0.1;m3=0.78;x3=1;
EI3=166.67;b1=b/2; b2=h/2; cc1=0; cc2=h/2;
J2=m2*(b*b+4*h*h)/12; r=(m3*w*w/(EI3))^(1/4);
U1=[1 0 0 0 0 0;0 1 0 0 0 -1/(k1);0 0 1 1/k 0 0 ;0 0 ...
0 1 0 1;0 0 0 0 1 0;0 0 0 0 0 1];
U2=[1 0 -b2 0 0 0;0 1 b1 0 0 0;0 0 1 0 0 0;-m2*w*w*(b2-cc2) ...
m2*w*w*(b1-cc1) -w*w*(J2-m2*(b2*cc2+b1*cc1)) 1 -b2 b1; ...
m2*w*w 0 -m2*w*w*cc2 0 1 0;0 m2*w*w m2*w*w*cc1 0 0 1];
U3=[1 0 0 0 0 0;0 S(r*x3) T(r*x3)/r U(r*x3)/(EI3*r*r) 0 ...
V(r*x3)/(EI3*r*r*r);0 r*V(r*x3) S(r*x3) T(r*x3)/(EI3*r) 0 ...
U(r*x3)/(EI3*r*r); 0 EI3*r*r*U(r*x3) EI3*r*V(r*x3) S(r*x3) 0 ...
T(r*x3)/r; m3*w*w*x3 0 0 0 1 0;0 EI3*r^3*T(r*x3) EI3*r*r*U(r*x3) ...
r*V(r*x3) 0 S(r*x3)];
Z=U3*U2*U1;
ZZ=Z(4:6,(4:6));
f=det(ZZ);
end
function T=T(x)
T=(sinh(x)+sin(x))/2;
end
function U=U(x)
U=(cosh(x)-cos(x))/2;
end
function S=S(x)
S=(cosh(x)+cos(x))/2;
end
function V=V(x)
V=(sinh(x)-sin(x))/2;
end
运行后错误提示信息
Error in ==> main>erfen at 12
y1=f(a);
??? Output argument "y" (and maybe others) not assigned during call to
"C:\Users\刘宗魁\Documents\MATLAB\新建文件夹\main.m>erfen".
Error in ==> main at 6
y=erfen(p1,p2,eps);