SymPy - นิพจน์เชิงตรรกะ

ฟังก์ชันบูลีนถูกกำหนดไว้ใน sympy.basic.booleanarg module. เป็นไปได้ที่จะสร้างนิพจน์บูลีนด้วยตัวดำเนินการ python มาตรฐาน & (And), | (หรือ), ~ (ไม่ใช่) เช่นเดียวกับ >> และ << นิพจน์บูลีนสืบทอดมาจากคลาสพื้นฐานที่กำหนดไว้ในโมดูลหลักของ SymPy

ฟังก์ชัน BooleanTrue

ฟังก์ชันนี้เทียบเท่ากับ True เช่นเดียวกับ Core Python ส่งคืน Singleton ที่สามารถเรียกค้นได้โดย S.true

>>> from sympy import * 
>>> x=sympify(true) 
>>> x, S.true

ข้อมูลโค้ดด้านบนให้ผลลัพธ์ต่อไปนี้ -

(จริงแท้)

ฟังก์ชัน BooleanFalse

ในทำนองเดียวกันฟังก์ชันนี้เทียบเท่ากับ Boolean False ใน Python และสามารถเข้าถึงได้โดย S.false

>>> from sympy import * 
>>> x=sympify(false) 
>>> x, S.false

ข้อมูลโค้ดด้านบนให้ผลลัพธ์ต่อไปนี้ -

(เท็จเท็จ)

และฟังก์ชั่น

ฟังก์ชันตรรกะ AND จะประเมินอาร์กิวเมนต์ทั้งสองและส่งกลับค่า False หากข้อใดข้อหนึ่งเป็น False ฟังก์ชั่นเลียนแบบ & ตัวดำเนินการ

>>> from sympy import * 
>>> from sympy.logic.boolalg import And 
>>> x,y=symbols('x y') 
>>> x=True 
>>> y=True 
>>> And(x,y), x"&"y

ข้อมูลโค้ดด้านบนให้ผลลัพธ์ต่อไปนี้ -

(จริงแท้)

>>> y=False 
>>> And(x,y), x"&"y

ข้อมูลโค้ดด้านบนให้ผลลัพธ์ต่อไปนี้ -

(เท็จเท็จ)

หรือฟังก์ชัน

ฟังก์ชันนี้จะประเมินอาร์กิวเมนต์บูลีนสองอาร์กิวเมนต์และส่งกลับค่า True หากข้อใดข้อหนึ่งเป็น True เดอะ | ตัวดำเนินการเลียนแบบพฤติกรรมของมันได้อย่างสะดวก

>>> from sympy import * 
>>> from sympy.logic.boolalg import Or 
>>> x,y=symbols('x y') 
>>> x=True 
>>> y=False 
>>> Or(x,y), x|y

ข้อมูลโค้ดด้านบนให้ผลลัพธ์ต่อไปนี้ -

(จริงแท้)

>>> x=False 
>>> y=False 
>>> Or(x,y), x|y

ข้อมูลโค้ดด้านบนให้ผลลัพธ์ต่อไปนี้ -

(เท็จเท็จ)

ไม่ใช่ฟังก์ชัน

ฟังก์ชัน Logical Not ส่งผลให้เกิดการปฏิเสธอาร์กิวเมนต์บูลีน จะคืนค่า True หากอาร์กิวเมนต์เป็น False และส่งคืน False ถ้า True ตัวดำเนินการ ~ ดำเนินการคล้ายกับฟังก์ชัน Not ดังแสดงในตัวอย่างด้านล่าง -

>>> from sympy import * 
>>> from sympy.logic.boolalg import Or, And, Not 
>>> x,y=symbols('x y') 
>>> x=True 
>>> y=False 
>>> Not(x), Not(y)

ข้อมูลโค้ดด้านบนให้ผลลัพธ์ต่อไปนี้ -

(ผิดถูก)

>>> Not(And(x,y)), Not(Or(x,y))

ข้อมูลโค้ดด้านบนให้ผลลัพธ์ต่อไปนี้ -

(ถูกผิด)

ฟังก์ชัน Xor

ฟังก์ชัน Logical XOR (เอกสิทธิ์เฉพาะหรือ) จะส่งคืนค่า True หากอาร์กิวเมนต์จำนวนคี่เป็น True และส่วนที่เหลือเป็น False และส่งกลับ False หากอาร์กิวเมนต์จำนวนคู่เป็น True และส่วนที่เหลือเป็น False การดำเนินการที่คล้ายกันดำเนินการโดยตัวดำเนินการ ^

