0

我有一个方程f(β) = cosh β cos β + 1 = 0,我需要使用 βi 根来找到一些频率。频率的公式是

fi = sqrt((βi^4 * E*I) / (4*pi*m*L^3) );

我收到此错误,我不知道问题出在哪里

??? Subscript indices must either be real positive integers or logicals.

Error in ==> C:\Documents and Settings\Laura Lupas\Desktop\subiect88\frecventa.m
On line 18  ==>     p= p0 - f(p0)/fd(p0);

这是我的代码:

  function p = frecventa(f,fd,p_start,eps);

  p0=p_start;
  i=1;

  L = 0.9;    %lungimea grinzii in m
  b = 0.025;  %latimea grinzii in metri
  h = 0.0025;  %inaltimea in metrii
  dens = 7850; % kg/m cub
  v = b * h * L ; % volum
  m = dens * v;


  E =  2000e11; %modulul de elasti N/m patrat
  I= (b*h^2)/12;%mometul de inertie

  while(i <= 2)
     p= p0 - f(p0)/fd(p0);
     if abs(p-p0) < eps
        return
     end
      i = i + 1;
      p0=p;

      p = sqrt((p0^4 * E*I) / (4*pi*m*L^3) )
  end    



  % beta = 0:0.001:pi
  %f = cosh(beta).*cos(beta) + 1;
  %fd = sinh(beta).*cos(beta) - cosh(beta).*sin(beta);
4

2 回答 2

0

如果ffd是您用作函数输入参数的向量,您可能会将更新的参数p0=p作为索引传递到这些向量中。您的代码显示您正在计算p= p0 - f(p0)/fd(p0);,稍后在循环中p0使用p. p(因此)的这种评估p0涉及除法步骤,因此不太可能产生 的整数值结果p0。因为这是索引索引的值ffd它可以解释您收到的错误消息,很明显,您不能在矩阵或向量中使用非整数索引。

于 2012-05-29T15:04:11.333 回答
0

难道只是这样

  % beta = 0:0.001:pi
  %f = cosh(beta).*cos(beta) + 1;
  %fd = sinh(beta).*cos(beta) - cosh(beta).*sin(beta);

应该在你的代码的其余部分之上,并且没有注释吗?

所以试试这个:

  beta = 0:0.001:pi
  f = cosh(beta).*cos(beta) + 1;
  fd = sinh(beta).*cos(beta) - cosh(beta).*sin(beta);
  p0=p_start;
  i=1;

  L = 0.9;    %lungimea grinzii in m
  b = 0.025;  %latimea grinzii in metri
  h = 0.0025;  %inaltimea in metrii
  dens = 7850; % kg/m cub
  v = b * h * L ; % volum
  m = dens * v;


  E =  2000e11; %modulul de elasti N/m patrat
  I= (b*h^2)/12;%mometul de inertie

  while(i <= 2)
     p= p0 - f(p0)/fd(p0);
     if abs(p-p0) < eps
        return
     end
      i = i + 1;
      p0=p;

      p = sqrt((p0^4 * E*I) / (4*pi*m*L^3) )
  end    
于 2012-05-29T14:53:07.503 回答