我有一个等式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);
答案 0 :(得分: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
答案 1 :(得分:0)
如果f
和fd
是您用作函数输入参数的向量,则可能会将更新后的参数p0=p
作为这些向量的索引传递。您的代码显示您正在计算p= p0 - f(p0)/fd(p0);
以及稍后使用p0
更新p
的循环。 p
(以及p0
)的这种评估涉及一个除法步骤,因此不可能产生p0
的整数值结果。由于这是索引索引到f
和fd
的值,它将解释您收到的错误消息,因为很明显您不能将非整数索引放入矩阵或向量中。