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

조회 수: 17 (최근 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 CenterFile Exchange에서 スプラインの後処理에 대해 자세히 알아보기

태그

Community Treasure Hunt

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

Start Hunting!