幅频响应正反问题?
非线性系统里在画幅频响应曲线的时候,有正着算和反着算问题,我正算和反算后好像图像是一样的,也不知道是不是程序的问题,请论坛里的前辈看看我的程序对不对?我感觉我的程序可能有问题,按照这个程序,正算和反算就应该是一样的好像下面贴上我的程序,请大家帮忙看看
正着算的时候;
function zuidazhi
clear;
options=odeset('RelTol',1e-6,'AbsTol',1e-6);
for f=0.1:0.01:10
f
tt=1/f;
y0=;
for n=1:1500
=ode45('qiujie411',,y0,options,f);
y0=y(end,:);
end
for n=1:100
=ode45('qiujie411',,y0,options,f);
y0=y(end,:);
yd=abs(y(:,1));
yn(n)=max(yd);
end
hold on
plot(f,yn,'k.')
end
xlabel('频率/Hz','Fontsize',16);
ylabel('Xb/m','Fontsize',16');
反着算的时候:
function zuidazhi
clear;
options=odeset('RelTol',1e-6,'AbsTol',1e-6);
for f=10:-0.01:0.1
f
tt=1/f;
y0=;
for n=1:1500
=ode45('qiujie411',,y0,options,f);
y0=y(end,:);
end
for n=1:100
=ode45('qiujie411',,y0,options,f);
y0=y(end,:);
yd=abs(y(:,1));
yn(n)=max(yd);
end
hold on
plot(f,yn,'k.')
end
xlabel('频率/Hz','Fontsize',16);
ylabel('Xb/m','Fontsize',16');
请教前辈们,我这程序可有问题?这种程序图画出来时一样的。。。。。。。
{:{28}:}哪位前辈懂啊,给我指导指导啊! 你这里说的正算和反算,是怎样的物理意义? octopussheng 发表于 2011-1-5 21:33 static/image/common/back.gif
你这里说的正算和反算,是怎样的物理意义?
正算指的就是走0.1到10 递增的画图
反算就是走10到0.1递减的画图
这2者的程序是不是就是循环语句里的一个是for f=0.1:0.01:1,一个是for 10:-0.01:0.1这么简单的区别?感觉对于同样的f值的话 递增或者递减这样的话 不就一样了吗?因为都是稳定周期后取点 tudexin 发表于 2011-1-4 14:33 static/image/common/back.gif
非线性系统里在画幅频响应曲线的时候,有正着算和反着算问题,我正算和反算后好像图像是一样的,也不知道是 ...
你的y0取错了,除在计算第一个频率时的响应时根据自己需要自己取定初始值外,剩下的频率的初始值应该这样选择:以上一个频率计算出的一组稳态解作为下一个频率的初始值。
根据你的程序,你每次计算都是从零初始值开始计算的,显然这样你的两种情况画出来的是一样的结果,因为你每个频率之间并没有建立任何联系,你的正画反画无非只是打点的顺序不一样而已。 回复 4 # tudexin 的帖子
你是想表现出升速和降速的滞后效应吧,要把上一次循环的稳态解作为下一次循环的初值 凌绝顶 发表于 2011-1-5 23:49 static/image/common/back.gif
你的y0取错了,除在计算第一个频率时的响应时根据自己需要自己取定初始值外,剩下的频率的初始值应该这样 ...
哦 了解了 hsfy919 发表于 2011-1-6 09:49 static/image/common/back.gif
回复 4 # tudexin 的帖子
你是想表现出升速和降速的滞后效应吧,要把上一次循环的稳态解作为下一次循环的初 ...
恩 我按照新思路再来算一次
页:
[1]