在 MATLAB 中寻找曲面的最小值和最大值
Finding minima and maxima of a surface in MATLAB
我刚开始使用 MATLAB。我想找到这个二次多项式曲面的最小值和最大值。
f(x,y) = 4490 + 8902*x + 1.385e+05*y + 9.497*x^2 + -9928*x*y + 1.481e+05*y^2;
我知道如何计算 1 阶函数的最小值和最大值,但我无法获得有关更高阶函数的任何线索。任何建议,将不胜感激。
计算 x
和所有 y
的函数并找到该矩阵的 min
/max
:
x1D = 1:100;
y1D = 1:100;
[x,y] = meshgrid(x1D,y1D);
f = 4490 + 8902*x + 1.385e+05*y + 9.497*x.^2 + -9928.*x.*y + 1.481e+05*y.^2;
[minV, minL] = min(f(:));
[maxV, maxL] = max(f(:));
[minX, minY] = ind2sub(size(f),minL);
[maxX, maxY] = ind2sub(size(f),maxL);
让我们首先定义一个您想要找到的 x,y 的范围 minima.Then 制作一个网格,它基本上是一个包含那些 x 和 y 作为坐标的矩阵。然后将所有这些点的函数评估为 z ,它也是一个矩阵。 z 的每个成员都位于与 x 和 y 相似的位置作为输入。然后找到 z 矩阵的最小值的位置。最后 2 个命令应该为您提供最小值发生的位置坐标。
x=1:100;
y=1:100;
[X,Y]=meshgrid(x,y); %
z = 4490 + X.*8902 + Y.*1.385e+05 +X.^2*9.497 X.*Y.*9928+Y.^2*1.48e+05;
[X,Y]=meshgrid(x,y);
surf(x,y,z) % plotting the curve
[Row,Col]=find(z==min(min(z)))
x(Row) % x coordinate
y(Col) % y coordinate
我刚开始使用 MATLAB。我想找到这个二次多项式曲面的最小值和最大值。
f(x,y) = 4490 + 8902*x + 1.385e+05*y + 9.497*x^2 + -9928*x*y + 1.481e+05*y^2;
我知道如何计算 1 阶函数的最小值和最大值,但我无法获得有关更高阶函数的任何线索。任何建议,将不胜感激。
计算 x
和所有 y
的函数并找到该矩阵的 min
/max
:
x1D = 1:100;
y1D = 1:100;
[x,y] = meshgrid(x1D,y1D);
f = 4490 + 8902*x + 1.385e+05*y + 9.497*x.^2 + -9928.*x.*y + 1.481e+05*y.^2;
[minV, minL] = min(f(:));
[maxV, maxL] = max(f(:));
[minX, minY] = ind2sub(size(f),minL);
[maxX, maxY] = ind2sub(size(f),maxL);
让我们首先定义一个您想要找到的 x,y 的范围 minima.Then 制作一个网格,它基本上是一个包含那些 x 和 y 作为坐标的矩阵。然后将所有这些点的函数评估为 z ,它也是一个矩阵。 z 的每个成员都位于与 x 和 y 相似的位置作为输入。然后找到 z 矩阵的最小值的位置。最后 2 个命令应该为您提供最小值发生的位置坐标。
x=1:100;
y=1:100;
[X,Y]=meshgrid(x,y); %
z = 4490 + X.*8902 + Y.*1.385e+05 +X.^2*9.497 X.*Y.*9928+Y.^2*1.48e+05;
[X,Y]=meshgrid(x,y);
surf(x,y,z) % plotting the curve
[Row,Col]=find(z==min(min(z)))
x(Row) % x coordinate
y(Col) % y coordinate