1 梯形数值积分的MATLAB主程序

function T=rctrap(fun,a,b,m)

%fun 函数,a 积分上限 b积分下限 m 递归次数

n=1;h=b-a; T=zeros(1,m+1); x=a;

T(1)=h*(feval_r(fun,a)+feval_r(fun,b))/2;

for i=1:m

h=h/2; n=2*n; s=0;

for k=1:n/2

x=a+h*(2*k-1); s=s+feval_r(fun,x);

end

T(i+1)=T(i)/2+h*s;

end

T=T(1:m);

e.g

运行后屏幕显示 精确值Fs,用rctrap计算的递归值T和T与精确值Fs的绝对误差wT

>> fun=@(x)

exp((-x^.2./2)./(sqrt(2*pi)))

T=rctrap(fun,0,pi/2,14), syms t

fi=int(exp((-t^2)/2)/(sqrt(2*pi)),t,0, pi/2);

Fs= double(fi), wT= double(abs(fi-T))

fun =

@(x)exp((-x^.2./2)./(sqrt(2*pi)))

T =

Columns 1 through 7

1.4168 1.3578 1.3313 1.3195 1.3142 1.3119 1.3109

Columns 8 through 14

1.3105 1.3103 1.3102 1.3102 1.3101 1.3101 1.3101

Fs =

0.4419

wT =

Columns 1 through 7

0.9749 0.9159 0.8894 0.8776 0.8723 0.8700 0.8690

Columns 8 through 14

0.8686 0.8684 0.8683 0.8683 0.8683 0.8682 0.8682

>>

2 复合辛普森(Simpson)数值积分的MATLAB主程序

function y=comsimpson(fun,a,b,n)

% fun 函数 a 积分上限 b积分下限 n 分割小区间数

z1=feval_r(fun,a)+ feval_r(fun,b);m=n/2;

h=(b-a)/(2*m); x=a;

z2=0; z3=0; x2=0; x3=0;

for k=2:2:2*m

x2=x+k*h; z2= z2+2*feval_r(fun,x2);

end

for k=3:2:2*m

x3=x+k*h; z3= z3+4*feval_r(fun,x3);

end

y=(z1+z2+z3)*h/3;

由于Matlab自带了 quad就是这个算法 所以比较少自己编

3 龙贝格数值积分的MATLAB主程序

function [RT,R,wugu,h]=romberg(fun,a,b,

wucha,m)

%fun被积函数 a,b积分上下限 wucha两次相邻迭代绝对差值 m 龙贝格积分表最大行数

%RT 龙贝格积分表 R 数值积分结果 wucha 误差估计 h 最小步长

n=1;h=b-a; wugu=1; x=a;k=0; RT=zeros(4,4);

RT(1,1)=h*(feval_r(fun,a)+feval_r(fun,b))/2;

