計算定積分時,可以通過微元法逼近,如下:
若取值均勻,公式如下:
通過上述公式可以看到,定積分的值可以通過取樣點函式值的線性組合得到。當取樣點已經確定時,定積分的精度取決於每個取樣點所分配的權值。梯形公式、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 其...