อ่าน 4 นาที
คิวทีพี
QuTiP ซึ่งย่อมาจาก Quantum Toolbox in Python เป็นไลบรารี ซอฟต์แวร์ ฟิสิกส์เชิงคำนวณ แบบโอเพนซอร์ส สำหรับ การจำลองระบบควอนตัม โดยเฉพาะ ระบบควอนตัมแบบเปิด [ 1 ] [ 2 ] QuTiP...
คิวทีพี
| คิวทีพี | |
|---|---|
| เวอร์ชันเสถียร | 4.7.0 / 8 กุมภาพันธ์ 2022 |
| รุ่นทดลองใช้งาน | 5.0.0.dev |
| เขียนเป็น | ไพธอน |
| แพลตฟอร์ม | ข้ามแพลตฟอร์ม |
| พิมพ์ | ห้องสมุด |
| ใบอนุญาต | เงื่อนไข BSD 3 ข้อ |
| เว็บไซต์ | qutip.org |
| ที่เก็บข้อมูล | github.com/qutip/qutip |
QuTiPซึ่งย่อมาจากQuantum Toolbox in Pythonเป็นไลบรารี ซอฟต์แวร์ ฟิสิกส์เชิงคำนวณแบบโอเพนซอร์ส สำหรับการจำลองระบบควอนตัมโดยเฉพาะระบบควอนตัมแบบเปิด[ 1 ] [ 2 ] QuTiP อนุญาตให้จำลองแฮมิลโทเนียนที่มีการพึ่งพาเวลาแบบใดก็ได้ ทำให้สามารถจำลองสถานการณ์ที่น่าสนใจในด้านควอนตัมออปติกส์การดักจับไอออน วงจรตัวนำยิ่งยวดและตัวเรโซเนเตอร์นาโนเชิงกลควอนตัม ไลบรารีนี้มีสิ่งอำนวยความสะดวก ในการแสดงภาพที่ครอบคลุมสำหรับเนื้อหาภายใต้การจำลอง
API ของ QuTiP มี อินเทอร์เฟซ Pythonและใช้Cythonเพื่อให้สามารถคอมไพล์และขยายฟังก์ชันการทำงานได้ในขณะรันไทม์ผ่านภาษา CและC++ QuTiP ถูกสร้างขึ้นมาให้ทำงานได้ดีกับแพ็กเกจ Python ยอดนิยมเช่น NumPy , SciPy , MatplotlibและIPython
ประวัติศาสตร์
แนวคิดสำหรับโครงการ QuTip เกิดขึ้นในปี 2010 โดย Paul Nation นักศึกษาปริญญาเอก ซึ่งใช้กล่องเครื่องมือควอนตัมออปติกส์สำหรับMATLABในงานวิจัยของเขา ตามที่ Paul Nation กล่าว เขาต้องการสร้างแพ็กเกจ Python ที่คล้ายกับ qotoolbox เพราะเขา "ไม่ค่อยชอบ MATLAB" และตัดสินใจ "เขียนมันเอง" [ 3 ] ในฐานะนักวิจัยหลังปริญญาเอกที่สถาบัน RIKENในญี่ปุ่น เขาได้พบกับ Robert Johansson และทั้งสองได้ร่วมกันพัฒนาแพ็กเกจนี้ แตกต่างจาก qotoolbox รุ่นก่อนหน้าซึ่งอาศัยสภาพแวดล้อม MATLAB ที่เป็นกรรมสิทธิ์ แพ็กเกจนี้ได้รับการเผยแพร่ในปี 2012 ภายใต้ใบอนุญาตโอเพนซอร์ส[ 2 ]
เวอร์ชันที่สร้างโดย Nation และ Johansson มีคุณสมบัติที่สำคัญที่สุดของแพ็กเกจอยู่แล้ว แต่ขอบเขตและคุณสมบัติของ QuTips กำลังได้รับการขยายอย่างต่อเนื่องโดยชุมชนผู้ร่วมพัฒนาจำนวนมาก[ 4 ]ได้รับความนิยมเพิ่มขึ้นในหมู่นักฟิสิกส์ โดยมียอดดาวน์โหลดมากกว่า 250,000 ครั้งในปี 2021 [ 5 ]
ตัวอย่าง
การสร้างวัตถุควอนตัม
>>> import qutip >>> import numpy as np >>> psi = qutip.Qobj ([[ 0.6 ] , [ 0.8 ]]) # สร้างสถานะควอนตัมจากลิสต์>>> psi วัตถุควอนตัม: dims = [[2], [1]], shape = (2, 1), type = ket ข้อมูลQobj = [[0.6] [ 0.8 ]] >>> phi = qutip.Qobj ( np.array ([ 0.8 , -0.6 ])) # สร้างสถานะควอนตัมจากอาร์เรย์ numpy >>> phi วัตถุควอนตั ม : dims = [[2], [1]], shape = ( 2, 1), type = ket ข้อมูล Qobj = [[0.8] [-0.6]] >>> e0 = qutip . basis ( 2 , 0 ) # สร้างเวกเตอร์ฐาน>>> e0 วัตถุควอนตัม: dims = [[2], [1]], shape = (2, 1), type = ket ข้อมูล Qobj = [[1.] [0.]] >>> A = qutip . Qobj ( np . array ([[ 1 , 2 j ], [ - 2 j , 1 ]])) # สร้างตัวดำเนินการควอนตัมจากอาร์เรย์ numpy >>> A วัตถุควอนตัม: dims = [[2], [2]], shape = (2, 2), type = oper, isherm = True ข้อมูล Qobj = [[1.+0.j 0.+2.j] [0.-2.j 1.+0.j]] >>> qutip . sigmay () # วัตถุควอนตัมทั่วไปบางอย่าง เช่น เมทริกซ์ Pauli ถูกกำหนดไว้ล่วงหน้าในแพ็คเกจ qutip วัตถุควอนตัม: dims = [[2], [2]], shape = (2, 2), type = oper, isherm = True ข้อมูล Qobj = [[0.+0.j 0.-1.j] [0.+1.j 0.+0.j]]การดำเนินงานขั้นพื้นฐาน
>>> A * qutip . sigmax () + qutip . sigmay () # เราสามารถบวกและคูณวัตถุควอนตัมที่มีรูปร่างและมิติที่เข้ากันได้วัตถุควอนตัม: dims = [[2], [2]], shape = (2, 2), type = oper, isherm = False ข้อมูล Qobj = [[0.+2.j 1.-1.j] [1.+1.j 0.-2.j]] >>> psi . dag () # คอนจูเกตเฮอร์มิเชียนวัตถุควอนตัม: dims = [[1], [2]], shape = (1, 2), type = bra ข้อมูล Qobj = [[0.6 0.8]] >>> psi . proj () # โปรเจกเตอร์ไปยังสถานะควอนตัมวัตถุควอนตัม: dims = [[2], [2]], shape = (2, 2), type = oper, isherm = True ข้อมูล Qobj = [[0.36 0.48] [0.48 0.64]] >>> A . tr () # ร่องรอยของตัวดำเนินการ2.0 >>> A . eigenstates () # แปลงตัวดำเนินการให้เป็นแนวทแยง(array([-1., 3.]), array([Quantum object: dims = [[2], [1]], shape = (2, 1), type = ket Qobj data = [[-0.70710678+0.j ] [ 0. -0.70710678j]] , Quantum object: dims = [[2], [1]], shape = (2, 1), type = ket Qobj data = [[-0.70710678+0.j ] [ 0. +0.70710678j]] ], dtype=object)) >>> ( 1 j * A ) . expm () # เมทริกซ์เอกซ์โพเนนเชียลของตัวดำเนินการวัตถุควอนตัม: dims = [[2], [2]], shape = (2, 2), type = oper, isherm = False ข้อมูล Qobj = [[-0.2248451-0.35017549j -0.4912955-0.7651474j ] [ 0.4912955+0.7651474j -0.2248451-0.35017549j]] >>> qutip . เทนเซอร์( qutip . sigmaz (), qutip . sigmay ()) # ผลคูณเทนเซอร์ วัตถุควอนตัม: dims = [[2, 2], [2, 2]], shape = (4, 4), type = oper, isherm = True ข้อมูล Qobj = [[0.+0.j 0.-1.j 0.+0.j 0.+0.j] [0.+1.j 0.+0.j 0.+0.j 0.+0.j] [0.+0.j 0.+0.j 0.+0.j 0.+1.j] [0.+0.j 0.+0.j 0.-1.j 0.+0.j]]วิวัฒนาการของเวลา
>>> Hamiltonian = qutip.sigmay ( ) >>> times = np.linspace ( 0 , 2 , 10 ) >>> result = qutip.sesolve ( Hamiltonian , psi , times , [ psi.proj ( ) , phi.proj ( ) ] ) # วิวัฒนาการเวลา แบบเอกภาพของระบบตามสมการชโรดิงเจอร์>>> expectpsi , expectphi = result.expect # ค่าคาดหวัง ของตัว ฉายภาพบน psi และ phi >>> plt.figure ( dpi = 200 ) >>> plt.plot ( times , expectpsi ) >>> plt.plot ( times , expectphi ) >>> plt.legend ( [ r " $ \ psi$" , r " $\phi $ " ] ) >>> plt.show ( )การจำลองวิวัฒนาการเวลาที่ไม่เป็นเอกภาพตามสมการหลักของ Lindblad สามารถทำได้ด้วยqutip.mesolveฟังก์ชัน[ 6 ]
ลิงก์ภายนอก
- เว็บไซต์อย่างเป็นทางการ
- qutipบนGitHub
สรุปเนื้อหา
ข้อมูลสำคัญจากบทความ
ข้อมูลสำคัญเกี่ยวกับ คิวทีพี
QuTiP ซึ่งย่อมาจาก Quantum Toolbox in Python เป็นไลบรารี ซอฟต์แวร์ ฟิสิกส์เชิงคำนวณ แบบโอเพนซอร์ส สำหรับ การจำลองระบบควอนตัม โดยเฉพาะ ระบบควอนตัมแบบเปิด [ 1 ] [ 2 ] QuTiP...
ประวัติศาสตร์
แนวคิดสำหรับโครงการ QuTip เกิดขึ้นในปี 2010 โดย Paul Nation นักศึกษาปริญญาเอก ซึ่งใช้ กล่องเครื่องมือควอนตัมออปติกส์ สำหรับ MATLAB ในงานวิจัยของเขา ตามที่ Paul Nation กล่าว เขาต้องการสร้างแพ็กเกจ Python ที่คล้ายกับ qotoolbox เพราะเขา "ไม่ค่อยชอบ MATLAB"...
การสร้างวัตถุควอนตัม
>>> import qutip >>> import numpy as np >>> psi = qutip.Qobj ([[ 0.6 ] , [ 0.8 ]]) # สร้างสถานะควอนตัมจากลิสต์ >>> psi วัตถุ ควอนตัม: dims = [[2], [1]], shape = (2, 1), type = ket ข้อมูล Qobj = [[0.6] [ 0.8 ]] >>> phi = qutip.Qobj ( np.array ([ 0.8 , -0.
การดำเนินงานขั้นพื้นฐาน
>>> A * qutip . sigmax () + qutip . sigmay () # เราสามารถบวกและคูณวัตถุควอนตัมที่มีรูปร่างและมิติที่เข้ากันได้ วัตถุควอนตัม: dims = [[2], [2]], shape = (2, 2), type = oper, isherm = False ข้อมูล Qobj = [[0.+2.j 1.-1.j] [1.+1.j 0.-2.j]] >>> psi .