數值積分原理與應用

2021-09-30 00:27:40 字數 2436 閱讀 8130

計算定積分時,可以通過微元法逼近,如下:

若取值均勻,公式如下:

通過上述公式可以看到,定積分的值可以通過取樣點函式值的線性組合得到。當取樣點已經確定時,定積分的精度取決於每個取樣點所分配的權值。梯形公式、simpson公式、cotes公式、romberg公式正是通過調整權值來逐步逼近積分值。

(1)復合梯形公式

(2) simpson公式

(3)cotes公式

(4)romberg公式

借助如下公式,使用 romberg 求積公式計算

f=np.random.uniform(a,b,n+1) #儲存函式值

for i in range(n+1):

x=a+d/n*i

f[i]=fun(x)

print("f=\n",f)

t=np.random.uniform(a,b,m) #儲存梯度值

t[0]=(f[0]+f[n])/2

for i in range(1,m):

s=0.0

for k in np.arange(1,p[i-1]+1):

s+=f[(2*k-1)*p[m-i]]

t[i]=t[i-1]/2+d/p[i]*s

print("t=\n",t)

s=np.random.uniform(a,b,m-1)

for i in range(m-1):

s[i]=(4*t[i+1]-t[i])/3 #simpson公式

print("s=\n",s)

c=np.random.uniform(a,b,m-2)

for i in range(m-2):

c[i]=(16*s[i+1]-s[i])/15 #cotes公式

print("c=\n",c)

r=np.random.uniform(a,b,m-3)

for i in range(m-3):

r[i]=(64*c[i+1]-c[i])/63 #romberg公式

從執行結果可以看出,在取樣點相同的情況下,梯形公式、simpson公式、cotes公式、romberg公式的精度依次增加。

數值微分與數值積分

注意 diff函式計算的是向量元素間的差分,故差分向量元素的個數比原向量少了 乙個。同樣,對於矩陣來說,差分後的矩陣比原矩陣少了一行或一列。另外,計算差分之後,可以用f x 在某點處的差商作為其導數的近似值。matlab提供了求向前差分的函式diff,其呼叫格式有三種 dx diff x 計算向量x...

Matlab數值積分

function gc,ak,xk guasschebyshev fun,n 高斯 勒讓德數值積分 引數說明 fun 積分表示式,可以是函式控制代碼 inline函式 匿名函式 字串表示式,但是必須可以接受向量輸入 a,b 積分上下限只能 1 1 故忽略 n 積分階數,可以任意正整數,但是不建議設定...

matlab 數值積分!

1.梯形格式 2.其他格式 matlab提供了quad quadl 等函式命令計算一元函式的數值積分,其中quad 採用遍歷的自適應simpson法計算函式的數值積分,quadl採用遍歷的自適應lobatto法計算函式的數值積分。其呼叫格式一般為 q,fcnt quad function,a,b 其...