>>> from sympy import * 
>>> from sympy.logic.boolalg import Xor 
>>> x,y=symbols('x y') 
>>> x=True 
>>> y=False

>>> Xor(x,y), x^y

ข้อมูลโค้ดด้านบนให้ผลลัพธ์ต่อไปนี้ -

(จริงแท้)

>>> a,b,c,d,e=symbols('a b c d e') 
>>> a,b,c,d,e=(True, False, True, True, False) 
>>> Xor(a,b,c,d,e)

ข้อมูลโค้ดด้านบนให้ผลลัพธ์ต่อไปนี้ -

จริง

ในกรณีข้างต้นอาร์กิวเมนต์ (จำนวนคี่) สามอาร์กิวเมนต์เป็น True ดังนั้น Xor จึงคืนค่าจริง อย่างไรก็ตามหากจำนวนอาร์กิวเมนต์ True เป็นจำนวนเท่ากันผลลัพธ์จะเป็น False ดังที่แสดงด้านล่าง -

>>> a,b,c,d,e=(True, False, False, True, False) 
>>> Xor(a,b,c,d,e)

ข้อมูลโค้ดด้านบนให้ผลลัพธ์ต่อไปนี้ -

เท็จ

ฟังก์ชัน Nand

ฟังก์ชันนี้ดำเนินการ NAND แบบลอจิคัล จะประเมินอาร์กิวเมนต์และส่งกลับ True หากมีข้อโต้แย้งใด ๆ เป็นเท็จและ False หากเป็น True ทั้งหมด

>>> from sympy import * 
>>> from sympy.logic.boolalg import Nand 
>>> a,b,c=symbols('a b c') 
>>> a,b,c=(True, False, True) 
>>> Nand(a,b,c), Nand(a,c)

ข้อมูลโค้ดด้านบนให้ผลลัพธ์ต่อไปนี้ -

(ถูกผิด)

หรือฟังก์ชัน

ฟังก์ชันนี้ดำเนินการดำเนินการ Logical NOR จะประเมินอาร์กิวเมนต์และส่งกลับ False หากมีข้อโต้แย้งใด ๆ เป็น True และ True หากเป็นเท็จทั้งหมด

>>> from sympy import * 
>>> from sympy.logic.boolalg import Nor 
>>> a,b,c=symbols('a b c') 
>>> a,b,c=(True, False, True) 
>>> Nor(a,b,c), Nor(a,c)

ข้อมูลโค้ดด้านบนให้ผลลัพธ์ต่อไปนี้ -

(เท็จเท็จ)

โปรดทราบว่าแม้ว่า SymPy จะให้ตัวดำเนินการ ^ สำหรับ Xor, ~ for Not, | สำหรับฟังก์ชัน Or และ & for And ตามความสะดวกการใช้งานปกติใน Python จะเหมือนกับตัวดำเนินการแบบบิต ดังนั้นหากตัวถูกดำเนินการเป็นจำนวนเต็มผลลัพธ์ก็จะแตกต่างกัน

ฟังก์ชันเทียบเท่า

ฟังก์ชันนี้จะคืนค่าความสัมพันธ์ที่เทียบเท่า เทียบเท่า (A, B) จะเป็นจริงก็ต่อเมื่อ A และ B เป็นจริงหรือเท็จทั้งคู่ ฟังก์ชันจะคืนค่า True หากอาร์กิวเมนต์ทั้งหมดเทียบเท่ากันในเชิงตรรกะ ส่งคืนเท็จเป็นอย่างอื่น

>>> from sympy import * 
>>> from sympy.logic.boolalg import Equivalent 
>>> a,b,c=symbols('a b c') 
>>> a,b,c=(True, False, True) 
>>> Equivalent(a,b), Equivalent(a,c)

ข้อมูลโค้ดด้านบนให้ผลลัพธ์ต่อไปนี้ -

(ผิดถูก)

ฟังก์ชัน ITE

ฟังก์ชันนี้ทำหน้าที่เป็น If then else clause ในภาษาโปรแกรม IT (A, B, C) จะประเมินและส่งคืนผลลัพธ์ของ B ถ้า A เป็นจริงมิฉะนั้นจะส่งคืนผลลัพธ์ของ C args ทั้งหมดต้องเป็น Booleans

>>> from sympy import * >>> from sympy.logic.boolalg import ITE >>> a,b,c=symbols('a b c') >>> a,b,c=(True, False, True) 
>>> ITE(a,b,c), ITE(a,c,b)

ข้อมูลโค้ดด้านบนให้ผลลัพธ์ต่อไปนี้ -

(ผิดถูก)