matlab 求某函数峰值x = 0:0.1:100; y = x.*sin(x); plot(x,y); z=diff(y); c=find(z==0) x(c)
来源:学生作业学帮网 编辑:学帮网 时间:2024/06/03 16:59:46
matlab 求某函数峰值
x = 0:0.1:100; y = x.*sin(x); plot(x,y); z=diff(y); c=find(z==0) x(c)
首先,diff(y)算出来的z并不是严格意义上的y的微分,而是有一定误差的,所以要它严格等于0除非是巧合才能碰到.
但是即使找绝对值z小于error (error是一个自己设定的比较小的数,作为误差)的话也会有问题,主要是error的值不好确定,和x的取值有关,而且会出现如图1所示的问题,有些点能探测到,有些又探测过多.
clear all;close all;clc;
x = 0:0.01:100;
y = x.*sin(x);
error=1e-2
z=diff(y);
length(z)
plot(x,y);hold on;
c=find(z<=error);
c=find(z(c)>=-error);
plot(x(c),y(c),'r*')
图1
因此不建议用find函数,另一种方法是探测z的绝对值最小的点作为近似的峰值点,代码如下
clear all;close all;clc;
x = 0:0.01:100;
y = x.*sin(x);
z=diff(y);
z=abs(z);
j=1;
for i=2:length(z)-1
if z(i)<z(i+1) && z(i)<z(i-1) % 如果微分的绝对值最小则记录下来
c(j)=i;j=j+1;
end
end
figure(1);hold on;
plot(x,y);
plot(x(c),y(c),'r*')
效果很好,见图2.但不排除有更简洁的算法.
图2
matlab 求某函数峰值x = 0:0.1:100; y = x.*sin(x); plot(x,y); z=diff(y); c=find(z==0) x(c)
如何用MATLAB求解一个函数中函数值大于一个定值的所有峰峰值?例如:如何用Matlab求出x=0:1:100;y=sin(exp(x));这个函数中y值大于等于0.5的所有峰值?
MATLAB的写程序求函数y'=yy(0)=2用matlab求出y关于x的函数
matlab 如何求函数最小值g(x) = x sin(2x - 1)0
Matlab里面怎么求一个分段函数的积分例如一个函数y=x(0
matlab求函数f=(1+x^2)/(1+x^4)在区间0
怎样在Matlab中求函数的极大值有函数 y=x*sin(x) 求在0
急需matlab求函数最大值小弟刚学matlab,需求 f = (200+5*x)*(0.65-x*0.01)-x*0.45; x>0的最大值
matlab中有哪些函数可以直接求信号的时域参数比如均方值,绝对平均幅值,峰值
急需matlab求函数最大值f = 23.9*sin(x)/((sin(53.1+x))^2)+20.2/sin(53.1+x);0
MATLAB隐函数图像 sin(x^2)+e^(-y^2)*y'(x)=0 求具体指令
想用matlab求函数的实部与虚部用matlab y=t(0
matlab怎么求解函数f(x)=x^3+sin(x)在[0,5]区间的最大值,求程序 有没有内部函数?
matlab遗传算法求函数极小值!f(x,y) =-2.113-0.1326x+10.49y+0.1505x^2-2.924x*y+10.11y^2 ;x(0,0.1);y(18,36);我要matlab代码
matlab求方程所有根用什么函数求exp(x)+x^3+x^2+1=0在【-1,1】的所有根?
用matlab求解函数值! 急啊~~ f(x)=exp(x)*sin(x),求在x=0,-1的解并输出
怎么用MATLAB求函数x*(1+cos(x))*cos(x)^2,x在[0,pi]上,
Matlab 约束条件带等式的函数表示约束条件带等式的规划函数,在Matlab中怎样表示?例如:minf(x)=0.5*x(1)+0.5*x(2),在约束条件x(1)+x(2)=1,x(1)>0,x(2)>0下的matlab表示,只是表示,不是求规划解!