chinasnowlee 发表于 2011-9-13 21:16:40

请教高手谢谢~~

function = neilijisuanVM2(x,x1,x2,l1)
   VM2=zeros(size(x));
if x>=0&x<=x1
         VM2 = 1/(6*l1)*((-0.5*x1^2+x1*x2-0.5*x2^2)*6*x+(0.5*x1^3-1.5*x1*x2^2+x2^3)*2);
elseif x>x1&x<=x2
         VM2 = 1/(6*l1)*(x^3-3*x1*x^2+(x1*x2-0.5*x1^2)*6*x+2*(x2^3-1.5*x1*x2^2));
       else
         VM2 = 0;
end


这是我的m文件,
当我计算VM2=neilijisuanVM2(0:0.5:14,0,3,3)的时候,得出的结果只有一个值VM2=0;
很不解!我觉得应该是一个1乘29的才对的嘛~谢谢

mhkmars 发表于 2011-9-13 23:45:35

你调用函数的时候,你的x用的是向量,x1,x2为数值。所以你的函数只会运行else下的那一行,因此总是0;
建议你重新看下你的函数的调用格式

chinasnowlee 发表于 2011-9-14 13:03:45

mhkmars 发表于 2011-9-13 23:45 static/image/common/back.gif
你调用函数的时候,你的x用的是向量,x1,x2为数值。所以你的函数只会运行else下的那一行,因此总是0;
建 ...

function = neilijisuanvq1(x,x1,x2,l1,E,I)
   vq1=zeros(size(x));
if x>=0&x<=x1
         vq1=1/(6*E*I*l1)*((-0.5*x1^2+x1*x2-0.5*x2^2)*x^3+(0.5*x2^3-1.5*x1^2*x2+x1^3)*x^2);
elseif x>x1&x<=x2
         vq1= 1/(6*E*I*l1)*(-0.05*x^5+0.25*x2*x^4-0.5*x2^2*x^3+0.5*x2^3*x^2+(0.75*x1^4-x1^3*x2)*x+0.25*x1^4*x2-0.2*x1^5);
       else
         vq1=1/(6*E*I*l1)*((0.25*x2^4-x1^3*x2+0.75*x1^4)*x-0.2*x1^5+0.25*x1^4*x2-0.05*x2^5);
end

你好,同样的格式这个M文件运行结果就是1*29的,我知道x是个向量,但我是定义了vq1是和x相同类型的嘛,不是很明白why.望解答~
页: [1]
查看完整版本: 请教高手谢谢~~