?? 復化梯形求積算法_matlab版.txt
字號:
復化梯形求積算法_matlab版
%用來就數值積分
%fx是由syms定義的函數表達式
function Trapezia(a,b,fx,E,N)
fprintf('\n***********start*************\n');
h=(b-a)/2;
a=a+E/10;%用來減少出現除數為零的情況
%比如對含有1/x的函數積分且積分區間從0開始
%在梯形公式及Simpson公式算法中必然出現除數為零的情況
%當然我們可以在這之前就對被積函數做一定變形處理 比如分部積分將分母移走
%不過我更愿意采用更簡單的做法 將積分下限加一個非常小的數 使之不等于零
%這種處理方法對于精度要求幾乎沒有影響
%當然who有更好的方法歡迎交流一下!
T0=h*(subs(fx,a)+subs(fx,b));
T=0;
for m=1:N
F=0;
for k=1:2^(m-1)
F=F+subs(fx,a+(2*k-1)*h);
end
T=0.5*T0+h*F;
if abs(det(T-T0))<3*E
break;
else
h=h/2;
T0=T;
end
fprintf('k=%d\th=%f\tI=%f\n',m,h,T);
end
fprintf('\n***********end*************\n');
end
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -