Main Content

このページの内容は最新ではありません。最新版の英語を参照するには、ここをクリックします。

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)

Figure contains an axes object. The axes object contains an object of type implicitfunctionsurface.

関数 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)

Figure contains an axes object. The axes object contains an object of type implicitfunctionsurface.

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)

Figure contains an axes object. The axes object contains an object of type implicitfunctionsurface.

陰的方程式 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);

Figure contains an axes object. The axes object with title xsin(y) blank + blank zcos(x) blank for blank -2 pi blank < blank x blank < blank 2 pi blank and blank -2 pi blank < blank y blank < blank 2 pi, xlabel x, ylabel y contains an object of type implicitfunctionsurface.

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')

Figure contains an axes object. The axes object contains 3 objects of type implicitfunctionsurface.

陰関数表面 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)

Figure contains an axes object. The axes object contains an object of type implicitfunctionsurface.

fi = 
  ImplicitFunctionSurface with properties:

     Function: 1/x^2 - 1/y^2 + 1/z^2
    EdgeColor: [0 0 0]
    LineStyle: '-'
    FaceColor: 'interp'

  Use GET to show all properties

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

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

Figure contains an axes object. The axes object contains an object of type implicitfunctionsurface.

'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')

Figure contains 2 axes objects. Axes object 1 with title Default MeshDensity = 35 contains an object of type implicitfunctionsurface. Axes object 2 with title Increased MeshDensity = 40 contains an object of type implicitfunctionsurface.

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

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

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

Figure contains an axes object. The axes object contains 2 objects of type implicitfunctionsurface.

入力引数

すべて折りたたむ

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

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

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

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

ライン スタイル、マーカー、色。記号を含む string スカラーまたは文字ベクトルとして指定します。記号の順序は任意です。3 つの特性すべて (ライン スタイル、マーカー、色) を指定する必要はありません。たとえば、ライン スタイルを省略してマーカーを指定すると、プロットにはマーカーのみが表示され、ラインは表示されません。

例: "--or" は円マーカーをもつ赤い破線です。

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

Sample of solid line

"--"破線

Sample of dashed line

":"点線

Sample of dotted line

"-."一点鎖線

Sample of dash-dotted line, with alternating dashes and dots

マーカー説明結果として得られるマーカー
"o"

Sample of circle marker

"+"プラス記号

Sample of plus sign marker

"*"アスタリスク

Sample of asterisk marker

"."

Sample of point marker

"x"十字

Sample of cross marker

"_"横線

Sample of horizontal line marker

"|"縦線

Sample of vertical line marker

"square"正方形

Sample of square marker

"diamond"菱形

Sample of diamond marker

"^"上向き三角形

Sample of upward-pointing triangle marker

"v"下向き三角形

Sample of downward-pointing triangle marker

">"右向き三角形

Sample of right-pointing triangle marker

"<"左向き三角形

Sample of left-pointing triangle marker

"pentagram"星形五角形

Sample of pentagram marker

"hexagram"星形六角形

Sample of hexagram marker

色の名前省略名RGB 3 成分外観
"red""r"[1 0 0]

Sample of the color red

"green""g"[0 1 0]

Sample of the color green

"blue""b"[0 0 1]

Sample of the color blue

"cyan" "c"[0 1 1]

Sample of the color cyan

"magenta""m"[1 0 1]

Sample of the color magenta

"yellow""y"[1 1 0]

Sample of the color yellow

"black""k"[0 0 0]

Sample of the color black

"white""w"[1 1 1]

Sample of the color white

名前と値の引数

オプションの引数のペアを Name1=Value1,...,NameN=ValueN として指定します。ここで、Name は引数名、Value は対応する値です。名前と値の引数は他の引数の後になければなりませんが、ペアの順序は関係ありません。

R2021a より前では、コンマを使用して名前と値の各ペアを区切り、Name を引用符で囲みます。

例: '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 進数のカラー コードは、string スカラー、またはハッシュ記号 (#) の後に 3 つまたは 6 つの 0 から F までの範囲の 16 進数の桁を続けた文字ベクトルです。この値では大文字と小文字は区別されません。そのため、カラー コード "#FF8800""#ff8800""#F80"、および "#f80" は等価です。

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

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

Sample of the color red

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

Sample of the color green

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

Sample of the color blue

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

Sample of the color cyan

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

Sample of the color magenta

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

Sample of the color yellow

"black""k"[0 0 0]"#000000"

Sample of the color black

"white""w"[1 1 1]"#FFFFFF"

Sample of the color white

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

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

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

Sample of RGB triplet [0 0.4470 0.7410], which appears as dark blue

[0.8500 0.3250 0.0980]"#D95319"

Sample of RGB triplet [0.8500 0.3250 0.0980], which appears as dark orange

[0.9290 0.6940 0.1250]"#EDB120"

Sample of RGB triplet [0.9290 0.6940 0.1250], which appears as dark yellow

[0.4940 0.1840 0.5560]"#7E2F8E"

Sample of RGB triplet [0.4940 0.1840 0.5560], which appears as dark purple

