程序:
%霍尔茨法
w=0:0.0001:2; %设置固有频率范围以及精度0.0001
x=zeros(100,20001);
x(1,:)=[ones(1,20001)]; %令振幅X1=1
sum=[zeros(1,20001)]
for i=1:99 %求解各阶振幅
sum=sum+x(i,:)
x(i+1,:)=x(i,:)-sum.*w.^2+x(1,:);
end
sums=[zeros(1,20001)];
for i=1:100
sums=sums+x(i,:)
end
f=sums.*w.^2-1; %得到最后一个质量块合力F
plot(w,f); %绘制w-f图像
hold on
plot([0 2],[0 0]);
[pks,locs]=findpeaks(-1*(f.*f)) %对图像进行处理并找到零点位置
disp(w(locs));
首先,合力F关于ω的曲线,曲线的零点,即F=0时,ω的值为系统的固有频率
将图像平方,将靠近零点的值变为最小值;加负号变成负数,是零点值变为函数的最大值;最后利用findpeaks找到峰值点即原函数的零点,为系统的固有频率,如下所示:
输出的100阶固有频率(单位):
0.0156000000000000 0.0469000000000000 0.0781000000000000 0.109400000000000 0.140600000000000 0.171700000000000 0.202800000000000 0.233900000000000 0.264900000000000 0.295900000000000 0.326800000000000 0.357600000000000 0.388300000000000 0.418900000000000 0.449400000000000 0.479800000000000 0.510100000000000 0.540200000000000 0.570300000000000 0.600200000000000 0.629900000000000 0.659500000000000 0.688900000000000 0.718200000000000 0.747300000000000 0.776200000000000 0.804900000000000 0.833400000000000 0.861700000000000 0.889800000000000 0.917700000000000 0.945400000000000 0.972800000000000 1
1.02690000000000 1.05360000000000 1.08010000000000 1.10630000000000 1.13220000000000 1.15780000000000 1.18310000000000 1.20820000000000 1.23300000000000 1.25740000000000 1.28160000000000 1.30540000000000 1.32890000000000 1.35210000000000 1.37500000000000 1.39750000000000 1.41970000000000 1.44160000000000 1.46310000000000 1.48420000000000 1.50500000000000 1.52540000000000 1.54540000000000 1.56510000000000 1.58430000000000 1.60320000000000 1.62170000000000 1.63980000000000 1.65750000000000 1.67480000000000 1.69170000000000 1.70810000000000 1.72420000000000 1.73980000000000 1.75500000000000 1.76980000000000 1.78410000000000 1.79800000000000 1.81150000000000 1.82450000000000 1.83710000000000 1.84930000000000 1.86090000000000 1.87220000000000 1.88290000000000 1.89320000000000 1.90310000000000 1.91250000000000 1.92140000000000 1.92980000000000 1.93780000000000 1.94530000000000 1.95230000000000 1.95890000000000 1.96490000000000 1.97050000000000 1.97560000000000 1.98020000000000 1.98440000000000 1.98800000000000 1.99120000000000 1.99390000000000 1.99610000000000 1.99780000000000 1.99900000000000 1.99970000000000