❶ matlab,理查德森外推法計算函數梯度,程序,求助啊!
1、外推法的MATLAB程序代碼如下所示:
function yy = DEWT(f,h,a,b,gama,y0,order,varvec)
%一階常微分方程的一般表達式的右端函數:f
%積分步長:h
%自變數取值下限:a
%自變數取值上限:b
%外推參數,參考外推公式:gama
%函數初值:y0
%外推階數:order
%常微分方程的變數組:varvec
format long;
ArrayH = [1;2;4;6;8;12;16;24;32;48;64;96];
N = (b-a)/h;
yy = zeros(N+1,1);
for i = 2:N+1
dh = h;
s = zeros(order,1);
for j=1:order
dh = h/ArrayH(j); %不同的h值
tmpY = DELGKT2_suen(f,dh,a,a+(i-1)*h,y0,varvec); %休恩法
s(j) = tmpY((i-1)*ArrayH(j)+1);
end
tmpS = zeros(order,1);
for j=1:order-1
for k=(j+1):order
tmpS(k) = s(k)+(s(k)-s(k-1))/((ArrayH(k)/ArrayH(j))^gama-1);
end
s(1:(order-j)) = tmpS((j+1):order); %取對角值
end
yy(i) = tmpS(order);
end
format short;