声振论坛

 找回密码
 我要加入

QQ登录

只需一步,快速开始

查看: 7588|回复: 24

[非线性振动] 增量谐波平衡法(IHB)怎样得到完整的幅频曲线

[复制链接]
发表于 2014-11-10 09:37 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?我要加入

x
若某非线性系统在某些频率区间中有多个解,则怎样将这多个解全部得到啊,是通过选不同的初始值吗?还是通过所谓的路径跟踪方法(弧长增量法等等)得到?   求大神指点啊!!

本帖被以下淘专辑推荐:

回复
分享到:

使用道具 举报

发表于 2014-11-10 15:37 | 显示全部楼层
也不是很清楚啊
 楼主| 发表于 2014-11-18 22:05 | 显示全部楼层
本帖最后由 thdl520 于 2014-11-18 22:21 编辑

求雪缘和无水两位元老  以及IHB方面的专家们给予解惑啊
下面是我编的非对称分段线性IHB法程序 貌似只能得到稳定的解(可以通过改变初始条件来得到),但同一频率下的不稳定解却怎么也得不到该怎么样做啊


clear
clc

% 参数
ks=0.05;F=0.4;
m=1;   % order of subharmonic
eps=0.6;ac=-0.0083;
w0=0.98;


% initial parameter
A0=[ 1 1 0 0 0 0 0];

syms t
CS=[1 cos(t) cos(2*t) cos(3*t) sin(t) sin(2*t) sin(3*t)];
CS1=diff(CS,t);CS2=diff(CS1,t);

% 确定解位置
t0=0;t1=2*pi;
for k=1:30
   a=[];e=[];
for i=t0:0.1:t1  %限定区间,步长为0.1
    [x,fval]=fsolve(@(t)A0(1)+A0(2)*cos(t)+A0(3)*cos(2*t)+A0(4)*cos(3*t)+A0(5)*sin(t)+A0(6)*sin(2*t)+A0(7)*sin(3*t),i,optimset('Display','off')); %求出一个根
    flag=0;  %检查是否已经存在在根集中
    for j=1:length(a)
        if abs(x-a(j))<=1e-3
            flag=1; %已经存在
            break;
        end
    end
    if flag==0 %没有存在
        a=[a,x];e=[e,fval];  
    end
end

% 选取xo和x1之间的解,去掉极值点
for j=length(a):-1:1
    if a(j)>t1||a(j)<t0||abs(e(j))>1e-3
        a(j)=[];
    end
end

% 排序
a=sort(a);

% linear term integration
rl=inline((w0^2*A0*CS2'+2*ks*m*w0*A0*CS1'-F*m^2*cos(m*t))*CS');
Rl=quadv(rl,0,2*pi);

cl=inline(2*ks*m*w0*CS'*CS1+w0^2*CS'*CS2);
Cl=quadv(cl,0,2*pi);

% nonlinear term integration
a=[0 a 2*pi]

n=length(a);
x0=A0*CS';
Rnl=0;
Cnl=0;

rnl1=inline(x0*CS');
rnl2=inline((eps*x0+(1-eps)*ac)*CS');
cnl=inline(1*CS'*CS);
cn2=inline(eps*CS'*CS);

for i=1:n-1
    tc=(a(i)+a(i+1))/2;
    if (A0(1)+A0(2)*cos(tc)+A0(3)*cos(2*tc)+A0(4)*cos(3*tc)+A0(5)*sin(tc)+A0(6)*sin(2*tc)+A0(7)*sin(3*tc))-ac>0
        Rnl=quadv(rnl1,a(i),a(i+1))+Rnl;
        Cnl=quadv(cnl,a(i),a(i+1))+Cnl;
    else
        Rnl=quadv(rnl2,a(i),a(i+1))+Rnl;
        Cnl=quadv(cn2,a(i),a(i+1))+Cnl;
    end
end

R=Rl+Rnl
C=Cl+Cnl;
dA=-C\R;
A0=A0+dA'
nm=norm(R)
if nm<1e-6
    break
end
end


方程

方程
回复 支持 0 反对 1

使用道具 举报

发表于 2015-11-13 18:45 | 显示全部楼层
请问楼主解决了吗?

点评

增量谐波平衡法(IHB)相关讨论的帖子还有 http://forum.vibunion.com/thread-76573-1-1.html http://forum.vibunion.com/thread-58060-1-1.html http://forum.vibunion.com/thread-129008-1-1.html http://foru  详情 回复 发表于 2015-11-15 09:57
发表于 2015-11-15 09:57 | 显示全部楼层
发表于 2016-3-26 14:14 | 显示全部楼层
马一下,正在学习~
发表于 2016-7-20 10:05 | 显示全部楼层
我也遇到了这样的问题?用IHB法只能得到一个解而不能得到多个解?不知道你是否解决?
发表于 2016-7-20 10:33 | 显示全部楼层
你说的两种方法你试了吗
发表于 2016-8-19 08:51 | 显示全部楼层
看看学下下
发表于 2016-8-19 13:17 | 显示全部楼层
楼主问题解决了吗?

点评

听说过弧长法 跟牛顿拉普森类似的迭代对不对  详情 回复 发表于 2016-12-19 08:40
弧长法研究过吗  详情 回复 发表于 2016-9-13 16:40
发表于 2016-9-13 16:40 | 显示全部楼层
本帖最后由 wjt1713573225 于 2016-9-13 16:42 编辑
vibmaster 发表于 2016-8-19 13:17
楼主问题解决了吗?

弧长法研究过吗  求解过程中只能得到一个解必须结合弧长法求解出非稳定解

点评

没研究过 需要研究公式吗 自己编程序?  详情 回复 发表于 2016-9-14 08:05
发表于 2016-9-14 08:05 | 显示全部楼层
wjt1713573225 发表于 2016-9-13 16:40
弧长法研究过吗  求解过程中只能得到一个解必须结合弧长法求解出非稳定解

没研究过  需要研究公式吗  自己编程序?

点评

是的 必须结合公式才行  详情 回复 发表于 2016-9-14 08:46
发表于 2016-9-14 08:46 | 显示全部楼层
vibmaster 发表于 2016-9-14 08:05
没研究过  需要研究公式吗  自己编程序?

是的 必须结合公式才行
发表于 2016-12-16 10:54 | 显示全部楼层
为何这种方法始终求不出共存周期呢?
发表于 2016-12-19 08:40 | 显示全部楼层
vibmaster 发表于 2016-8-19 13:17
楼主问题解决了吗?

听说过弧长法  跟牛顿拉普森类似的迭代对不对
您需要登录后才可以回帖 登录 | 我要加入

本版积分规则

QQ|小黑屋|Archiver|手机版|联系我们|声振论坛

GMT+8, 2024-4-19 23:50 , Processed in 0.073552 second(s), 25 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表