5.4. 演算

5.4.1. 単項演算

pysimple.__pos__(obj) +obj

単項演算 +obj を返します.

戻り値

obj が funcable-type の場合は Parameter を,それ以外の場合は Expression を返します.

戻り値の型

Parameter or Expression

pysimple.__neg__(obj1) -obj

単項演算 -obj1 を返します.

戻り値

obj が funcable-type の場合は Parameter を,それ以外の場合は Expression を返します.

戻り値の型

Parameter or Expression

5.4.2. 算術演算

Set.__sub__(rset) Set - rset

Set に含まれて rset に含まれない集合を返します.

パラメータ

rset (iterable) -- Set や set でなくても構いません.

戻り値の型

Set

サンプル

>>> I = Set(value=[1,2,3,4], name='I')
>>> J = Set(value=[2,4,6,8], name='J')
>>> I - J
Set(name='(I-J)', value=[1, 3])
>>> I - {2,4,6,8}
Set(name='(I-{8, 2, 4, 6})', value=[1, 3])
>>> I - [2,4,6,8]
Set(name='(I-[2, 4, 6, 8])', value=[1, 3])
Set.__mul__(rset) Set * rset

Set と rset の直積集合を返します.

パラメータ

rset (iterable) -- Set や set でなくても構いません.

戻り値の型

Set

サンプル

>>> I = Set(value=[1,2], name='I')
>>> I * I
Set(name='(I*I)', dim=2, value=[(1, 1), (1, 2), (2, 1), (2, 2)])
>>> I * {3,4}
Set(name='(I*{3, 4})', dim=2, value=[(1, 3), (1, 4), (2, 3), (2, 4)])
>>> I * [3,4]
Set(name='(I*[3, 4])', dim=2, value=[(1, 3), (1, 4), (2, 3), (2, 4)])
>>> I * I * I
Set(name='((I*I)*I)', dim=3, value=[(1, 1, 1), (1, 1, 2), (1, 2, 1), (1, 2, 2), (2, 1, 1), (2, 1, 2), (2, 2, 1), (2, 2, 2)])
Set.__rsub__(lset) lset - Set

lset に含まれて Set に含まれない集合を返します.

パラメータ

rset (iterable) -- Set や set でなくても構いません.

戻り値の型

Set

サンプル

>>> I = Set(value=[1,2,3,4], name='I')
>>> {2,4,6,8} - I
Set(name='({8, 2, 4, 6}-I)', value=[8, 6])
>>> [2,4,6,8] - I
Set(name='([2, 4, 6, 8]-I)', value=[6, 8])
Set.__rmul__(lset) lset * Set

lset と Set の直積集合を返します.

パラメータ

rset (iterable) -- Set や set でなくても構いません.

戻り値の型

Set

サンプル

>>> I = Set(value=[1,2], name='I')
>>> {3,4} * I
Set(name='({3, 4}*I)', dim=2, value=[(3, 1), (3, 2), (4, 1), (4, 2)])
>>> [3,4] * I
Set(name='([3, 4]*I)', dim=2, value=[(3, 1), (3, 2), (4, 1), (4, 2)])
pysimple.__add__(obj1, obj2) obj1 + obj2

二項演算 obj1+obj2 を返します.

パラメータ
戻り値

obj1 または obj2 が Variable, Expression の場合は Expression を, それ以外の場合は Parameter を返します.

戻り値の型

Parameter or Expression

pysimple.__sub__(obj1, obj2) obj1 - obj2

二項演算 obj1-obj2 を返します.

パラメータ
戻り値

obj1 または obj2 が Variable, Expression の場合は Expression を, それ以外の場合は Parameter を返します.

戻り値の型

Parameter or Expression

pysimple.__mul__(obj1, obj2) obj1 * obj2

二項演算 obj1*obj2 を返します.

パラメータ
戻り値

obj1 または obj2 が Variable, Expression の場合は Expression を, それ以外の場合は Parameter を返します. 演算結果が線形または二次でない場合,TypeError が投げられます.

戻り値の型

Parameter or Expression

例外

TypeError -- high dimension operand type(s) for *: {} and {}

pysimple.__mod__(obj1, obj2) obj1 % obj2

二項演算 obj1%obj2 を返します.

パラメータ
戻り値

演算結果が線形または二次でない場合,TypeError が投げられます.

戻り値の型

Parameter

例外

TypeError -- high dimension operand type(s) for %: {} and {}

pysimple.__truediv__(obj1, obj2) obj1 / obj2

二項演算 obj1/obj2 を返します.

パラメータ
戻り値

obj1 が Variable, Expression の場合は Expression を, それ以外の場合は Parameter を返します. 演算結果が線形または二次でない場合,TypeError が投げられます.

戻り値の型

Parameter or Expression

例外

TypeError -- high dimension operand type(s) for /: {} and {}

pysimple.__floordiv__(obj1, obj2) obj1 // obj2

二項演算 obj1//obj2 を返します.

パラメータ
戻り値

演算結果が線形または二次でない場合,TypeError が投げられます.

戻り値の型

Parameter

例外

TypeError -- high dimension operand type(s) for //: {} and {}

pysimple.__pow__(obj1, obj2) obj1 ** obj2

二項演算 obj1**obj2 を返します.

パラメータ
戻り値

演算結果が線形または二次でない場合,TypeError が投げられます.

戻り値の型

Parameter

例外