[0.4660 0.6740 0.1880]"#77AC30"

Sample of RGB triplet [0.4660 0.6740 0.1880], which appears as medium green

[0.3010 0.7450 0.9330]"#4DBEEE"

Sample of RGB triplet [0.3010 0.7450 0.9330], which appears as light blue

[0.6350 0.0780 0.1840]"#A2142F"

Sample of RGB triplet [0.6350 0.0780 0.1840], which appears as dark red

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

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

Sample of solid line

"--"破線

Sample of dashed line

":"点線

Sample of dotted line

"-."一点鎖線

Sample of dash-dotted line, with alternating dashes and dots

"none"ラインなしラインなし

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

ライン幅はピクセルの幅よりも細くすることはできません。ライン幅をシステムのピクセル幅よりも小さい値に設定すると、線は 1 ピクセルの幅で表示されます。

マーカー記号。この表にリストされたいずれかの値として指定します。既定では、オブジェクトにマーカーが表示されません。マーカー記号を指定すると、各データ点または頂点にマーカーが追加されます。

マーカー説明結果として得られるマーカー
"o"

Sample of circle marker

"+"プラス記号

Sample of plus sign marker

"*"アスタリスク

Sample of asterisk marker

"."

Sample of point marker

"x"十字

Sample of cross marker

"_"横線

Sample of horizontal line marker

"|"縦線

Sample of vertical line marker

"square"正方形

Sample of square marker

"diamond"菱形

Sample of diamond marker

"^"上向き三角形

Sample of upward-pointing triangle marker

"v"下向き三角形

Sample of downward-pointing triangle marker

">"右向き三角形

Sample of right-pointing triangle marker

"<"左向き三角形

Sample of left-pointing triangle marker

"pentagram"星形五角形

Sample of pentagram marker

"hexagram"星形六角形

Sample of hexagram marker

"none"マーカーなし適用不可

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

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

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

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

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

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

Sample of the color red

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

Sample of the color green

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

Sample of the color blue

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

Sample of the color cyan

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

Sample of the color magenta

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

Sample of the color yellow

"black""k"[0 0 0]"#000000"

Sample of the color black

"white""w"[1 1 1]"#FFFFFF"

Sample of the color white

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

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

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

Sample of RGB triplet [0 0.4470 0.7410], which appears as dark blue

[0.8500 0.3250 0.0980]"#D95319"

Sample of RGB triplet [0.8500 0.3250 0.0980], which appears as dark orange

[0.9290 0.6940 0.1250]"#EDB120"

Sample of RGB triplet [0.9290 0.6940 0.1250], which appears as dark yellow

[0.4940 0.1840 0.5560]"#7E2F8E"

Sample of RGB triplet [0.4940 0.1840 0.5560], which appears as dark purple

[0.4660 0.6740 0.1880]"#77AC30"

Sample of RGB triplet [0.4660 0.6740 0.1880], which appears as medium green

[0.3010 0.7450 0.9330]"#4DBEEE"

Sample of RGB triplet [0.3010 0.7450 0.9330], which appears as light blue

[0.6350 0.0780 0.1840]"#A2142F"

Sample of RGB triplet [0.6350 0.0780 0.1840], which appears as dark red

例: [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 進数のカラー コードは、string スカラー、またはハッシュ記号 (#) の後に 3 つまたは 6 つの 0 から F までの範囲の 16 進数の桁を続けた文字ベクトルです。この値では大文字と小文字は区別されません。そのため、カラー コード "#FF8800""#ff8800""#F80"、および "#f80" は等価です。

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

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

Sample of the color red

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

Sample of the color green

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

Sample of the color blue

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

Sample of the color cyan

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

Sample of the color magenta

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

Sample of the color yellow

"black""k"[0 0 0]"#000000"

Sample of the color black

"white""w"[1 1 1]"#FFFFFF"

Sample of the color white

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

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

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

Sample of RGB triplet [0 0.4470 0.7410], which appears as dark blue

[0.8500 0.3250 0.0980]"#D95319"

Sample of RGB triplet [0.8500 0.3250 0.0980], which appears as dark orange

[0.9290 0.6940 0.1250]"#EDB120"

Sample of RGB triplet [0.9290 0.6940 0.1250], which appears as dark yellow

[0.4940 0.1840 0.5560]"#7E2F8E"

Sample of RGB triplet [0.4940 0.1840 0.5560], which appears as dark purple

[0.4660 0.6740 0.1880]"#77AC30"

Sample of RGB triplet [0.4660 0.6740 0.1880], which appears as medium green

[0.3010 0.7450 0.9330]"#4DBEEE"

Sample of RGB triplet [0.3010 0.7450 0.9330], which appears as light blue

[0.6350 0.0780 0.1840]"#A2142F"

Sample of RGB triplet [0.6350 0.0780 0.1840], which appears as dark red

例: [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);
Two plots showing roots of the implicit function f(x,y,z) = x + z, one plot with respect to the x- and z-axes and the other plot with respect to the x- and y-axes

バージョン履歴

R2016b で導入