Matlab 如何求多项式(t,y,2)给出的函数的极小值点和极大值点

Matlab 如何求多项式(t,y,2)给出的函数的极小值点和极大值点,matlab,Matlab,这里我写的是MatLab代码,通过它我可以找到函数p,然后我想找到最小值和最大值点,请告诉我怎么做 path3='D:\SelectedCycle2\001\nm-01\'; list3 = dir(path3); fName3 = {list3.name}; [~,y3]=size(fName3); sumvec=double([]); t=[]; for fff_no=3:y3 image=double(imread(char(strcat(path3,fName3(fff_no)

这里我写的是MatLab代码,通过它我可以找到函数p,然后我想找到最小值和最大值点,请告诉我怎么做

path3='D:\SelectedCycle2\001\nm-01\';
list3 = dir(path3);
fName3 = {list3.name};
[~,y3]=size(fName3);

sumvec=double([]);
t=[];
for fff_no=3:y3
    image=double(imread(char(strcat(path3,fName3(fff_no)))));
    sumvec=[sumvec,sum(image(:))];
    t=[t,fff_no-2];
end
y=sumvec;
p = polyfit(t,y,2);
g=diff(p);

请完成此matlab代码。

我看到您尝试了
diff
,但是这是一个数值微分函数(即仅获取相邻值之间的差值),而您可能需要多项式的导数。幸运的是,MATLAB相当完整:

pd=polydiff(p);
将给出导数的系数。那么

max_min=roots(pd);
将给出多项式
p
的极值。通过在相邻位置计算多项式,可以知道其最大值或最小值。对于特定的极值,您可以对其进行评估,如下所示:

adjacent(1)=polyval(p,max_min(1)+0.0001);
通过将其与极值中多项式的值进行比较,可以知道其最大值或最小值(检查前后的值,以检查其是否为鞍点)


检查所有这些函数的文档,因为有一些非常有用的东西(例如,
polyfit
返回的错误估计值可以在
polyval
中使用),但这超出了问题的范围。

您可以更改代码,实际上,我想知道函数值在什么t点最大和最小?polyfit函数不是必须使用的,你可以用自己的方式定义matlab代码