function [gc,ak,xk]=guasschebyshev(fun,n)
% 高斯-勒讓德數值積分
%% 引數說明
% fun:積分表示式,可以是函式控制代碼、inline函式、匿名函式、字串表示式,但是必須可以接受向量輸入
% a,b:積分上下限只能[-1 1],故忽略
% n:積分階數,可以任意正整數,但是不建議設定過大,大不一定能得到更好的精度
% gc:積分結果
% ak:求積係數
% xk:求積節點,滿足gc=sum(ak.*fun(xk))
%% 舉例說明
% fun=@(x)exp(x).*cos(x); % 必須可以接受向量輸入
% quadl(fun,-1,1) % 呼叫matlab內部積分函式檢驗
% [gc,ak,xk]=guasschebyshev(fun,7)
%% 高斯積分說明
% 1.高斯積分是精度最高的插值型數值積分,具有2n+1階精度,並且高斯積分總是穩定。一般插值型數值積分精度為至少n階,且具有高階不穩定性
% 2.高斯求積節點就是對應n階正交多項式的根,構建首項係數為1的正交多項式
% 3.高斯求積係數,可以由lagrange多項式插值係數進行積分得到
% 4.由高斯求積節點為根構成的多項式,與任何不超過n階的多項式正交
%% 勒讓德正交多項式說明
% 1.區間[-1,1]上關於權rho(x)=1/sqrt(1-x^2)的正交多項式系,滿足
% |- pi/2 (i=j≠0)
% ∫(ti(x)*tj(x)/sqrt(1-x^2),-1,1)= | pi (i=j=0)
% |- 0 (i≠j)
% 2.切比雪夫正交多項式的通式為:t0=1, tn=cos(n*arcos(x)) (n=1,2,...)
% 3.tn(x)=0在[-1,1]有n個零點xk=cos((2k-1)/(2n)*pi) (k=1,2,...n),
% 有n+1個最值點pk=cos(k*pi/n) (k=0,2,...,n)
% 3.關於高斯-切比雪夫的數值積分的求積係數ak=pi/(n+1),求積節點xk=cos((2k+1)/(2n+2)*pi) (k=0,2,...,n)
%% 計算求積係數
k=0:n;
ak=ones(1,n+1)*pi/(n+1);
% 計算求積節點
xk=cos((2*k+1)/(2*n+2)*pi);
% 計算權函式
rho=@(x)sqrt(1-x.^2);
% 積分函式有效性檢驗
fun=fcnchk(fun,'vectorize');
% 帶權的積分函式值
fx=fun(xk).*rho(xk);
% 計算積分值
gc=sum(ak.*fx);
matlab 數值積分!
1.梯形格式 2.其他格式 matlab提供了quad quadl 等函式命令計算一元函式的數值積分,其中quad 採用遍歷的自適應simpson法計算函式的數值積分,quadl採用遍歷的自適應lobatto法計算函式的數值積分。其呼叫格式一般為 q,fcnt quad function,a,b 其...
MATLAB 數值微積分
學習筆記 郭彥甫 yan fu kuo 台大生機系 matlab教學 10數值微積分 representing polynomials in matlab values of polynomials polyval a 9,5,3,7 x 2 0.01 5 f polyval a,x plot x,...
MATLAB 數值積分函式積分的表示形式
1.採用inline內聯函式 matlab中可以有採用幾種不同的方式來指定被積函式。對於簡單的 長度不超過一行的公式採用inline命令比較方便。例如,可用下面的語句進行計算 f inline 1 sqrt 1 x 4 採用inline內聯函式 f 內聯函式 f x 1 sqrt 1 x 4 q q...