bobxia 发表于 2010-6-1 12:05:26

matlab求解非线性方程 fzero问题

function y=mySolveDeterminant(x,a,b)
L=0.570;E=206000000000;B=0.012;H=0.02;
% a=r/h;
% b=l/L;
fa=0.6384-1.035*a+3.7201*a^2-5.1773*a^3+7.553*a^4-7.332*a^5+6.779*a^6-6.9956*a^7+20.094*a^8-22.1145*a^9+6.9303*a^10+16.115*a^12;
k=E*B*H^2/(72*pi*a^2*fa);
I=B*H^3/12;
K=k*L/(E*I);
A=[1,0,1,0,0,0,0,0;
    0,1,0,1,0,0,0,0;
    cosh(x*b),sinh(x*b),cos(x*b),sin(x*b),-cosh(x*b),-sinh(x*b),-cos(x*b),-sin(x*b);
    cosh(x*b),sinh(x*b),-cos(x*b),-sin(x*b),-cosh(x*b),-sinh(x*b),cos(x*b),sin(x*b);
    0,0,0,0,cosh(x),sinh(x),-cos(x),-sin(x);
    0,0,0,0,sinh(x),cosh(x),sin(x),cos(x);
    sinh(x*b),cosh(x*b),sin(x*b),-cos(x*b),-sinh(x*b),-cosh(x*b),-sin(x*b),cos(x*b);
    K/x*sinh(x*b)+cosh(x*b),K/x*cosh(x*b)+sinh(x*b),-K/x*sin(x*b)-cos(x*b),K/x*cos(x*b)-sin(x*b),-K/x*sinh(x*b),K/x*cosh(x*b),K/x*sin(x*b),-K/x*cos(x*b)];
y=det(A);



for a=0.05:0.1:0.95
    for b=0.05:0.1:0.95
      x(a,b)=fzero(@(x) mySolveDeterminant(x,a,b),1);
    end
end

plot3(0.05:0.95,0.05:0.95,x)
运行老出现??? Subscript indices must either be real positive integers or logicals.
Error in ==> xfzero at 3
      x(a,b)=fzero(@(x) mySolveDeterminant(x,a,b),1);该怎么办

messenger 发表于 2010-6-1 17:32:15

数组下标应为整数,而你的a, b都是小数。另外,你的函数调用格式也不对。还是好好找一本Matlab基础知识书看看吧。
页: [1]
查看完整版本: matlab求解非线性方程 fzero问题