numpy基础(part14)--积分
生活随笔
收集整理的這篇文章主要介紹了
numpy基础(part14)--积分
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
學習筆記,這個筆記以例子為主。
開發工具:Spyder
積分
相關函數:
import scipy.integrate as si # 利用quad求積分 給出函數f,積分下限與積分上限[a, b] 返回(積分值,最大誤差) area = si.quad(f, a, b) #返回值為一個數組,第一個值為積分值,第二個為誤差舉個例子
在[-5, 5]區間繪制二次函數 y = 3x2 + 2x + 1的曲線,并利用積分計算原理和numpy自帶函數分別求積分。
構建函數,并創建x與y點集,繪制積分圖:
import numpy as np import matplotlib.pyplot as mp import matplotlib.patches as mcdef f(x):return 3 * x ** 2 + 3 * x + 1a, b = -5, 5 n = 500 x1 = np.linspace(a, b, n + 1) y1 = f(x1)mp.figure('Integral', facecolor='lightgray') mp.title('Integral', fontsize=20) mp.xlabel('x', fontsize=14) mp.ylabel('y', fontsize=14) mp.grid(linestyle=':') mp.plot(x1, y1, c='orangered', linewidth=6, zorder=0)mp.show()圖像:
利用梯形計算定積分,并利用小梯形填充積分圖:
import numpy as np import matplotlib.pyplot as mp import matplotlib.patches as mcdef f(x):return 3 * x ** 2 + 3 * x + 1a, b = -5, 5 n = 500 x1 = np.linspace(a, b, n + 1) y1 = f(x1)area = 0for i in range(n):area += (y1[i] + y1[i + 1]) * (x1[i + 1] - x1[i]) / 2 print(area)mp.figure('Integral', facecolor='lightgray') mp.title('Integral', fontsize=20) mp.xlabel('x', fontsize=14) mp.ylabel('y', fontsize=14) mp.grid(linestyle=':') mp.plot(x1, y1, c='orangered', linewidth=6, zorder=0)for i in range(n):mp.gca().add_patch(mc.Polygon([[x1[i], 0], [x1[i], y1[i]],[x1[i + 1], y1[i + 1]], [x1[i + 1], 0]],fc='deepskyblue', ec='dodgerblue',alpha=0.5))mp.show()備注:add_patch()表示補丁,也可以說是在圖像中繪制任意多邊形;mc.Ploygon(點1, 點2, 點3,…)表示構建以點1, 點2, 點3,…為頂點的多邊形
結果(積分值):
260.002由小梯形原理,計算得到的積分值為260.002
圖像:
利用API計算積分值:
代碼:
import numpy as np import scipy.integrate as sidef f(x):return 3 * x ** 2 + 3 * x + 1a, b = -5, 5area = si.quad(f, a, b) print(area)結果:
(260.0, 2.886579864025407e-12)積分值為260.
總結
以上是生活随笔為你收集整理的numpy基础(part14)--积分的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 赛博朋克是什么梗 什么意思
- 下一篇: numpy基础(part15)--线性模