scipy.optimize --- การหาค่ารากและค่าต่ำสุด¶
โมดูลย่อย scipy.optimize จัดเตรียมรูทีนง่ายๆ สำหรับการหาค่ารากและค่าต่ำสุดของฟังก์ชันสเกลาร์ที่ผู้ใช้กำหนด เนื่องจากแต่ละ iteration ต้องเรียก Python callable ที่ผู้ใช้ระบุ ความเร็วที่เพิ่มขึ้นเมื่อเทียบกับการใช้งาน Python ล้วนจึงไม่มากนัก (โดยทั่วไปประมาณ 2 เท่า)
ฟังก์ชัน¶
- scipy.optimize.bisect(f: Callable[[float], float], a: float, b: float, *, xtol: float = xtolerance, maxiter: int = 100) float¶
หาค่าราก f ในช่วง
[a, b]โดยใช้วิธีการแบ่งครึ่ง f ต้องเปลี่ยนเครื่องหมายในช่วงดังกล่าว- พารามิเตอร์:
f -- callable ที่รับ
floatหนึ่งตัวและคืนfloata -- จุดปลายซ้ายของช่วง
b -- จุดปลายขวาของช่วง
xtol -- ค่าความคลาดเคลื่อนสัมบูรณ์ที่ตำแหน่งของราก (ค่าเริ่มต้น
xtolerance)maxiter -- จำนวนสูงสุดของการแบ่งครึ่ง (ค่าเริ่มต้น
100)
- ค่าที่คืน:
ตำแหน่งของรากเป็น
float- ข้อยกเว้น:
ValueError -- หาก
f(a) * f(b) > 0
- scipy.optimize.curve_fit(f: Callable[..., float], xdata: ndarray | list | tuple, ydata: ndarray | list | tuple, p0: ndarray | list | tuple, *, xatol: float = xtolerance, fatol: float = xtolerance, maxiter: int | None = None) None¶
ฟังก์ชันต้นแบบสำหรับการปรับเส้นโค้งแบบ nonlinear least-squares (Levenberg-Marquardt) มีอยู่ในตาราง module เพื่อความเข้ากันได้ของ API แต่ปัจจุบันเป็นเพียง placeholder: รับและตรวจสอบอาร์กิวเมนต์แต่คืนค่า
Noneเสมอ แนะนำให้ใช้fmin()หรือไลบรารีภายนอกจนกว่ารูทีนนี้จะถูกใช้งานจริง- พารามิเตอร์:
f -- model callable
f(x, *params) -> floatxdata -- array-like 1-D ของค่าอิสระ
ydata -- array-like 1-D ของค่าตาม มีความยาวเท่ากับ xdata
p0 -- array-like 1-D ของค่าประมาณพารามิเตอร์เริ่มต้น
- scipy.optimize.fmin(f: Callable[[float], float], x0: float, *, xatol: float = xtolerance, fatol: float = xtolerance, maxiter: int = 200) float¶
หาตำแหน่งค่าต่ำสุดเฉพาะที่ของฟังก์ชันสเกลาร์ f โดยใช้วิธี downhill simplex (Nelder-Mead)
- พารามิเตอร์:
f -- callable ที่รับ
floatหนึ่งตัวและคืนfloatx0 -- การประมาณค่าเริ่มต้น
xatol -- ค่าความคลาดเคลื่อนสัมบูรณ์ที่ตำแหน่ง (ค่าเริ่มต้น
xtolerance)fatol -- ค่าความคลาดเคลื่อนสัมบูรณ์ที่ค่าของฟังก์ชัน (ค่าเริ่มต้น
xtolerance)maxiter -- จำนวน iteration สูงสุด (ค่าเริ่มต้น
200)
- ค่าที่คืน:
ตำแหน่งของค่าต่ำสุดเป็น
float
- scipy.optimize.newton(f: Callable[[float], float], x0: float, *, tol: float = xtolerance, rtol: float = rtolerance, maxiter: int = 50) float¶
หาค่าศูนย์ของฟังก์ชัน f ที่มีค่าจริงและเป็นสเกลาร์โดยใช้วิธี Newton-Raphson (secant)
- พารามิเตอร์:
f -- callable ที่รับ
floatหนึ่งตัวและคืนfloatx0 -- การประมาณค่าเริ่มต้น
tol -- ค่าความคลาดเคลื่อนสัมบูรณ์ที่ค่าราก (ค่าเริ่มต้น
xtolerance)rtol -- ค่าความคลาดเคลื่อนสัมพัทธ์ที่ค่าราก (ค่าเริ่มต้น
rtolerance)maxiter -- จำนวน iteration สูงสุด (ค่าเริ่มต้น
50)
- ค่าที่คืน:
ตำแหน่งของรากเป็น
float