用matlab(复化梯形公式)计算积分
- 提问者网友:龅牙恐龙妹
- 2021-07-16 04:42
- 五星知识达人网友:思契十里
- 2021-07-16 05:30
- 1楼网友:污到你湿
- 2021-07-16 07:11
function txgs() clc; clear all; close all; [I,n,Ichain] = computT(0,1,0.000000001,1); fprintf('\n利用梯形积分公式计算积分sin(x)/x,0=<x<=1\n'); fprintf('结果是:%.5f\n', I); fprintf('最终区间分点数是:%d\n', n); plot(Ichain, 'ro-', 'LineWidth', 2); hold on; plot(get(gca, 'xlim'), [I I], 'k-', 'LineWidth', 2)
function [I,n,Ichain]=computT(a,b,errorBound,dNum) %复化梯形公式求积分 %调用格式:[I,n,Ichain]=computT(a,b,errorBound,dNum) %输入4: % a:积分下限 b:积分上限 errorBound:输出结果的精度 dNum:区间初始分点数 %输出3: % I:积分近似值 n:最终区间分点数 Ichain-迭代过程所有值 %被积函数做成函数文件f(x) n=dNum/2; hn=(b-a)/n; k=1; Tn=hn*(f(a)/2+sumf(a,hn,n-1)+f(b)/2); h2n=hn/2; T2n=computT2n(a,Tn,h2n,n); error=abs(Tn-T2n); while error>errorBound h2n=h2n/2; n=n*2; T2ns=computT2n(a,T2n,h2n,n); Ichain(k)=T2ns; k=k+1; error=abs(T2ns-T2n); T2n=T2ns; end I=T2n;
function out=computT2n(a,Tn,h2n,n) out=Tn/2+h2n*sumf2(a,h2n,n);
function out=sumf(a,hn,n1) out=0; for i=1:n1 out=out+f(a+i*hn); end
function out=sumf2(a,hn,n1) out=0; for i=1:n1 out=out+f(a+(2*i-1)*hn); end
function out=f(x) if x==0 out=1; else out=sin(x)/x; end
- 2楼网友:过活
- 2021-07-16 06:12
%定积分,梯形公式编程 MTLAB版本
%待积分函数
function y=hanshu(x)
%下面的函数可以根据具体待积分的函数,随时更改
y=exp(x);
%调用函数编写
function y=myji(a,b,n);
%a,b为积分区间 n是小区间的个数
h=(b-a)/n;%小区间的大小
%hanshu是待积分的函数,可以在调用函数之前编写
y=(hanshu(a)+hanshu(b))/2;
%求和迭代过程
for i=1:n-1
y=y+hanshu(a+i*h);
end
y=y*h;%程序运行结束