関数のグラフにおいて、最大値を求める方法を教えてください。
18 views (last 30 days)
Show older comments
xとyの二変数関数 z= A.xy^3 + B.y^3 + C.xy^2 + D.y^2 + E.xy + F.x + H.y
(A,B,C,D,E,F,Hは定数、x,yは変数、定義域は0<x<100 0<y<0.5 ) のグラフを、xyzの三次元の関数としてプロットしたいです。この時、x軸とy軸の定義域の値が大きく違うため、グラフを見やすくするために、y軸方向に伸長させてから、この関数におけるzの最大値を求める求め方を、matlab上における記述方法まで含めて教えていただきたいです。最近始めたばかりで何から始めたら良いのかが把握できておらず、質問内容が多岐にわたり申し訳ございません。宜しくお願い致します。
0 Comments
Accepted Answer
Hernia Baby
on 18 Feb 2022
x = 0:100;
y = 0:0.01:0.5;
A = 2; B =-0.5; C = -0.2; D = 0.5; E = 0.1; F = -0.01; H = 0.01;
[x,y] = meshgrid(x,y);
z = A*x.*y.^3 + B*y.^3 + C*x.*y.^2 + D*y.^2 + E*x.*y + F*x + H*y;
surf(x,y,z);
xlabel('x');
ylabel('y');
zlabel('z');
view([60, 48])
行と列ですべての最大値を出すには'all'オプションを使います
Zmax = max(z,[],'all')
このときの x と y はどこなのか見てみましょう
z の中で 最大値 Zmaxとなる部分のみ true を返すようにしています
idx = z == Zmax;
x = x(idx)
y = y(idx)
More Answers (1)
Voss
on 18 Feb 2022
x = 0:100;
y = 0:0.01:0.5;
A = 1; B = 1; C = 1; D = 1; E = 1; F = 1; H = 1;
[x,y] = meshgrid(x,y);
z = A*x.*y.^3 + B*y.^3 + C*x.*y.^2 + D*y.^2 + E*x.*y + F*x + H*y;
surf(x,y,z);
xlabel('x');
ylabel('y');
zlabel('z');
See Also
Categories
Find more on スプラインの後処理 in Help Center and File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!
