2
ทำไมส่วนประกอบสำคัญของ Matlab ถึงมีประสิทธิภาพสูงกว่ารวมอยู่ใน Scipy
ฉันกำลังรู้สึกหงุดหงิดกับวิธีที่ matlab จัดการกับการรวมเชิงตัวเลขกับ Scipy ฉันสังเกตเห็นความแตกต่างต่อไปนี้ในรหัสทดสอบด้านล่าง: รุ่นของ Matlab ทำงานเร็วกว่างูหลามของฉันโดยเฉลี่ย24 เท่า ! เวอร์ชันของ Matlab สามารถคำนวณอินทิกรัลโดยไม่มีการเตือนขณะที่ python คืนค่า nan+nanj ฉันจะทำอะไรได้บ้างเพื่อให้แน่ใจว่าฉันจะได้รับประสิทธิภาพการทำงานเหมือนกันในงูใหญ่เทียบกับสองประเด็นที่กล่าวถึง? ตามเอกสารทั้งสองวิธีควรใช้ "การปรับพื้นที่สี่เหลี่ยมจัตุรัสส่วนกลาง" เพื่อประมาณค่าอินทิกรัล ด้านล่างเป็นรหัสในสองเวอร์ชัน (ค่อนข้างคล้ายกันแม้ว่างูใหญ่ต้องการให้มีการสร้างฟังก์ชั่นครบถ้วนเพื่อให้สามารถจัดการกับการรวมที่ซับซ้อนได้) หลาม import numpy as np from scipy import integrate import time def integral(integrand, a, b, arg): def real_func(x,arg): return np.real(integrand(x,arg)) def imag_func(x,arg): return np.imag(integrand(x,arg)) real_integral = integrate.quad(real_func, a, …