Numerical Derivative with Python

1 04 2011

20110401

ต้องหาอนุพันธ์ของสมการ single photo resection แต่ว่ายังหาวิธีหาอนุพันธ์ด้วยคอมพิวเตอร์ไม่ได้เลย ครั้นจะไปใช้ Matlab แบบเติ้งก็ต้องหัดใช้ แม็ทแล็ปอีก โปรแกรมเทพที่ อ.ไพศาลส่งมาให้ก็ยังแกะไม่ออก ลองหาดูในเน็ตแล้วกันว่า python เค้าหาอนุพันธ์กันอย่างไร เจอทั้งหาเอง และทำเป็นแพคเกจเลย แพคเกจเนี้ยะดูแล้วไม่เข้าใจเลยทำไงดี
ค้นทั้ง numerical derivative และ derivative by python ในที่สุดก็ได้วิธีที่นิยมที่สุดคือการใช้ secant โดยหาความชันช่วงเล็กๆ เล็กมากๆ ของสมการก็มีค่าใกล้เคียงกับค่าอนุพันธ์ ยิ่งช่วงเล็กเท่าไหร่ก็ยิ่งเข้าใกล้มากเท่านั้น

วิธีการเค้าซับซ้อนนิดนึงแต่ดูเหมือนว่าจะนำไปใช้งานได้สะดวกดีทีเดียว มาดูกัน

ทำการหาค่าอนุพันธ์ของฟังก์ชั่น y = x^2 + 2x -1

def Diff(f):

"""

Numerical derivative function

"""

def df(x, h=0.1e-5):
return ( f(x+h/2) - f(x-h/2) ) / h
return df

# sample function

def g(x): return x*x + 2*x -1
# first derivative

dg = Diff(g)
เมื่อรัน F5 แล้วไม่เกิดอะไรขึ้น ใน python shell สามารถเรียกใช้งานได้เลย
เช่นต้องการหาค่าฟังก์ชั่น เมื่อ  x = 3
>> dg(3)

>>8.0000000011182237

คำตอบควรจะเป็น 8.0 เศษที่ได้มาก็เป็นส่วนที่เราละไว้ตอนเลือกช่วงหาอนุพันธ์ ถ้านับที่จำนวนหลักทศนิยมก็รับได้เลยครับ

ได้วิธีหาอนุพันธ์แล้ว ก็นำไปประยุกต์ใช้ต่อกับงาน single photo resection และ block adjustment ต่อไป


Actions

Information

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s




%d bloggers like this: