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)
ข้อมูลโค้ดด้านบนให้ผลลัพธ์ต่อไปนี้ -