使用復化梯形公式計算積分,問應至少將區間 等分為多少份,才能使截斷誤差

  • 作者:由 匿名使用者 發表于 攝影
  • 2022-10-20

使用復化梯形公式計算積分,問應至少將區間 等分為多少份,才能使截斷誤差╰☆卟珂一世☆╮2021.06.09 回答

於無法求得exp(x^2)的原函式,我們只能用數值演算法來求解,可以用復化梯形公式、Romberg公式、Gauss公式等,有好多種。我用Matlab編了一個用Gauss公式求解積分的函式。functionS=GaussIntegrate()%運用Gauss求積公式計算數值積分%f為被積函式,Rho為權函式,二者均為符號函式x=sym(‘x’);f=exp(x^2);Rho=1;%a,b分別為求積區間的左界和右界a=1;b=2;%n表示求積結點的個數,是一正整數n=8;%本程式利用線性變換將區間[a,b]變換到[-1。1],%同時令g=f*Rho為被積函式,然後利用%古典的Gauss求積公式進行計算,此時直交多項式即為Legendre多項式ifn=0||n~=floor(n)error(‘錯誤,n必須是一個非負整數!’);end;ifa>berror(‘錯誤,區間的左界a一定不大於右界b!’);end;%計算n次Legendre多項式symsx;P=1/(2^n*factorial(n))*diff((x^2-1)^n,n);w=roots(sym2poly(P));%計算數值積分A=zeros(1,n);S=0;fork=1:nA(k)=2/((1-w(k)^2)*(subs(diff(P),w(k))^2));t=a+(b-a)/2*(w(k)+1);g=(b-a)/2*subs(f*Rho,t);S=S+A(k)*g;end;————————————————我取了8個結點,計算精度就已經達到了小數點後8位,效率還是很高的。注意:由於Matlab呼叫Maple的符號計算工具箱,第一次執行時會載入一小會,耐心等待。以後再執行速度就很快了。

Top