国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > Python > 正文

python微元法計算函數曲線長度的方法

2020-01-04 14:06:48
字體:
來源:轉載
供稿:網友

計算曲線長度,根據線積分公式:

python,曲線,長度,令積分函數 f(x,y,z) 為1,即計算曲線的長度,將其微元化:

python,曲線,長度

其中

python,曲線,長度

根據此時便可在python編程實現,給出4個例子,代碼中已有詳細注釋,不再贅述

'''計算曲線長度,根據線積分公式:/int_A^Bf(x,y,z)dl,令積分函數為1,即計算曲線的長度'''import numpy as npfrom mpl_toolkits.mplot3d import *import matplotlib.pyplot as plt## 求二維圓周長,半徑為1,采用參數形式def circle_2d(dt=0.001,plot=True): dt = dt # 變化率 t = np.arange(0,2*np.pi, dt) x = np.cos(t) y = np.sin(t) # print(len(t)) area_list = [] # 存儲每一微小步長的曲線長度 for i in range(1,len(t)):  # 計算每一微小步長的曲線長度,dx = x_{i}-x{i-1},索引從1開始  dl_i = np.sqrt( (x[i]-x[i-1])**2 + (y[i]-y[i-1])**2 )   # 將計算結果存儲起來  area_list.append(dl_i) area = sum(area_list)# 求和計算曲線在t:[0,2*pi]的長度 print("二維圓周長:{:.4f}".format(area)) if plot:  fig = plt.figure()  ax = fig.add_subplot(111)  ax.plot(x,y)  plt.title("circle")  plt.show()## 二維空間曲線,采用參數形式def curve_param_2d(dt=0.0001,plot=True): dt = dt # 變化率 t = np.arange(0,2*np.pi, dt) x = t*np.cos(t) y = t*np.sin(t) # print(len(t)) area_list = [] # 存儲每一微小步長的曲線長度 # 下面的方式是循環實現 # for i in range(1,len(t)): #  # 計算每一微小步長的曲線長度,dx = x_{i}-x{i-1},索引從1開始 #  dl_i = np.sqrt( (x[i]-x[i-1])**2 + (y[i]-y[i-1])**2 )  #  # 將計算結果存儲起來 #  area_list.append(dl_i) # 更加pythonic的寫法 area_list = [np.sqrt( (x[i]-x[i-1])**2 + (y[i]-y[i-1])**2 ) for i in range(1,len(t))] area = sum(area_list)# 求和計算曲線在t:[0,2*pi]的長度 print("二維參數曲線長度:{:.4f}".format(area)) if plot:  fig = plt.figure()  ax = fig.add_subplot(111)  ax.plot(x,y)  plt.title("2-D Parameter Curve")  plt.show()## 二維空間曲線def curve_2d(dt=0.0001,plot=True): dt = dt # 變化率 t = np.arange(-6,10, dt) x = t y = x**3/8 - 4*x + np.sin(3*x) # print(len(t)) area_list = [] # 存儲每一微小步長的曲線長度 # for i in range(1,len(t)): #  # 計算每一微小步長的曲線長度,dx = x_{i}-x{i-1},索引從1開始 #  dl_i = np.sqrt( (x[i]-x[i-1])**2 + (y[i]-y[i-1])**2 )  #  # 將計算結果存儲起來 #  area_list.append(dl_i) area_list = [np.sqrt( (x[i]-x[i-1])**2 + (y[i]-y[i-1])**2 ) for i in range(1,len(t))] area = sum(area_list)# 求和計算曲線在t:[0,2*pi]的長度 print("二維曲線長度:{:.4f}".format(area)) if plot:  fig = plt.figure()  ax = fig.add_subplot(111)  ax.plot(x,y)  plt.title("2-D Curve")  plt.show()## 三維空間曲線,采用參數形式def curve_3d(dt=0.001,plot=True): dt = dt # 變化率 t = np.arange(0,2*np.pi, dt) x = t*np.cos(t) y = t*np.sin(t) z = 2*t # print(len(t)) area_list = [] # 存儲每一微小步長的曲線長度 for i in range(1,len(t)):  # 計算每一微小步長的曲線長度,dx = x_{i}-x{i-1},索引從1開始  dl_i = np.sqrt( (x[i]-x[i-1])**2 + (y[i]-y[i-1])**2 + (z[i]-z[i-1])**2 )   # 將計算結果存儲起來  area_list.append(dl_i) area = sum(area_list)# 求和計算曲線在t:[0,2*pi]的長度 print("三維空間曲線長度:{:.4f}".format(area)) if plot:  fig = plt.figure()  ax = fig.add_subplot(111,projection='3d')  ax.plot(x,y,z)  plt.title("3-D Curve")  plt.show()if __name__ == '__main__': circle_2d(plot=True) curve_param_2d(plot=True) curve_2d(plot=True) curve_3d(plot=True)

得到結果:

二維圓周長:6.2830二維參數曲線長度:21.2558二維曲線長度:128.2037三維空間曲線長度:25.3421

python,曲線,長度

python,曲線,長度

python,曲線,長度

python,曲線,長度

以上這篇python微元法計算函數曲線長度的方法就是小編分享給大家的全部內容了,希望能給大家一個參考,也希望大家多多支持VEVB武林網。


注:相關教程知識閱讀請移步到python教程頻道。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 广东省| 铁岭市| 安龙县| 洛阳市| 垣曲县| 泰兴市| 永宁县| 安庆市| 布尔津县| 大埔县| 梅河口市| 廉江市| 昌宁县| 革吉县| 马关县| 长治县| 锡林郭勒盟| 舒兰市| 本溪| 昌黎县| 营山县| 海伦市| 格尔木市| 大洼县| 中方县| 印江| 南京市| 平潭县| 广州市| 禹城市| 象州县| 璧山县| 华容县| 资阳市| 丹阳市| 田阳县| 广南县| 武定县| 日土县| 合水县| 庐江县|