最新のリリースでは、このページがまだ翻訳されていません。 このページの最新版は英語でご覧になれます。

fimplicit3

3 次元の陰的方程式または陰関数のプロット

説明

fimplicit3(f) は、3 次元の陰的方程式または陰関数 f(x,y,z)xy および z の既定の区間 [-5 5] でプロットします。

fimplicit3(f,[min max]) は、f(x,y,z)xy および z の区間 [min max] でプロットします。

fimplicit3(f,[xmin xmax ymin ymax zmin zmax]) は、f(x,y,z) を、x の区間 [xmin xmax]y の区間 [ymin ymax]、および z の区間 [zmin zmax] でプロットします。関数 fimplicit3symvar を使用して、変数を並べ替え、区間を割り当てます。

fimplicit3(___,LineSpec) は、LineSpec を使用してライン スタイル、マーカー記号、面の色を設定します。

fimplicit3(___,Name,Value) は、1 つ以上の Name,Value 引数ペアを使用して、ラインのプロパティを指定します。このオプションは、前述の構文のすべての入力引数の組み合わせで使用できます。

fimplicit3(ax,___) は、現在の axes オブジェクト gca ではなくオブジェクト ax をもつ座標軸にプロットします。

fi = fimplicit3(___) は、陰関数 surface オブジェクトを返します。このオブジェクトを使用して、特定の表面のプロパティのクエリと変更を行います。詳細は、ImplicitFunctionSurface のプロパティ を参照してください。

すべて折りたたむ

fimplicit3 を使用して双曲面 x2+y2-z2=0 をプロットします。関数 fimplicit3xy、および z の既定の区間 [-5,5] をプロットします。

syms x y z
fimplicit3(x^2 + y^2 - z^2)

関数 f(x,y,z)=x2+y2-z2 で指定される双曲面をプロットします。関数 fimplicit3xy、および z の既定の区間 [-5,5] をプロットします。

syms f(x,y,z)
f(x,y,z) = x^2 + y^2 - z^2;
fimplicit3(f)

fimplicit3 の 2 番目の引数を指定して、プロット区間を指定します。双曲面 x2+y2-z2=0 の上半分を、区間 0<z<5 を指定してプロットします。x および y について、既定の区間 [-5,5] を使用します。

syms x y z
f = x^2 + y^2 - z^2;
interval = [-5 5 -5 5 0 5];
fimplicit3(f, interval)

陰的方程式 xsin(y)+zcos(x)=0 を、すべての座標軸の (-2π,2π) の区間でプロットします。

x 軸の範囲を pi/2 の間隔にして、x 軸の目盛りを作成します。round を使用して座標軸の範囲を pi/2 の倍数に正確に変換し、S の目盛りのシンボリックな値を取得します。XTick プロパティを使用して、これらの目盛りを表示します。arrayfun を使用して texlabelS に適用して、x 軸ラベルを作成します。XTickLabel プロパティを使用して、これらのラベルを表示します。以上の手順を、y 軸について繰り返します。

プロットに LaTeX を使用する方法については、latexを参照してください。

syms x y z
eqn = x*sin(y) + z*cos(x);
fimplicit3(eqn,[-2*pi 2*pi])
title('xsin(y) + zcos(x) for -2\pi < x < 2\pi and -2\pi < y < 2\pi')
xlabel('x')
ylabel('y')
ax = gca;

S = sym(ax.XLim(1):pi/2:ax.XLim(2));
S = sym(round(vpa(S/pi*2))*pi/2);
ax.XTick = double(S);
ax.XTickLabel = arrayfun(@texlabel,S,'UniformOutput',false);

S = sym(ax.YLim(1):pi/2:ax.YLim(2));
S = sym(round(vpa(S/pi*2))*pi/2);
ax.YTick = double(S);
ax.YTickLabel = arrayfun(@texlabel, S, 'UniformOutput', false);

z の異なる値に対し異なるライン スタイルを使用して、陰関数表面 x2+y2-z2=0 をプロットします。-5<z<-2 に対しては、緑のドット マーカー付きの破線を使用します。-2<z<2 に対しては、LineWidth1 を、面の色に緑を使用します。2<z<5 について、EdgeColornone に設定してラインを非表示にします。

syms x y z
f = x^2 + y^2 - z^2; 
fimplicit3(f,[-5 5 -5 5 -5 -2],'--.','MarkerEdgeColor','g')
hold on
fimplicit3(f,[-5 5 -5 5 -2 2],'LineWidth',1,'FaceColor','g')
fimplicit3(f,[-5 5 -5 5 2 5],'EdgeColor','none')

陰関数表面 1/x2-1/y2+1/z2=0 をプロットします。fimplicit3 がプロット オブジェクトを返すように出力を指定します。

syms x y z
f = 1/x^2 - 1/y^2 + 1/z^2;
fi = fimplicit3(f)

fi = 
  ImplicitFunctionSurface with properties:

     Function: [1x1 sym]
    EdgeColor: [0 0 0]
    LineStyle: '-'
    FaceColor: 'interp'

  Show all properties

fiXRange プロパティを [0 5] に設定して、正の x 軸のみを表示します。EdgeColor プロパティを 'none' に設定してラインを削除します。FaceAlpha プロパティを 0.8 に設定してプロットを透明にし、隠れた表面を可視化します。

fi.XRange = [0 5];
fi.EdgeColor = 'none';
fi.FaceAlpha = 0.8;

'MeshDensity' オプションを使用して、陰関数表面プロットの解像度を制御します。'MeshDensity' を増やすとプロットがより滑らかで正確になり、'MeshDensity' を減らすとプロット速度が上がります。

subplot を使用して、Figure を 2 つに分割します。最初のサブプロットでは、陰関数表面 sin(1/(xyz)) をプロットします。表面には大きなギャップがあります。第 2 サブプロットで 'MeshDensity'40 に増やしてこの問題を修正します。fimplicit3 によってギャップが埋められます。これは、'MeshDensity' を増やすとプロットの解像度が向上することを示します。

syms x y z
f = sin(1/(x*y*z));

subplot(2,1,1)
fimplicit3(f)
title('Default MeshDensity = 35')

subplot(2,1,2)
fimplicit3(f,'MeshDensity',40)
title('Increased MeshDensity = 40')

トーラスの陰関数表面のプロットに回転と平行移動を適用します。

トーラスは直交座標の陰的な式で次のように定義できます。

f(x,y,z)=(x2+y2+z2+R2-a2)2-4R2(x2+y2)

ここで、

  • a はチューブの半径、

  • R はチューブの中心からトーラスの中心までの距離です。

a および R の値をそれぞれ 1 および 5 に定義します。fimplicit3 を使用してトーラスをプロットします。

syms x y z
a = 1;
R = 4;
f(x,y,z) = (x^2+y^2+z^2+R^2-a^2)^2 - 4*R^2*(x^2+y^2);
fimplicit3(f)
hold on

トーラスに x 軸周りの回転を適用します。回転行列を定義します。トーラスを 90 度または π/2 ラジアン回転します。x 軸に沿ってトーラスの中心を 5 シフトします。

alpha = pi/2;
Rx = [1 0 0;
      0 cos(alpha) sin(alpha);
      0 -sin(alpha) cos(alpha)];
r = [x; y; z];
r_90 = Rx*r;
g = subs(f,[x,y,z],[r_90(1)-5,r_90(2),r_90(3)]);

既存のグラフに、回転し変換したトーラスの 2 番目のプロットを追加します。

fimplicit3(g)
axis([-5 10 -5 10 -5 5])
hold off

入力引数

すべて折りたたむ

プロット対象の 3 次元の陰的方程式または陰関数。シンボリック方程式、シンボリック式またはシンボリック関数のいずれかとして指定します。式または関数が指定される場合、fimplicit3 は右辺のサイズは 0 と仮定されます。

x、y、z 軸のプロット区間。2 つの数値のベクトルとして指定します。既定値は [-5 5] です。

x、y、z 軸のプロット区間。6 つの数値のベクトルとして指定します。既定値は [-5 5 -5 5 -5 5] です。

axes オブジェクト。axes オブジェクトを指定しない場合、fimplicit3 は現在の座標軸を使用します。

ライン スタイル、マーカー記号および面の色。文字ベクトルとして指定します。文字ベクトルの要素は任意の順でかまいません。1 つ以上の文字ベクトル指定子オプションを省略することも可能です。

例: '--or' は丸いマーカーと破線をもつ赤い表面

指定子ライン スタイル
-実線 (既定の設定)
--破線
:点線
-.一点鎖線
指定子マーカー
o
+プラス記号
*アスタリスク
.
x十字
s正方形
d菱形
^上向き三角形
v下向き三角形
>右向き三角形
<左向き三角形
p星形五角形
h星形六角形
指定子

y

m

マゼンタ

c

シアン

r

g

b

w

k

名前と値のペアの引数

引数 Name,Value のオプションのコンマ区切りペアを指定します。Name は引数名、Value は対応する値です。Name は引用符で囲まなければなりません。Name1,Value1,...,NameN,ValueN のように、複数の名前と値のペアの引数を任意の順番で指定できます。

例: 'Marker','o','MarkerFaceColor','red'

