matlab 求某函数峰值x = 0:0.1:100; y = x.*sin(x); plot(x,y); z=diff(y); c=find(z==0) x(c)

来源:学生作业帮助网 编辑:作业帮 时间:2024/05/06 07:49:10
matlab 求某函数峰值x = 0:0.1:100; y = x.*sin(x); plot(x,y); z=diff(y); c=find(z==0) x(c)

matlab 求某函数峰值x = 0:0.1:100; y = x.*sin(x); plot(x,y); z=diff(y); c=find(z==0) x(c)
matlab 求某函数峰值
x = 0:0.1:100; y = x.*sin(x); plot(x,y); z=diff(y); c=find(z==0) x(c)

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表示,只是表示,不是求规划解!