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

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

Akzeptierte Antwort

Hernia Baby
Hernia Baby am 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 Kommentar
S/I
S/I am 19 Feb. 2022
当てはめてみます。ありがとうございました

Melden Sie sich an, um zu kommentieren.

Weitere Antworten (1)

Voss
Voss am 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 Kommentar
S/I
S/I am 19 Feb. 2022
ありがとうございました!試してみます

Melden Sie sich an, um zu kommentieren.

Kategorien

Mehr zu スプラインの後処理 finden Sie in Help Center und File Exchange

Tags

Community Treasure Hunt

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

Start Hunting!