2016-10-13 9 views
0

私はMATLABを使い始めました。私はこの2次多項式面の最小値と最大値を見つけたいと思っています。MATLABでサーフェスの最小値と最大値を求める

f(x,y) = 4490 + 8902*x + 1.385e+05*y + 9.497*x^2 + -9928*x*y + 1.481e+05*y^2; 

私はdegree 1関数の最小値と最大値を計算する方法を知っていますが、より高い度合いの関数についてはリードできませんでした。任意の提案をいただければ幸いです。

答えて

0

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); 
+0

ありがとうございました – Nick

0

は、最初のxの範囲を定義します、あなたはminima.Thenを見つけたいyはメッシュグリッドを作ります基本的に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 
+0

ありがとうございました – Nick

関連する問題