日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > python >内容正文

python

python求线段长度_python微元法计算函数曲线长度的方法

發布時間:2025/3/15 python 19 豆豆
生活随笔 收集整理的這篇文章主要介紹了 python求线段长度_python微元法计算函数曲线长度的方法 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

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

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

其中

根據此時便可在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微元法计算函数曲线长度的方法的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。