関数のグラフにおいて​、最大値を求める方法​を教えてください。

37 views (last 30 days)
S/I
S/I on 18 Feb 2022
Commented: S/I on 19 Feb 2022
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上における記述方法まで含めて教えていただきたいです。最近始めたばかりで何から始めたら良いのかが把握できておらず、質問内容が多岐にわたり申し訳ございません。宜しくお願い致します。

Accepted Answer

Hernia Baby
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;
z = f(x,y) のような2変数関数には meshgrid を用います
[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])
最大値についてですが max を使用します
行と列ですべての最大値を出すには'all'オプションを使います
Zmax = max(z,[],'all')
Zmax = 24.0675
このときの x と y はどこなのか見てみましょう
z の中で 最大値 Zmaxとなる部分のみ true を返すようにしています
idx = z == Zmax;
x = x(idx)
x = 100
y = y(idx)
y = 0.5000
  1 Comment
S/I
S/I on 19 Feb 2022
当てはめてみます。ありがとうございました

Sign in to comment.

More Answers (1)

Voss
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');
  1 Comment
S/I
S/I on 19 Feb 2022
ありがとうございました!試してみます

Sign in to comment.

Tags

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!