Main Content

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

piecewise

条件定義された式または関数

説明

pw = piecewise(cond1,val1,cond2,val2,...) は、条件 cond1 が true の場合の値が val1、条件 cond2 が true の場合の値が val2 (以下同様) になる、区分的な式または関数 pw を返します。どの条件も true ではない場合、pw の値は NaN になります。

pw = piecewise(cond1,val1,cond2,val2,...,otherwiseVal) は、どの条件も true ではない場合に otherwiseVal の値を持つ区分的な式または関数 pw を返します。

すべて折りたたむ

piecewise を使用して次の区分的式を定義します。

y={-1x<01x>0

syms x
y = piecewise(x < 0,-1,x > 0,1)
y = 

{-1 if  x<01 if  0<x

subs を使用して x を置き換え、-20、および 2 のときの y を評価します。y は、x = 0 では未定義であるため、値は NaN になります。

subs(y,x,[-2 0 2])
ans = (-1NaN1)

次の関数をシンボリックに定義します。

y(x)={-1x<01x>0

syms y(x)
y(x) = piecewise(x < 0,-1,x > 0,1)
y(x) = 

{-1 if  x<01 if  0<x

y(x) はシンボリック関数であるため、x の値について直接評価できます。-20 および 2 のときの y(x) を評価します。y(x) は、x = 0 では未定義であるため、値は NaN になります。詳細は、シンボリック関数の作成を参照してください。

y([-2 0 2])
ans = (-1NaN1)

どの条件も true ではない場合の区分的関数の値 ("その他の値" と呼ばれる) を、追加の入力引数を指定して設定します。追加の引数を指定しない場合、関数のその他の値は、既定では NaN です。

区分的関数の定義

y={-2x<-20-2<x<01otherwise.

syms y(x)
y(x) = piecewise(x < -2,-2,(-2 < x) & (x < 0),0,1)
y(x) = 

{-2 if  x<-20 if  x(-2,0)1 otherwise

linspace を使用して x の値を生成し、区間 -3 から 1y(x) を評価します。他の条件が true でないため、-2 および 0 のときの y(x)1 と評価されます。

xvalues = linspace(-3,1,5)
xvalues = 1×5

    -3    -2    -1     0     1

yvalues = y(xvalues)
yvalues = (-21011)

fplot を使用して次の区分的式をプロットします。

y={-2x<-2x-2<x<22x>2.

syms x
y = piecewise(x < -2,-2,-2 < x < 2,x,x > 2,2);
fplot(y)

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

区分的式では、作成時に既存の仮定が適用されます。区分的式の作成後に設定された仮定は、simplify を使用して式に適用します。

x > 0 と仮定します。次に、同じ条件 x > 0 を持つ区分的式を定義します。piecewise は自動的に仮定を適用して条件を単純化します。

syms x
assume(x > 0)
pw = piecewise(x < 0,-1,x > 0,1)
pw = 1

x の仮定を消去して計算を続けます。

assume(x,'clear')

x > 0 の条件を持つ区分的式 pw を作成します。次に、x > 0 という仮定を設定します。simplify を使用して pw に仮定を適用します。

pw = piecewise(x < 0,-1,x > 0,1);
assume(x > 0)
pw = simplify(pw)
pw = 1

x の仮定を消去して計算を続けます。

assume(x,'clear')

diffint、および limit をそれぞれ使用して、区分的式の微分、積分、極限を求めます。

diff を使用して次の区分的式を微分します。

y={1/xx<-1sin(x)/xx-1

syms x
y = piecewise(x < -1,1/x,x >= -1,sin(x)/x);
diffy = diff(y,x)
diffy = 

{-1x2 if  x<-1cos(x)x-sin(x)x2 if  -1<x

int を使用して、y を積分します。

inty = int(y,x)
inty = 

{log(x) if  x<-1sinint(x) if  -1x

limit を使用して、0 における y の極限を求めます。

limit(y,x,0)
ans = 1

-1 における y の右側極限と左側極限を求めます。詳細は、limitを参照してください。

limit(y,x,-1,'right')
ans = sin(1)
limit(y,x,-1,'left')
ans = -1

2 つの区分的式の和算、減算、除算および乗算を行います。結果の区分的式は、最初の区分的式が定義される場所でのみ定義されます。

syms x
pw1 = piecewise(x < -1,-1,x >= -1,1);
pw2 = piecewise(x < 0,-2,x >= 0,2);
add = pw1+pw2
add = 

{-3 if  x<-1-1 if  x[-1,0)3 if  0x

sub = pw1-pw2
sub = 

{1 if  x<-13 if  x[-1,0)-1 if  0x

mul = pw1*pw2
mul = 

{2 if  x<-1-2 if  x[-1,0)2 if  0x

div = pw1/pw2
div = 

{12 if  x<-1-12 if  x[-1,0)12 if  0x

区分的式の変更は、subs で式の一部を置き換えることによって変更します。区分的式の拡張は、新しい区分的式のその他の値として式を指定します。この操作により 2 つの区分的式が結合されます。piecewise では条件の重複や競合はチェックされません。代わりに、piecewise は、if-else ラダーと同様に、最初の真条件の値を返します。

subs を使用して、区分的式の条件 x < 2x < 0 に変更します。

syms x
pw = piecewise(x < 2,-1,x > 0,1);
pw = subs(pw,x < 2,x < 0)
pw = 

{-1 if  x<01 if  0<x

条件 x > 5 と値 1/xpw に追加するには、pw をその他の値とする新しい区分的式を作成します。

pw = piecewise(x > 5,1/x,pw)
pw = 

{1x if  5<x-1 if  x<01 if  0<x

入力引数

すべて折りたたむ

条件。シンボリックな条件または変数として指定します。シンボリック変数は未知条件を表します。

例: x > 2

条件を満たす場合の値。数値、ベクトル、行列または多次元配列、あるいはシンボリック数、変数、ベクトル、行列、多次元配列、関数または式として指定します。

どの条件も true ではない場合の値。数値、ベクトル、行列または多次元配列、あるいはシンボリック数、変数、ベクトル、行列、多次元配列、関数または式として指定します。otherwiseVal が指定されていない場合、この値は NaN になります。

出力引数

すべて折りたたむ

区分的な式または関数。シンボリック式またはシンボリック関数として指定します。pw の値は、最初に true になる条件 cond の値 val です。pw の値を求めるには、subs を使用して、pw の変数を置き換えます。

ヒント

  • piecewise は条件の重複や競合をチェックしません。区分的式は、最初の真条件の値を返し、以降の真の式をすべて無視します。このように、piecewise は if-else ラダーによく似ています。

バージョン履歴

R2016b で導入