TypeError -- high dimension operand type(s) for **: {} and {}

pysimple.__radd__(obj1, obj2)
pysimple.__rsub__(obj1, obj2)
pysimple.__rmul__(obj1, obj2)
pysimple.__rmod__(obj1, obj2)
pysimple.__rdiv__(obj1, obj2)
pysimple.__rtruediv__(obj1, obj2)
pysimple.__rfloordiv__(obj1, obj2)
pysimple.__rpow__(obj1, obj2)

同様に定義されています.

5.4.3. 比較演算

pysimple.__lt__(obj)

Return self<value.

pysimple.__gt__(obj)

Return self>value.

pysimple.__le__(obj)

Return self<=value.

pysimple.__ge__(obj)

Return self>=value.

pysimple.__eq__(obj)

Return self==value.

pysimple.__ne__(obj)

Return self!=value.

5.4.4. ビット演算

Set.__or__(rset) Set | rset

Set と rset のいずれかに含まれる集合を返します.

パラメータ

rset (iterable) -- Set や set でなくても構いません.

戻り値の型

Set

サンプル

>>> I = Set(value=[1,2,3,4], name='I')
>>> J = Set(value=[2,4,6,8], name='J')
>>> I | J
Set(name='(I|J)', value=[1, 2, 3, 4, 6, 8])
>>> I | {2,4,6,8}
Set(name='(I|{8, 2, 4, 6})', value=[1, 2, 3, 4, 8, 6])
>>> I | [2,4,6,8]
Set(name='(I|[2, 4, 6, 8])', value=[1, 2, 3, 4, 6, 8])
Set.__and__(rset) Set & rset

Set と rset の両方に含まれる集合を返します.

パラメータ

rset (iterable) -- Set や set でなくても構いません.

戻り値の型

Set

サンプル

>>> I = Set(value=[1,2,3,4], name='I')
>>> J = Set(value=[2,4,6,8], name='J')
>>> I & J
Set(name='(I&J)', value=[2, 4])
>>> I & {2,4,6,8}
Set(name='(I&{8, 2, 4, 6})', value=[2, 4])
>>> I & [2,4,6,8]
Set(name='(I&[2, 4, 6, 8])', value=[2, 4])
Set.__xor__(rset) Set ^ rset

Set と rset のいずれか一方にだけ含まれる集合を返します.

パラメータ

rset (iterable) -- Set や set でなくても構いません.

戻り値の型

Set

サンプル

>>> I = Set(value=[1,2,3,4], name='I')
>>> J = Set(value=[2,4,6,8], name='J')
>>> I ^ J
Set(name='(I^J)', value=[1, 3, 6, 8])
>>> I ^ {2,4,6,8}
Set(name='(I^{8, 2, 4, 6})', value=[1, 3, 8, 6])
>>> I ^ [2,4,6,8]
Set(name='(I^[2, 4, 6, 8])', value=[1, 3, 6, 8])
Set.__ror__(lset) lset | Set

lset と Set のいずれかに含まれる集合を返します.

パラメータ

lset (iterable) -- Set や set でなくても構いません.

戻り値の型

Set

サンプル

>>> I = Set(value=[1,2,3,4], name='I')
>>> {2,4,6,8} | I
Set(name='({8, 2, 4, 6}|I)', value=[1, 2, 3, 4, 8, 6])
>>> [2,4,6,8] | I
Set(name='([2, 4, 6, 8]|I)', value=[1, 2, 3, 4, 6, 8])
Set.__rand__(lset) lset & Set

lset と Set の両方に含まれる集合を返します.

パラメータ

lset (iterable) -- Set や set でなくても構いません.

戻り値の型

Set

サンプル

>>> I = Set(value=[1,2,3,4], name='I')
>>> {2,4,6,8} & I
Set(name='({8, 2, 4, 6}&I)', value=[2, 4])
>>> [2,4,6,8] & I
Set(name='([2, 4, 6, 8]&I)', value=[2, 4])
Set.__rxor__(lset) lset ^ Set

lset と Set のいずれか一方にだけ含まれる集合を返します.

パラメータ

lset (iterable) -- Set や set でなくても構いません.

戻り値の型

Set

サンプル

>>> I = Set(value=[1,2,3,4], name='I')
>>> {2,4,6,8} ^ I
Set(name='({8, 2, 4, 6}^I)', value=[1, 3, 8, 6])
>>> [2,4,6,8] ^ I
Set(name='([2, 4, 6, 8]^I)', value=[1, 3, 6, 8])
Cond.__or__(rcond) Cond | rcond

Cond と rcond のいずれかの条件を満たす条件式を返します.

パラメータ

rcond (Cond) --

戻り値の型

Cond

サンプル

>>> i = Element(value=[1,2,3], name='i')
>>> (i<2) | (2<i)
((i<2)|(i>2))[i] in [1, 3]

注釈

Cond.__and__(rcond) Cond & rcond

Cond と rcond の両方の条件を満たす条件式を返します.

パラメータ

rcond (Cond) --

戻り値の型

Cond

サンプル

>>> i = Element(value=[1,2,3], name='i')
>>> (1<i) & (i<3)
((i>1)&(i<3))[i] in [2]

注釈

  • 演算子の優先順位 」 により,各条件には括弧をつける必要があります.

  • 3 つ以上の条件文の場合,Condition 関数を使用した方が効率的で見やすいです. Condition(i, (1<i, i<5, i!=3))