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

19 ビュー (過去 30 日間)
S/I
S/I 2022 年 2 月 18 日
コメント済み: S/I 2022 年 2 月 19 日
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上における記述方法まで含めて教えていただきたいです。最近始めたばかりで何から始めたら良いのかが把握できておらず、質問内容が多岐にわたり申し訳ございません。宜しくお願い致します。

採用された回答

Hernia Baby
Hernia Baby 2022 年 2 月 18 日
描画については @_ さんの通りです
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 件のコメント
S/I
S/I 2022 年 2 月 19 日
当てはめてみます。ありがとうございました

サインインしてコメントする。

その他の回答 (1 件)

Voss
Voss 2022 年 2 月 18 日
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 件のコメント
S/I
S/I 2022 年 2 月 19 日
ありがとうございました!試してみます

サインインしてコメントする。

カテゴリ

Help Center および File Exchangeスプラインの後処理 についてさらに検索

タグ

Community Treasure Hunt

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

Start Hunting!