while((wugu>wucha)&(k

k=k+1; h=h/2; s=0;

for j=1:n

x=a+h*(2*j-1); s=s+feval_r(fun,x);

end

RT(k+1,1)= RT(k,1)/2+h*s; n=2*n;

for i=1:k

RT(k+1,i+1)=((4^i)*RT(k+1,i)-RT(k,i))/(4^i-1);

end

wugu=abs(RT(k+1,k)-RT(k+1,k+1));

end

R=RT(k+1,k+1);

e.g.

>> F=inline('1./(1+x)');

[RT,R,wugu,h]=romberg(F,0,1.5,1.e-8,13)

syms x

fi=int(1/(1+x),x,0,1.5); Fs=double(fi),

wR=double(abs(fi-R)), wR1= wR - wugu

RT =

1.0500 0 0 0 0 0

0.9536 0.9214 0 0 0 0

0.9260 0.9168 0.9165 0 0 0

0.9187 0.9163 0.9163 0.9163 0 0

0.9169 0.9163 0.9163 0.9163 0.9163 0

0.9164 0.9163 0.9163 0.9163 0.9163 0.9163

R =

0.9163

wugu =

2.9436e-011

h =

0.0469

Fs =

0.9163

wR =

9.8007e-011

wR1 =

6.8571e-011

>>

4 复合梯形法function [I,step]

= CombineTraprl(f,a,b,eps)

%f 被积函数

%a,b 积分上下限

%eps 精度

%I 积分结果

%step 积分的子区间数

if(nargin ==3)

eps=1.0e-4;

end

n=1;

h=(b-a)/2;

I1=0;

I2=(subs(sym(f),findsym(sym(f)),a)+subs(sym(f),findsym(sym(f)),b))/h;

while abs(I2-I1)>eps

n=n+1;

h=(b-a)/n;

I1=I2;

I2=0;

for

i=0:n-1

x=a+h*i;

x1=x+h;

I2=I2+(h/2)*(subs(sym(f),findsym(sym(f)),x)+subs(sym(f),findsym(sym(f)),x1));

end

end

I=I2;

step=n;

5 辛普森法

function [I,step] = IntSimpson(f,a,b,type,eps)

%type = 1 辛普森公式

%type = 2 辛普森3/8公式

%type = 3 复合辛普森公式

if(type==3 && nargin==4)

eps=1.0e-4; %缺省精度为0.0001

end

I=0;

switch type

case

1,

I=((b-a)/6)*(subs(sym(f),findsym(sym(f)),a)+...

4*subs(sym(f),findsym(sym(f)),(a+b)/2)+...

subs(sym(f),findsym(sym(f)),b));

step=1;

case

2,

I=((b-a)/8)*(subs(sym(f),findsym(sym(f)),a)+...

3*subs(sym(f),findsym(sym(f)),(2*a+b)/3)+ ...

3*subs(sym(f),findsym(sym(f)),(a+2*b)/3)+subs(sym(f),findsym(sym(f)),b));

step=1;

case

3,

n=2;

h=(b-a)/2;

I1=0;

I2=(subs(sym(f),findsym(sym(f)),a)+subs(sym(f),findsym(sym(f)),b))/h;

while abs(I2-I1)>eps

n=n+1;

h=(b-a)/n;

I1=I2;

I2=0;

for i=0:n-1

x=a+h*i;

x1=x+h;

I2=I2+(h/6)*(subs(sym(f),findsym(sym(f)),x)+...

matlab定积分程序,[转载]Matlab数值积分程序集合【转载】相关推荐

  1. matlab距离保护程序,基于MATLAB的距离保护仿真.doc

    基于MATLAB的距离保护仿真 摘要:本文阐述了如何利用Matlab中的Simulink及SPS工具箱建立线路的距离保护仿真模型,并用S函数编制相间距离保护和接地距离保护算法程序,构建相应的保护模块, ...

  2. matlab欧拉法程序,欧拉法matlab程序.doc

    欧拉法matlab程序.doc 1.Euler法function[x,y]=naeuler(dyfun,xspan,y0,h)x=xspan(1):h:xspan(2);y(1)=y0;forn=1: ...

  3. matlab定积分怎么输入,Matlab计算定积分的操作内容讲解

    许多伙伴还不晓得Matlab计算定积分的操作,而下面笔者就分享了Matlab计算定积分的操作内容,希望有需要的朋友都来共同学习哦. 打开Matlab,找到Matlab的命令窗口,点击进入,如图,当然也 ...

  4. matlab 电化学程序,基于MATLAB的电化学滴定曲线导数变换的实现

    冶金分析 ,2010 ,30(10) :1619Metallurgical Analysis ,2010 ,30(10) :16219文章编号 :1000 - 7571(2010) 10 - 0016 ...

  5. matlab负荷分配程序,利用MATLAB工具箱进行机组负荷优化分配

    火电厂利用负荷优化分配算法,在全厂机组组合方式一定的情况下,根据各运行机组的煤耗特性,合理分配机组所带负荷,可以使全厂总的煤耗量最小[1],从国内外调度经验可知,热效率可提高1%~2.5%.优化算法代 ...

  6. matlab magnify程序,magnify matlab源程序

    将里面的内容复制到matlab m文件中,并以magnify命令即可 % start of program function magnify(f1) % magnify(f1) % Figure cr ...

  7. hog算子matlab实现程序,HOG Matlab实现

    看SURF结果把HOG看的太细了 都是学习 就记一下HOG的matlab实现  方便以后学习 function [gMag,gDir] = computeGradient(img) gx = zero ...

  8. matlab hmm程序,HMM MATLAB Toolbox应用

    一.比较全面的MATLAB自带HMM Toolbox的分析介绍,可以参考http://www.voidcn.com/article/p-wmglbsfp-ho.html. hmmgenerate: 已 ...

  9. matlab分段 程序,在Matlab中构建分段符号函数

    一个选择是使用 heaviside函数使每个方程在给定范围之外等于零,然后将它们全部合并成一个方程: syms x; f = (heaviside(x)-heaviside(x-1))*x^3/6 + ...

  10. matlab hilb,MATLAB在科学计算中的应用:第2章 MATLAB 语言程序设计基础

    <MATLAB在科学计算中的应用:第2章 MATLAB 语言程序设计基础>由会员分享,可在线阅读,更多相关<MATLAB在科学计算中的应用:第2章 MATLAB 语言程序设计基础(7 ...

最新文章

  1. PNAS:多年多点5千样本鉴定玉米根际可遗传微生物
  2. [解决]CXF wsdl2java 生成代码存在的一些问题
  3. linux替换包的脚本,Andorid 自动替换logo打包脚本(支持windows和linux)
  4. 智慧医疗机器人的普及还需很长一段路要走!
  5. JavaScript高级程序设计读书笔记(一)
  6. 总结各类损失函数【修】
  7. html 左边固定右边自动,七种实现左侧固定,右侧自适应两栏布局的方法
  8. 中国特种电器灯泡行业市场供需与战略研究报告
  9. Git 正在吞噬世界!
  10. 两个数据表同步的触发器
  11. 未来语音识别技术的发展趋势会如何
  12. js高级学习笔记(b站尚硅谷)-2-数据、变量、内存三者的关系
  13. rufus安装centos8(旧电脑玩Linux)
  14. 云原生的进一步具象化
  15. 《静态时序分析实用方法》第三章翻译
  16. DWcs4右下角没有html文件,dreamweaver cs4 (dwcs4)安装图文教程
  17. python在园林中的应用_攀缘植物在园林中的应用
  18. Gradle sync failed: No variants found for ':app'. Check build files to ensure at least one varian...
  19. 织梦dedecms 本地模板安装步骤
  20. 奥鹏 大工21秋《计算机网络技术》在线作业

热门文章

  1. C++ Socket服务器简单代码示例
  2. QTreeView宽度
  3. 数学画图软件_云山小学进行信息技术培训:画图软件的小妙用
  4. Linux中查看文件夹大小的命令
  5. python pyhook_Python——pyHook监听鼠标键盘事件
  6. python pip 安装 升级 卸载命令
  7. 深入了解Excel工作表中的控件
  8. Java导入导出Excel控件简介
  9. Abelssoft Undeleter(数据恢复软件)v5.01免费版
  10. 圣思园Spring精髓-Spring的底层设计思想