91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

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

發布時間:2020-08-24 18:35:45 來源:腳本之家 閱讀:309 作者:落葉_小唱 欄目:開發技術

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

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

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

其中

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

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

'''
計算曲線長度,根據線積分公式:
\int_A^Bf(x,y,z)dl,令積分函數為1,即計算曲線的長度
'''
import numpy as np
from 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微元法計算函數曲線長度的方法就是小編分享給大家的全部內容了,希望能給大家一個參考,也希望大家多多支持億速云。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

易门县| 通化市| 新竹县| 札达县| 内黄县| 株洲市| 定安县| 汉阴县| 老河口市| 米林县| 旌德县| 吉木萨尔县| 洛南县| 邵阳市| 阜宁县| 米林县| 安岳县| 德清县| 巴中市| 锦屏县| 延安市| 正蓝旗| 沧源| 南川市| 凤城市| 玉溪市| 石门县| 高要市| 阜新市| 文山县| 永登县| 乌拉特中旗| 山西省| 潞城市| 泗洪县| 菏泽市| 西宁市| 集贤县| 临安市| 尼木县| 北辰区|