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

21 vues (au cours des 30 derniers jours)
S/I
S/I le 18 Fév 2022
Commenté : S/I le 19 Fév 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上における記述方法まで含めて教えていただきたいです。最近始めたばかりで何から始めたら良いのかが把握できておらず、質問内容が多岐にわたり申し訳ございません。宜しくお願い致します。

Réponse acceptée

Hernia Baby
Hernia Baby le 18 Fév 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 commentaire
S/I
S/I le 19 Fév 2022
当てはめてみます。ありがとうございました

Connectez-vous pour commenter.

Plus de réponses (1)

Voss
Voss le 18 Fév 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 commentaire
S/I
S/I le 19 Fév 2022
ありがとうございました!試してみます

Connectez-vous pour commenter.

Catégories

En savoir plus sur スプラインの後処理 dans Help Center et File Exchange

Tags

Community Treasure Hunt

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

Start Hunting!