ここでは、プロパティの一部だけを紹介しています。一覧については、ImplicitFunctionSurface のプロパティ を参照してください。

方向ごとの評価点の数。数値として指定します。既定値は 35 です。

例: 100

ラインの色。'interp'、RGB 3 成分、16 進数のカラー コード、色の名前、または省略名として指定します。既定の RGB 3 成分の値 [0 0 0] は、黒に相当します。値 'interp' を指定すると ZData の値に基づいてエッジをカラーリングします。

カスタム色には、RGB 3 成分または 16 進数のカラー コードを指定します。

  • RGB 3 成分は、色の赤、緑、青成分の強度を指定する 3 成分の行ベクトルです。強度は [0,1] の範囲でなければなりません。たとえば [0.4 0.6 0.7] のようになります。

  • 16 進数のカラー コードは、ハッシュ記号 (#) の後に 3 つまたは 6 つの 0 から F までの範囲の 16 進数の桁を続けた文字ベクトルまたは string スカラーです。この値では大文字と小文字は区別されません。したがって、カラー コード '#FF8800''#ff8800''#F80'、および '#f80' は等価です。

あるいは、一般的な色を名前で指定できます。この表は、名前の付いた色のオプションと、等価な RGB 3 成分および 16 進数のカラー コードの一覧です。

色の名前省略名RGB 3 成分16 進数のカラー コード外観
'red''r'[1 0 0]'#FF0000'

'green''g'[0 1 0]'#00FF00'

'blue''b'[0 0 1]'#0000FF'

'cyan' 'c'[0 1 1]'#00FFFF'

'magenta''m'[1 0 1]'#FF00FF'

'yellow''y'[1 1 0]'#FFFF00'

'black''k'[0 0 0]'#000000'

'white''w'[1 1 1]'#FFFFFF'

'none'適用不可適用不可適用不可色なし

MATLAB® で多くの種類のプロットで使用されている既定の色の RGB 3 成分および 16 進数のカラー コードを次に示します。

RGB 3 成分16 進数のカラー コード外観
[0 0.4470 0.7410]'#0072BD'

[0.8500 0.3250 0.0980]'#D95319'

[0.9290 0.6940 0.1250]'#EDB120'

[0.4940 0.1840 0.5560]'#7E2F8E'

[0.4660 0.6740 0.1880]'#77AC30'

[0.3010 0.7450 0.9330]'#4DBEEE'

[0.6350 0.0780 0.1840]'#A2142F'

ライン スタイル。次の表のいずれかのオプションに指定します。

ライン スタイル説明結果として得られるライン
'-'実線

'--'破線

':'点線

'-.'一点鎖線

'none'ラインなしラインなし

ライン幅。ポイント単位の正の値として指定します。1 ポイント = 1/72 インチです。ラインがマーカーをもつ場合、ライン幅はマーカー エッジにも影響します。

マーカー記号。次の表のいずれかの値を指定します。既定では、ラインにマーカーはありません。マーカーを指定することで、ライン上の選択した点にマーカーが追加されます。

説明
'o'
'+'プラス記号
'*'アスタリスク
'.'
'x'十字
'square' または 's'正方形
'diamond' または 'd'菱形
'^'上向き三角形
'v'下向き三角形
'>'右向き三角形
'<'左向き三角形
'pentagram' または 'p'星形五角形
'hexagram' または 'h'星形六角形
'none'マーカーなし

マーカーの輪郭の色。'auto'、RGB 3 成分、16 進数のカラー コード、色の名前、または省略名として指定します。'auto' の既定値では EdgeColor プロパティと同じ色が使用されます。

カスタム色には、RGB 3 成分または 16 進数のカラー コードを指定します。

  • RGB 3 成分は、色の赤、緑、青成分の強度を指定する 3 成分の行ベクトルです。強度は [0,1] の範囲でなければなりません。たとえば [0.4 0.6 0.7] のようになります。

  • 16 進数のカラー コードは、ハッシュ記号 (#) の後に 3 つまたは 6 つの 0 から F までの範囲の 16 進数の桁を続けた文字ベクトルまたは string スカラーです。この値では大文字と小文字は区別されません。したがって、カラー コード '#FF8800''#ff8800''#F80'、および '#f80' は等価です。

あるいは、一般的な色を名前で指定できます。この表は、名前の付いた色のオプションと、等価な RGB 3 成分および 16 進数のカラー コードの一覧です。

色の名前省略名RGB 3 成分16 進数のカラー コード外観
'red''r'[1 0 0]'#FF0000'

'green''g'[0 1 0]'#00FF00'

'blue''b'[0 0 1]'#0000FF'

'cyan' 'c'[0 1 1]'#00FFFF'

'magenta''m'[1 0 1]'#FF00FF'

'yellow''y'[1 1 0]'#FFFF00'

'black''k'[0 0 0]'#000000'

'white''w'[1 1 1]'#FFFFFF'

'none'適用不可適用不可適用不可色なし

MATLAB で多くの種類のプロットで使用されている既定の色の RGB 3 成分および 16 進数のカラー コードを次に示します。

RGB 3 成分16 進数のカラー コード外観
[0 0.4470 0.7410]'#0072BD'

[0.8500 0.3250 0.0980]'#D95319'

[0.9290 0.6940 0.1250]'#EDB120'

[0.4940 0.1840 0.5560]'#7E2F8E'

[0.4660 0.6740 0.1880]'#77AC30'

[0.3010 0.7450 0.9330]'#4DBEEE'

[0.6350 0.0780 0.1840]'#A2142F'

例: [0.5 0.5 0.5]

例: 'blue'

例: '#D2F9A7'

マーカーの塗りつぶし色。'auto'、RGB 3 成分、16 進数のカラー コード、色の名前、または省略名として指定します。'auto' の値には MarkerEdgeColor プロパティと同じ色が使用されます。

カスタム色には、RGB 3 成分または 16 進数のカラー コードを指定します。

  • RGB 3 成分は、色の赤、緑、青成分の強度を指定する 3 成分の行ベクトルです。強度は [0,1] の範囲でなければなりません。たとえば [0.4 0.6 0.7] のようになります。

  • 16 進数のカラー コードは、ハッシュ記号 (#) の後に 3 つまたは 6 つの 0 から F までの範囲の 16 進数の桁を続けた文字ベクトルまたは string スカラーです。この値では大文字と小文字は区別されません。したがって、カラー コード '#FF8800''#ff8800''#F80'、および '#f80' は等価です。

あるいは、一般的な色を名前で指定できます。この表は、名前の付いた色のオプションと、等価な RGB 3 成分および 16 進数のカラー コードの一覧です。

色の名前省略名RGB 3 成分16 進数のカラー コード外観
'red''r'[1 0 0]'#FF0000'

'green''g'[0 1 0]'#00FF00'

'blue''b'[0 0 1]'#0000FF'

'cyan' 'c'[0 1 1]'#00FFFF'

'magenta''m'[1 0 1]'#FF00FF'

'yellow''y'[1 1 0]'#FFFF00'

'black''k'[0 0 0]'#000000'

'white''w'[1 1 1]'#FFFFFF'

'none'適用不可適用不可適用不可色なし

MATLAB で多くの種類のプロットで使用されている既定の色の RGB 3 成分および 16 進数のカラー コードを次に示します。

RGB 3 成分16 進数のカラー コード外観
[0 0.4470 0.7410]'#0072BD'

[0.8500 0.3250 0.0980]'#D95319'

[0.9290 0.6940 0.1250]'#EDB120'

[0.4940 0.1840 0.5560]'#7E2F8E'

[0.4660 0.6740 0.1880]'#77AC30'

[0.3010 0.7450 0.9330]'#4DBEEE'

[0.6350 0.0780 0.1840]'#A2142F'

例: [0.3 0.2 0.1]

例: 'green'

例: '#D2F9A7'

マーカー サイズ。ポイント単位の正の値として指定します。1 ポイント = 1/72 インチです。

出力引数

すべて折りたたむ

1 つ以上のオブジェクト。スカラーまたはベクトルとして返されます。オブジェクトは、陰関数 surface オブジェクトです。これらのオブジェクトを使用して、特定のラインのプロパティのクエリと変更を行います。詳細は、ImplicitFunctionSurface のプロパティ を参照してください。

アルゴリズム

fimplicit3f のシンボリック変数を x 軸、y 軸、および z 軸に割り当て、symvar は割り当てられる変数の順番を決定します。そのため、変数名と軸名が対応しない場合があります。fimplicit3 が x、y または z を対応する軸に割り当てるように強制するには、プロットするシンボリック関数を作成し、そのシンボリック関数を fimplicit3 に渡します。

たとえば、次のコードは陰関数 f(x,y,z) = x + z のルートを 2 つの方法でプロットします。1 つ目の方法では、fimplicit3 が x および z を対応する軸に割り当てるように強制します。2 つ目の方法では、fimplicit3symvar に従って変数の順番と軸の割り当てを決定します。fimplicit3 は x および z を、それぞれ x 軸および y 軸に割り当てます。

syms x y z;
f(x,y,z) = x + z;

figure;
subplot(2,1,1)
fimplicit3(f);
view(-38,71);
subplot(2,1,2)
fimplicit3(f(x,y,z)); % Or fimplicit3(x + z);

R2016b で導入