numpy求導數


# 直線運動問題
# 對於f(X) = x**2

def f(x):
    return x**2

plt.figure(figsize = (12,6))
n = np.linspace(-10,10,num = 50)
plt.plot(n,f(n))
plt.xlim(-11,11)
plt.ylim(-10,110)

# 選中曲線上兩個點,m(2,4),n(5,25)
plt.plot([2,5],[4,25],color = 'r')
print('直線斜率為%.2f' % ((25-4)/(5-2)))
print('-------')

# 求m的導數

x_m = 2
y_m = f(x_m)
plt.plot(n,f(n))
plt.xlim(1,7)
plt.ylim(1,49)

for i in range(4,0,-1):
    plt.plot([x_m,x_m + i],[y_m,f(x_m + i)],color = 'r')
    print('直線斜率為%.2f' % ((f(x_m + i)-y_m)/(x_m + i-x_m)))

# f(x) = x**2
# 原始點 m,f(m)
# 增量為i,直線終點 → m+i,f(m+i)
# 斜率 → (f(m+i)-f(m))/i

def ds(xm,n):
    '''
    該函數為求f(x) = x**2的導數
    xm:m點的x值
    n:m點x往右偏移的距離
    函數最后導出 → m點與m偏移n距離后點的連線的斜率
    '''
    y1 = f(xm)
    y2 = f(xm+n)
    return (y2-y1)/n

for i in np.linspace(1,0,num = 1000,endpoint = False):
    print('偏移%.2f個單位距離時,斜率為:%.5f' % (i,ds(2,i)))
# 斜率為4
# 切線函數為:y = 4*x - 4

# 圖示

n = np.linspace(-10,10,num = 50)
plt.plot(n,f(n))
plt.xlim(-11,11)
plt.ylim(-10,110)

plt.scatter(2,4)
plt.plot(n,4*n - 4)
# m點切線

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM