当前位置:文档之家› MATLAB数值积分求值实验报告

MATLAB数值积分求值实验报告

MATLAB数值积分求值实验报告
MATLAB数值积分求值实验报告

3

学号班级统计1001 姓名指导教师易昆南实验题目用多种方法计算数值积分评分

1、设计(实习)目的:

1.了解MATLAB在实际问题中的应用

2.通过实践加深对这门语言中M文件的了解

3.熟悉简单程序结构,如循环结构(for循环、while循环)选择结构(if-else-if)、分支语句(switch-case-otherwise)。

2、实验内容:

(1).分别用左、右矩形法,梯形法,复化辛普森公式计算y=x^2在[0,1]上的定积分;(2).用蒙特卡罗随机投点法计算y=1/(1+x^2)在[0,1]上的定积分,并求出pi的近似值;(3).用蒙特卡罗均值估计法计算y=x^2在[0,1]上的定积分。

3.详细设计:

一.左、右矩形法和梯形法:

h=1/200;

x=0:h:1;

y=x.^2;

z1=sum(y(1:200))*h %左矩形法

z2=sum(y(2:201))*h%右矩形法

z=cumsum(y);

z11=z(200)*h; %等同z1

z12=(z(201)-z(1))*h; %等同z2

z3=trapz(x,y) %梯形法,等同于z3=trapz(y)*h

二.复化辛普森公式法:

y=inline('x.^2');

z1=quad(y,0,1,100) %simpleson公式

z2=quadl(y,0,1,100) %复化simpleson公式

z3=quad8(y,0,1,100,trace(10))%simpleson8阶公式法

三.蒙特卡罗随机投点法:

n=100000;

k=0;

for i=1:n

x=rand; %产生(0,1)区间的随机数

y=rand;

if y<=1/(1+x^2); %对y=1/(1+x^2)面积投点

k=k+1;

end

end

z=k/n

pi=4*k/n %由积分pi/4=k/n而来,前者是概率,后者是频率

四.蒙特卡罗均值估计法:

n=10000;

x=rand(1,n);

y=x.^2;

z=sum(y)/n %均值估计法

4:实验结果:

一.左、右矩形法和梯形法:

z1 =

0.3308

z2 =

0.3358

z3 =

0.3333

二.复化辛普森公式法:

z1 =

0.3333

z2 =

0.3333

Warning: QUAD8 is obsolete. We use QUADL instead.

> In quad8 at 35

In simple at 4

18 0.0000000000 5.00000000e-001 0.3333333333 z3 =

0.3333

三.蒙特卡罗随机投点法:

z =

0.7854

pi =

3.1416

四.蒙特卡罗均值估计法:

z =

0.3365

5:实验总结

有些规则和C语言的有些不同,但结构形式,大部分语句还是相同的,所以对于C语言,也很好接受。

通过多种求定积分的方法练习,我较好地掌握了积分的运算,对以后的进一步学习很有益处。但其中复化辛普森求解法还存在一些疑惑,比如此函数能否直接调用内置函数?

我觉得收获呢,收获了一些基础性的语言规则,对于以后的学习很有帮助,感觉很高兴。

我立志要学好这门语言。虽然现在我还不熟悉这门语言,我要对自己有信心,相信我能做到。

姓名:

2011年11月27日

数值积分算法与MATLAB实现陈悦5133201讲解

东北大学秦皇岛分校 数值计算课程设计报告 数值积分算法及MATLAB实现 学院数学与统计学院 专业信息与计算科学 学号5133201 姓名陈悦 指导教师姜玉山张建波 成绩 教师评语: 指导教师签字: 2015年07月14日

1 绪论 数值分析是计算数学的一个主要部分,计算数学是数学科学的一个分支,它研究用计算机求解各种数学问题的数值检索方其理论与软件的实现.而数值分析主要研究数值计算. 现科学技术的发展与进步提出了越来越多的复杂的数值计算问题,这些问题的圆满解决已远人工手算所能胜任,必须依靠电子计算机快速准确的数据处理能力.这种用计算机处理数值问题的方法,成为科学计算.今天,科学计算的应用范围非常广泛,天气预报、工程设计、流体计算、经济规划和预测以及国防尖端的一些科研项目,如核武器的研制、导弹和火箭的发射等,始终是科学计算最为活跃的领域. 1.1 数值积分介绍 数值积分是数值分析的重要环节,实际问题当中常常需要计算积分,有些数值方法,如微分方程和积分方程的求解,也都和积分计算相联系. 求某函数的定积分时,在多数情况下,被积函数的原函数很难用初等函数表达出来,因此能够借助微积分学的牛顿-莱布尼兹公式计算定积分的机会是不多的.另外,许多实际问题中的被积函数往往是列表函数或其他形式的非连续函数,对这类函数的定积分,也不能用不定积分方法求解.由于以上原因,数值积分的理论与方法一直是计算数学研究的基本课题.对微积分学做出杰出贡献的数学大师,如I.牛顿、L.欧拉、C.F.高斯、拉格朗日等人都在数值积分这个领域作出了各自的贡献,并奠定了这个分支的理论基础. 构造数值积分公式最通常的方法是用积分区间上的n 次插值多项式代替被积函数,由此导出的求积公式称为插值型求积公式.特别在节点分布等距的情形称为牛顿-科特斯公式,例如梯形公式(Trapezoidal Approximations)与抛物线公式(Approximations Using Parabolas)就是最基本的近似公式.但它们的精度较差.龙贝格算法是在区间逐次分半过程中,对梯形公式的近似值进行加权平均获得准确程度较高的积分近似值的一种方法,它具有公式简练、计算结果准确、使用方便、稳定性好等优点,因此在等距情形宜采用龙贝格求积公式(Rhomberg Integration).当用不等距节点进行计算时,常用高斯型求积公式计算,它在节点数目相同情况下,准确程度较高,稳定性好,而且还可以计算无穷积分.数值积分还是微分方程数值解法的重要依据.许多重要公式都可以用数值积分方程导出.现探讨数值积分算法以及运用MATLAB软件的具体实现

用递推公式计算定积分(matlab版)

用递推公式计算定积分 实验目的: 1.充分理解不稳定的计算方法会造成误差的积累,在计算过程中会导致误差的迅速增加,从而使结果产生较大的误差。 2.在选择数值计算公式来进行近似计算时,应学会选用那些在计算过程中不会导致误差迅速增长的计算公式。 3.理解不稳定的计算公式造成误差积累的来源及具体过程; 4.掌握简单的matlab语言进行数值计算的方法。 实验题目: 对n=0,1,2,…,20,计算定积分: 实验原理: 由于y(n)= = – 在计算时有两种迭代方法,如下: 方法一: y(n)=– 5*y(n-1),n=1,2,3, (20) 取y(0)= = ln6-ln5 ≈ 0.182322 方法二: 利用递推公式:y(n-1)=-*y(n),n=20,19, (1) 而且,由 = * ≤≤* =

可取:y(20)≈*()≈0.008730. 实验容: 对算法一,程序代码如下: function [y,n]=funa() syms k n t; t=0.182322; n=0; y=zeros(1,20); y(1)=t; for k=2:20 y(k)=1/k-5*y(k-1); n=n+1; end y(1:6) y(7:11) 对算法二,程序代码如下: %计算定积分; %n--表示迭代次数; %y用来存储结果; function [y,n]=f(); syms k y_20;

y=zeros(21,1); n=1; y_20=(1/105+1/126)/2; y(21)=y_20; for k=21:-1:2 y(k-1)=1/(5*(k-1))-y(k)/5; n=n+1; end 实验结果: 由于计算过程中,前11个数字太小,后9个数字比较大,造成前面几个数字只显示0.0000的现象,所以先输出前6个,再输出7—11个,这样就能全部显示出来了。 算法一结果: [y,n]=funa %先显示一y(1)—y(6) ans = 0.1823 -0.4116 2.3914 -11.7069 58.7346

【数学建模学习】Matlab的数值积分

Matlab 的数值积分问题 (1)求和命令sum 调用格式. 如果x 是向量,则sum(x) 给出x 的各个元素的累加和;如果x 是矩阵,则sum(x)是一个元素为x 的每列列和的行向量. 例3.1 调用命令sum 求向量x 的各个元素的累加和。 解:输入 x=[1,2,3,4,5,6,7,8,9,10]; sum(x) 得到 ans=55 例3.2 调用命令sum 求矩阵x 的各列元素的累加和。 解:输入 x=[1,2,3;4,5,6;7,8,9] x= 1 2 3 4 5 6 7 8 9 sum(x) 得到 ans=12 15 18 2.定积分的概念. 定积分是一个积分和的极限. 例如取x e x f =)(,求定积分?10dx e x 的近似值。 积分区间为[0,1],等距划分为20个子区间, x=linspace(0,1,21); 选取每个子区间的端点,并计算端点处的函数值. y=exp(x); 取区间的左端点处的函数值乘以区间长度全部加起来. y1=y(1:20); s1=sum(y1)/20 s1=1.6757 s1可作为定积分?10dx e x 的近似值。 若选取右端点: y2=y(2:21); s2=sum(y2)/20 s2=1.7616 s2也可以作为定积分?10dx e x 的近似值。 下面我们画出图象. plot(x,y);hold on for i=1:20 fill([x(i),x(i+1),x(i+1),x(i),x(i)],[0,0,y(i),y(i),0],'b')

end 如果选取右端点,则可画出图象. for i=1:20 fill([x(i),x(i+1),x(i+1),x(i),x(i)],[0,0,y(i+1),y(i+1),0],'b') hold on end plot(x,y,'r') 在上边的语句中,for … end 是循环语句,执行语句体内的命令20次,fill 命令可以填充多边形,在本例中,用的是兰色(blue)填充. 可试取50个子区间看一看结果怎样.下面按等分区间计算。 syms k n s=symsum(exp(k/n)/n,k,1,n); limit(s,n,inf) 得结果 ans=exp(1)-1 3.计算定积分 例3.6 计算?10dx e x . 解:输入命令: syms x; int(exp(x),0,1) 得结果 ans=exp(1)-1. 这与我们上面的运算结果是一致的. ⒈ 由给定数据进行梯形求积 假设已经建立起向量T N T N y y y y x x x x ],,,[,],,,[2121 ==,则可用以下语句进行梯形求积: sum((2*y(1:end-1,:)+diff(y)).*diff(x))/2 MATLAB 提供的trapz()函数也可直接用梯形法求解积分问题,该函数调用格式为 S=trapz(x,y) [例1-6-17] 试用梯形法求出),0(π∈x 区间内,函数sin(x),cos(x),sin(x/2)的定积分值。 [求解] >> x1=[0:pi/30:pi]'; y=[sin(x1) cos(x1) sin(x1/2)]; x=[x1 x1 x1]; S=sum((2*y(1:end-1,:)+diff(y)).*diff(x))/2 >> S1=trapz(x1,y) [例1-6-18] 用定步长方法求解积分?2 /30)15cos(πdx x 。 [求解] 鉴于求解区域内被积函数有很强的振荡,可先用下述语句绘制被积函数的曲线。 >> x=[0:0.01:3*pi/2,3*pi/2]; y=cos(15*x); plot(x,y) 采用不同的步距,可分别得到积分近似结果。 >> syms x, A=int(cos(15*x),0,3*pi/2) % 求理论值 >> h0=[0.1,0.01,0.001,0.0001,0.00001,0.000001]; v=[]

数值积分的matlab实现

实验10 数值积分 实验目的: 1.了解数值积分的基本原理; 2.熟练掌握数值积分的MATLAB 实现; 3.会用数值积分方法解决一些实际问题。 实验内容: 积分是数学中的一个基本概念,在实际问题中也有很广泛的应用。同微分一样,在《微积分》中,它也是通过极限定义的,由于实际问题中遇到的函数一般都以列表形式给出,所以常常不能用来直接进行积分。此外有些函数虽然有解析式,但其原函数不是初等函数,所以仍然得不到积分的精确值,如不定积分?1 0 d sin x x x 。这时我们一般考虑用数值方法计算其 近似值,称为数值积分。 10.1 数值微分简介 设函数()y f x =在* x 可导,则其导数为 h x f h x f x f h ) ()(lim )(**0* -+='→ (10.1) 如果函数()y f x =以列表形式给出(见表10-1),则其精确值无法求得,但可由下式求得其近似值 h x f h x f x f ) ()()(*** -+≈' (10.2) 表 10-1 一般的,步长h 越小,所得结果越精确。(10.2)式右端项的分子称为函数()y f x =在 *x 的差分,分母称为自变量在*x 的差分,所以右端项又称为差商。数值微分即用差商近似 代替微商。常用的差商公式为: 000()() ()2f x h f x h f x h +--'≈ (10.3) h y y y x f 243)(2 100-+-≈ ' (10.4)

h y y y x f n n n n 234)(12+-≈ '-- (10.5) 其误差均为2 ()O h ,称为统称三点公式。 10.2 数值微分的MATLAB 实现 MATLAB 提供了一个指令求解一阶向前差分,其使用格式为: dx=diff(x) 其中x 是n 维数组,dx 为1n -维数组[]21321,, ,n x x x x x x ---,这样基于两点的数值导 数可通过指令diff(x)/h 实现。对于三点公式,读者可参考例1的M 函数文件diff3.m 。 例1 用三点公式计算()y f x =在=x 1.0,1.2,1.4处的导数值,()f x 的值由下表给 解:建立三点公式的M 函数文件diff3.m 如下: function f=diff3(x,y) n=length(x);h=x(2)-x(1); f(1)=(-3*y(1)+4*y(2)-y(3))/(2*h); for j=2:n-1 f(j)=(y(j+1)-y(j-1))/(2*h); end f(n)=(y(n-2)-4*y(n-1)+3*y(n))/(2*h); 在MATLAB 指令窗中输入指令: x=[1.0,1.1,1.2,1.3,1.4];y=[0.2500,0.2268,0.2066,0.1890,0.1736];diff3(x,y) 运行得各点的导数值为:-0.2470,-0.2170,-0.1890,-0.1650,-0.0014。所以()y f x =在=x 1.0,1.2,1.4处的导数值分别为-0.2470,-0.1890和-0.0014。 对于高阶导数,MATLAB 提供了几个指令借助于样条函数进行求导,详细使用步骤如下: step1:对给定数据点(x,y ),利用指令pp=spline(x,y),获得三次样条函数数据pp ,供后面ppval 等指令使用。其中,pp 是一个分段多项式所对应的行向量,它包含此多项式的阶数、段数、节点的横坐标值和各段多项式的系数。 step2:对于上面所求的数据向量pp ,利用指令[breaks,coefs,m,n]=unmkpp(pp)进行处理,生成几个有序的分段多项式pp 。 step3:对各个分段多项式pp 的系数,利用函数ppval 生成其相应导数分段多项式的系数,再利用指令mkpp 生成相应的导数分段多项式 step4:将待求点xx 代入此导数多项式,即得样条导数值。 上述过程可建立M 函数文件ppd.m 实现如下: function dy=ppd(pp) [breaks,coefs,m]=unmkpp(pp);

matlab求定积分之实例说明

一、符号积分 符号积分由函数int来实现。该函数的一般调用格式为: int(s):没有指定积分变量和积分阶数时,系统按findsym函数指示的默认变量对被积函数或符号表达式s求不定积分; int(s,v):以v为自变量,对被积函数或符号表达式s求不定积分; int(s,v,a,b):求定积分运算。a,b分别表示定积分的下限和上限。该函数求被积函数在区间[a,b]上的定积分。a和b可以是两个具体的数,也可以是一个符号表达式,还可以是无穷(inf)。当函数f关于变量x在闭区间[a,b]上可积时,函数返回一个定积分结果。当a,b中有一个是inf时,函数返回一个广义积分。当a,b中有一个符号表达式时,函数返回一个符号函数。 例: 求函数x^2+y^2+z^2的三重积分。内积分上下限都是函数,对z积分下限是sqrt(x*y),积分上限是x^2*y;对y积分下限是sqrt(x),积分上限是x^2;对x的积分下限1,上限是2,求解如下: >>syms x y z %定义符号变量 >>F2=int(int(int(x^2+y^2+z^2,z,sqrt(x*y),x^2*y),y,sqrt(x),x^2),x,1,2) %注意定积分的书写格式 F2 = 1610027357/6563700-6072064/348075*2^(1/2)+14912/4641*2^(1/4)+64/225*2 ^(3/4) %给出有理数解 >>VF2=vpa(F2) %给出默认精度的数值解 VF2 = 224.92153573331143159790710032805 二、数值积分 1.数值积分基本原理 求解定积分的数值方法多种多样,如简单的梯形法、辛普生(Simpson)?法、牛顿-柯特斯(Newton-Cotes)法等都是经常采用的方法。它们的基本思想都是将整个积分区间[a,b]分成n个子区间[xi,xi+1],i=1,2,…,n,其中x1=a,xn+1=b。这样求定积分问题就分解为求和问题。 2.数值积分的实现方法 基于变步长辛普生法,MATLAB给出了quad函数来求定积分。该函数的调用格式为: [I,n]=quad('fname',a,b,tol,trace) 基于变步长、牛顿-柯特斯(Newton-Cotes)法,MATLAB给出了quadl函数来求定积分。该函数的调用格式为: [I,n]=quadl('fname',a,b,tol,trace) 其中fname是被积函数名。a和b分别是定积分的下限和上限。tol用来控制积分精度,缺省时取tol=0.001。trace控制是否展现积分过程,若取非0则展现积分过程,取0则不展现,缺省时取trace=0。返回参数I即定积分值,n为被积函数的调用次数。 例: 求函数'exp(-x*x)的定积分,积分下限为0,积分上限为1。 >>fun=inline('exp(-x.*x)','x'); %用内联函数定义被积函数fname

matlab实现数值分析插值及积分

Matlab实现数值分析插值及积分 摘要: 数值分析(numerical analysis)是研究分析用计算机求解数学计算问题的数值计算方法及其理论的学科,是数学的一个分支,它以数字计算机求解数学问题的理论和方法为研究对象。在实际生产实践中,常常将实际问题转化为数学模型来解决,这个过程就是数学建模。学习数值分析这门课程可以让我们学到很多的数学建模方法。 分别运用matlab数学软件编程来解决插值问题和数值积分问题。题目中的要计算差值和积分,对于问题一,可以分别利用朗格朗日插值公式,牛顿插值公式,埃特金逐次线性插值公式来进行编程求解,具体matlab代码见正文。编程求解出来的结果为:=+。 其中Aitken插值计算的结果图如下: 对于问题二,可以分别利用复化梯形公式,复化的辛卜生公式,复化的柯特斯公式编写程序来进行求解,具体matlab代码见正文。编程求解出来的结果为: 0.6932 其中复化梯形公式计算的结果图如下:

问题重述 问题一:已知列表函数 表格 1 分别用拉格朗日,牛顿,埃特金插值方法计算。 问题二:用复化的梯形公式,复化的辛卜生公式,复化的柯特斯公式计算积分,使精度小于5。 问题解决 问题一:插值方法 对于问题一,用三种差值方法:拉格朗日,牛顿,埃特金差值方法来解决。 一、拉格朗日插值法: 拉格朗日插值多项式如下: 首先构造1+n 个插值节点n x x x ,,,10 上的n 插值基函数,对任一点i x 所对应的插值基函数 )(x l i ,由于在所有),,1,1,,1,0(n i i j x j +-=取零值,因此)(x l i 有因子 )())(()(110n i i x x x x x x x x ----+- 。又因)(x l i 是一个次数不超过n 的多项式,所以只 可能相差一个常数因子,固)(x l i 可表示成: )())(()()(110n i i i x x x x x x x x A x l ----=+- 利用1)(=i i x l 得:

数值积分用matlab实现

数值积分用m a t l a b实 现

东北大学秦皇岛分校 数值计算课程设计报告 数值积分及Matlab实现 学院数学与统计学院 专业信息与计算科学 学号5133117 姓名楚文玉 指导教师张建波姜玉山 成绩 教师评语: 指导教师签字: 2015年07月14日

1 绪论 在科研计算中,经常会碰到一些很难用公式定理直接求出精确解的积分问题,对于这类问题,我们一般转化为数值积分问题,用计算机来实现求解问题. 1.1 课题的背景 对于定积分()b a f x dx ?在求某函数的定积分时,在一定条件下,虽然有牛顿-莱布里 茨公式()()()b a I f x dx F b F a ==-?可以计算定积分的值,但在很多情况下的原函数() f x 不易求出或非常复杂.被积函数的原函数很难用初等函数表达出来,例如 2 sin (),x x f x e x -= 等;有的函数()f x 的原函数()F x 存在,但其表达式太复杂,计算量太大,有的甚至无法有解析表达式.因此能够借助牛顿-莱布尼兹公式计算定积分的情形是不多的.另外,许多实际问题中的被积函数()f x 往往是列表函数或其他形式的非连续函数,对这类函数的定积分,也不能用不定积分方法求解,只能设法求其近似值.因此,探讨近似计算的数值积分方法是有明显的实际意义的,即有必要研究定积分的数值计算方法,以解决定积分的近似计算.而数值积分就是解决此类问题的一种有效的方法,它的特点是利用被积函数在一些节点上的信息求出定积分的近似值.微积分的发明是人类科学史上一项伟大的成就,在科学技术中,积分是经常遇到的一个重要计算环节数值积分是数学上重要的课题之一,是数值分析中重要的内容之一.随着计算机的出现,近几十年来,对于数值积分问题的研究已经成为一个很活跃的研究领域.现在,数值积分在计算机图形学,积分方程,工程计算,金融数学等应用科学领域都有着相当重要的应用,所以研究数值积分问题有着很重要的意义.国内外众多学者在数值积分应用领域也提出了许多新方法.在很多实际应用中,只能知道积分函数在某些特定点的取值,比如天气测量中的气温、湿度、气压等,医学测量中的血压、浓度等等.通过这个课题的研究,我们将会更好地掌握运用数值积分算法求出特殊积分函数的定积分的一些基本方法、理论基础;并且通过Matlab 软件编程的实现,应用于实际生活中. 1.2 课题的主要内容框架

实验一B Matlab基本操作与微积分计算

实验一Matlab基本操作与微积分计算 实验目的 1.进一步理解导数概念及其几何意义. 2.学习matlab的求导命令与求导法. 3.通过本实验加深理解积分理论中分割、近似、求和、取极限的思想方法. 4.学习并掌握用matlab求不定积分、定积分、二重积分、曲线积分的方法. 5.学习matlab命令sum、symsum与int. 实验内容 一、变量 1、变量 MA TLAB中变量的命名规则是: (1)变量名必须是不含空格的单个词; (2)变量名区分大小写; (3)变量名最多不超过19个字符; (4)变量名必须以字母打头,之后可以是任意字母、数字或下划线,变量名中不允许使用标点符号. 1、创建简单的数组 x=[a b c d e f ]创建包含指定元素的行向量 x=first:step: last创建从first起,逐步加step计数,last结束的行向量, step缺省默认值为1 x=linspace(first,last,n)创建从first开始,到last结束,有n个元素的行向量 x=logspace(first,last,n)创建从first开始,到last结束,有n个元素的对数分隔行向量. 注:以空格或逗号分隔的元素指定的是不同列的元素,而以分号分隔的元素指定了不同行的元素. 2、数组元素的访问 (1)访问一个元素: x(i)表示访问数组x的第i个元素. (2)访问一块元素: x(a :b :c)表示访问数组x的从第a个元素开始,以步长为b到第c个元素(但

不超过c),b可以为负数,b缺损时为1. (3)直接使用元素编址序号: x ([a b c d]) 表示提取数组x的第a、b、c、d个元素构成一个新的数组[x (a) x (b) x(c) x(d)]. 3、数组的运算 (1)标量-数组运算 数组对标量的加、减、乘、除、乘方是数组的每个元素对该标量施加相应的加、减、乘、除、乘方运算. 设:a=[a1,a2,…,an], c=标量, 则: a+c=[a1+c,a2+c,…,an+c] a .*c=[a1*c,a2*c,…,an*c] a ./c= [a1/c,a2/c,…,an/c](右除) a .\c= [c/a1,c/a2,…,c/an] (左除) a .^c= [a1^c,a2^c,…,an^c] c .^a= [c^a1,c^a2,…,c^an] (2)数组-数组运算 当两个数组有相同维数时,加、减、乘、除、幂运算可按元素对元素方式进行的,不同大小或维数的数组是不能进行运算的. 设:a=[a1,a2,…,an], b=[b1,b2,…,bn], 则: a +b= [a1+b1,a2+b2,…,an+bn] a .*b= [a1*b1,a2*b2,…,an*bn] a ./b= [a1/b1,a2/b2,…,an/bn] a .\b=[b1/a1,b2/a2,…,bn/an] a .^b=[a1^b1,a2^b2,…,an^bn] 三、矩阵 1、矩阵的建立 矩阵直接输入:从“[ ” 开始,元素之间用逗号“,”(或空格),行之间用分号“;”(或回车),用“ ]”结束. 特殊矩阵的建立: a=[ ] 产生一个空矩阵,当对一项操作无结果时,返回空矩阵,空矩阵的大小为零. b=zeros (m,n) 产生一个m行、n列的零矩阵 c=ones (m,n) 产生一个m行、n列的元素全为1的矩阵 d=eye (m,n) 产生一个m行、n列的单位矩阵 eye (n) %生成n维的单位向量 eye (size (A)) %生成与A同维的单位阵 2、矩阵中元素的操作 (1)矩阵A的第r行A(r,:) (2)矩阵A的第r列A(:,r) (3)依次提取矩阵A的每一列,将A拉伸为一个列向量A(:) (4)取矩阵A的第i1~i2行、第j1~j2列构成新矩阵:A(i1:i2, j1:j2) (5)以逆序提取矩阵A的第i1~i2行,构成新矩阵:A(i2:-1:i1,:) (6)以逆序提取矩阵A的第j1~j2列,构成新矩阵:A(:, j2:-1:j1 ) (7)删除A的第i1~i2行,构成新矩阵:A(i1:i2,:)=[ ] (8)删除A的第j1~j2列,构成新矩阵:A(:, j1:j2)=[ ] (9)将矩阵A和B拼接成新矩阵:[A B];[A;B] 3、矩阵的运算 (1)标量-矩阵运算同标量-数组运算. (2)矩阵-矩阵运算 a. 元素对元素的运算,同数组-数组运算.(A/B %A右除B; B\A%A左除B) b. 矩阵运算: 矩阵加法:A+B 矩阵乘法:A*B 方阵的行列式:det(A) 方阵的逆:inv(A)

数值积分的算法比较及其MATLAB实现

编号: 审定成绩: 重庆邮电大学 毕业设计(论文) 设计(论文)题目:数值积分算法与MATLAB实现 学院名称:数理学院 学生姓名: 专业:数学与应用数学 班级: 学号: 指导教师: 答辩组负责人: 填表时间:年月 重庆邮电大学教务处制

摘要 在求一些函数的定积分时,由于原函数十分复杂难以求出或用初等函数表达,导致积分很难精确求出,只能设法求其近似值,因此能够直接借助牛顿-莱布尼兹公式计算定积分的情形是不多的。数值积分就是解决此类问题的一种行之有效的方法。积分的数值计算是数值分析的一个重要分支;因此,探讨近似计算的数值积分方法是有着明显的实际意义的。本文从数值积分问题的产生出发,详细介绍了一些数值积分的重要方法。 本文较详细地介绍了牛顿-科特斯求积公式,以及为了提高积分计算精度的高精度数值积分公式,即龙贝格求积公式和高斯-勒让德求积公式。除了研究这些数值积分算法的理论外,本文还将这些数值积分算法在计算机上通过MATLAB软件编程实现,并通过实例用各种求积公式进行运算,分析比较了各种求积公式的计算误差。 【关键词】数值积分牛顿-科特斯求积公式高精度求积公式MATLAB软件

ABSTRACT When the solution of the definite integral of some function values,because the original function is very complex and difficult to find the elementary function expression, the integral is difficult to accurately calculate, only managed to find the approximate value, and the case is small that allows to direct interface with the Newton - Leibniz formula to calculate the definite integral. Numerical integration is an effective method to solve such problems. The numerical integration is an important branch of numerical analysis; therefore, exploring the approximate calculation of the numerical integration method has obvious practical significance. This article departure from the numerical integration problem, described in detail some important numerical integration methods. This paper has introduced detail the Newton - Coates quadrature formula, and in order to improve the calculation accuracy of numerical integration formulas, More precise formulas have Romberg quadrature formulas and the Gauss - Legendre quadrature formula. In addition to the study of these numerical integration algorithm theory, the article also involve what these numerical integration algorithm be programmed by matlab software on the computer, and an example is calculated with a variety of quadrature formulas, finally analysis and comparison to various quadrature formulas calculation error. 【Key words】Numerical integration Newton-Cotes quadrature formula High-precision quadrature formula Matlab software

matlab微积分基本运算

matlab 微积分基本运算 §1 解方程和方程组解 1. 线性方程组求解 对于方程 AX = B ,其中 A 是( m ×n )的矩阵有三种情形: 1)当n=m 且A 非奇异时,此方程为“恰定”方程组。 2)当 n > m 时,此方程为“超定”方程组。 3)当n

0.3188 两种方法所求方程组的解相同。 (2)MATLAB 解超定方程AX=B 的方法 对于方程 AX = B ,其中 A 是( m ×n )的矩阵, n > m ,如果A 列满秩,则此方程是没有精确解的。然而在实际工程应用中,求得其最小二乘解也是有意义的。基本解法有: 1)采用求伪逆运算解方程 x=pinv(A)*B 说明:此解为最小二乘解x=inv(A ’*A)*A*B,这里pinv(A) =inv(A ’*A)*A. 2)采用左除运算解方程 x=A\B 例2 “求伪逆”法和“左除”法求下列方程组的解 ??? ??=+=+=+1 221421 221 2121x x x x x x 命令如下: >> a=[1 2;2 4;2 2]; >> b=[1,1,1]'; >> xc=a\b %用左除运算解方程 运行得结果: xc = 0.4000 0.1000 >> xd=pinv(a)*b %用求伪逆运算解方程 运行得结果: xd = 0.4000 0.1000 >> a*xc-b %xc 是否满足方程ax=b 运行得结果: ans = -0.4000 0.2000 0.0000 可见xc 并不是方程的精确解。 (3) MATLAB 解欠定方程AX=B 的方法 欠定方程从理论上说是有无穷多个解的,如果利用求“伪逆”法和“左除”法来求解,只能得到其中一个解。基本方法: 1)采用求伪逆运算解方程 x=pinv(A)*B 2)采用左除运算解方程

数值积分算法与MATLAB实现

数值积分算法与MATLAB实现 本文从网络收集而来,上传到平台为了帮到更多的人,如果您需要使用本文档,请点击下载按钮下载本文档(有偿下载),另外祝您生活愉快,工作顺利,万事如意! 摘要:在求一些函数的定积分时,由于原函数十分复杂难以求出或用初等函数表达,导致积分很难精确求出,只能设法求其近似值,因此能够直接借助牛顿-莱布尼兹公式计算定积分的情形是不多的。数值积分就是解决此类问题的一种行之有效的方法。积分的数值计算是数值分析的一个重要分支;因此,探讨近似计算的数值积分方法是有着明显的实际意义的。本文从数值积分问题的产生出发,详细介绍了一些数值积分的重要方法。 本文较详细地介绍了牛顿-科特斯求积公式,以及为了提高积分计算精度的高精度数值积分公式,即龙贝格求积公式和高斯-勒让德求积公式。除了研究这些数值积分算法的理论外,本文还将这些数值积分算法在计算机上通过MATLAB软件编程实现,并通过实例用各种求积公式进行运算,分析比较了各种求积公式的计算误差。 【关键词】数值积分牛顿-科特斯求积公式高精度求积公式MATLAB软件

前言 对于定积分,在求某函数的定积分时,在一定条件下,虽然有牛顿-莱布里茨公式可以计算定积分的值,但在很多情况下的原函数不易求出或非常复杂。被积函数的原函数很难用初等函数表达出来,例如等;有的函数的原函数存在,但其表达式太复杂,计算量太大,有的甚至无法有解析表达式。因此能够借助牛顿-莱布尼兹公式计算定积分的情形是不多的。另外,许多实际问题中的被积函数往往是列表函数或其他形式的非连续函数,对这类函数的定积分,也不能用不定积分方法求解,只能设法求其近似值。因此,探讨近似计算的数值积分方法是有明显的实际意义的,即有必要研究定积分的数值计算方法,以解决定积分的近似计算。而数值积分就是解决此类问题的一种有效的方法,它的特点是利用被积函数在一些节点上的信息求出定积分的近似值。 微积分的发明是人类科学史上一项伟大的成就,在科学技术中,积分是经常遇到的一个重要计算环节。数值积分是数学上重要的课题之一,是数值分析中重要的内容之一,也是应用数学研究的重点。随着计算机的出现,近几十年来,对于数值积分问题的研究已经成为一个很活跃的研究领域。现在,数值积分在计算

利用Matlab实现Romberg数值积分算法----系统建模与仿真结课作业

利用Matlab 实现Romberg 数值积分算法 一、内容摘要 针对于某些多项式积分,利用Newton —Leibniz 积分公式求解时有困难,可以采用数值积分的方法,求解指定精度的近似解,本文利用Matlab 中的.m 文件编写了复化梯形公式与Romberg 的数值积分算法的程序,求解多项式的数值积分,比较两者的收敛速度。 二、数值积分公式 1.复化梯形公式求解数值积分的基础是将区间一等分时的Newton —Cotes 求积公式: I =(x)[f(a)f(b)]2 b a b a f dx -≈ +? 其几何意义是,利用区间端点的函数值、与端点构成的梯形面积来近似(x)f 在区间[a,b]上的积分值,截断误差为: 3" (b a)()12 f η-- (a,b)η∈ 具有一次的代数精度,很明显,这样的近似求解精度很难满足计算的要求,因而,可以采用将积分区间不停地对分,当区间足够小的时候,利用梯形公式求解每一个小区间的积分近似值,然后将所有的区间加起来,作为被求函数的积分,可以根据计算精度的要求,划分对分的区间个数,得到复化梯形公式: I =1 1 (b a)(b a) (x)dx [f(a)f(b)2(a )]2n b a k k f f n n -=--≈+++∑? 其截断误差为:

2" (b a)h ()12 R f η--= (a,b)η∈ 2.Romberg 数值积分算法 使用复化的梯形公式计算的数值积分,其收敛速度比减慢,为此,采用Romberg 数值积分。其思想主要是,根据I 的近似值2n T 加上I 与2n T 的近似误差,作为新的I 的近视,反复迭代,求出满足计算精度的近似解。 用2n T 近似I 所产生的误差可用下式进行估算: 12221 ()3 n n n I T T T -?=-=- 新的I 的近似值: 122 n n j T T -=?+ j =(0 1 2 ….) Romberg 数值积分算法计算顺序 i=0 (1) 002T i=1 (2) 102T (3) 012T i=2 (4) 202T (5) 112T (6) 022T i=3 (7) 302T (8) 212T (9) 122T (10) 032T i=4 (11) 402T (12) 312T (13) 222T (14) 132T … … … … 其中,第一列是二阶收敛的,第二列是四阶收敛的,第三列是六阶收敛的,第四列是八阶收敛的,即Romberg 序列。

Matlab数值积分与数值微分

M a t l a b数值积分与数值微分 Matlab数值积分 1.一重数值积分的实现方法 变步长辛普森法、高斯-克朗罗德法、梯形积分法 1.1变步长辛普森法 Matlab提供了quad函数和quadl函数用于实现变步长 辛普森法求数值积分.调用格式为: [I,n]=Quad(@fname,a,b,tol,trace) [I,n]=Quadl(@fname,a,b,tol,trace) Fname是函数文件名,a,b分别为积分下限、积分上限; tol为精度控制,默认为1.0×10-6,trace控制是否展 开积分过程,若为0则不展开,非0则展开,默认不展开. 返回值I为积分数值;n为调用函数的次数. --------------------------------------------------------------------- 例如:求 ∫e0.5x sin(x+π )dx 3π 的值. 先建立函数文件 fesin.m function f=fesin(x) f=exp(-0.5*x).*sin(x+(pi/6));再调用quad函数

[I,n]=quad(@fesin,0,3*pi,1e-10) I= 0.9008 n= 365 --------------------------------------------------------------------- 例如:分别用quad函数和quadl函数求积分 ∫e0.5x sin(x+π 6 )dx 3π 的近似值,比较函数调用的次数. 先建立函数文件 fesin.m function f=fesin(x) f=exp(-0.5*x).*sin(x+(pi/6)); formatlong [I,n]=quadl(@fesin,0,3*pi,1e-10) I= n= 198 [I,n]=quad(@fesin,0,3*pi,1e-10) I= n= 365 --------------------------------------------------------------------- 可以发现quadl函数调用原函数的次数比quad少,并 且比quad函数求得的数值解更精确. 1.2高斯-克朗罗德法

详解Matlab求积分的各种方法

详解Matlab求积分地各种方法 一、符号积分 符号积分由函数int来实现.该函数地一般调用格式为: int(s):没有指定积分变量和积分阶数时,系统按findsym函数指示地默认变量对被积函数或符号表达式s求不定积分; int(s,v):以v为自变量,对被积函数或符号表达式s求不定积分; int(s,v,a,b):求定积分运算.a,b分别表示定积分地下限和上限.该函数求被积函数在区间[a,b]上地定积分.a和b可以是两个具体地数,也可以是一个符号表达式,还可以是无穷(inf).当函数f关于变量x在闭区间[a,b]上可积时,函数返回一个定积分结果.当a,b中有一个是inf时,函数返回一个广义积分.当a,b中有一个符号表达式时,函数返回一个符号函数. 例: 式 F2 = 1. 2. 其中 取tol=0.001.trace控制是否展现积分过程,若取非0则展现积分过程,取0则不展现,缺省时取trace=0.返回参数I即定积分值,n为被积函数地调用次数. 例: 求函数'exp(-x*x)地定积分,积分下限为0,积分上限为1. >>fun=inline('exp(-x.*x)','x'); %用内联函数定义被积函数fname >>Isim=quad(fun,0,1) %辛普生法 Isim = 0.746824180726425 IL=quadl(fun,0,1) %牛顿-柯特斯法

IL = 0.746824133988447 三、梯形法求向量积分 trapz(x,y)—梯形法沿列方向求函数Y关于自变量X地积分(向量形式,数值方法). >>d=0.001; >>x=0:d:1; >>S=d*trapz(exp(-x.^2)) S= 0.7468 或: S =

2019年数值积分的matlab实现

实验10 数值积分 实验目的: 1.了解数值积分的基本原理; 2.熟练掌握数值积分的MATLAB实现; 3.会用数值积分方法解决一些实际问题。 实验内容: 积分是数学中的一个基本概念,在实际问题中也有很广泛的应用。同微分一样,在《微积分》中,它也是通过极限定义的,由于实际问题中遇到的函数一般都以列表形式给出,所以常常不能用来 直接进行积分。此外有些函数虽然有解析式,但其原函数不是初等函数,所sinx 1?xd这时我们一般考虑用数值方法计算其如不定积分。以仍然得不到积分的精确值,x0 近似值,称为数值积分。10.1 数值微分简介 *x)f(x?y在设函数可导,则其导数为**)x?f(x(?h)f*?lim?(xf))(10.1 h0h?y?f(x)以列表形式给出(见表10-1),则其精确值无法求得,但可由下式求得如果函数其近似值 **)(fx?h)f(x?*??xf)( 10.2)(h表 10-1 x ……n hy?f(x)在(10.2)式右端项的分子称为函数一般的,步长越小,所得结果越精确。**xx的差分,所以右端项又称为差商。的差分,分母称为自变量在数值微分即用差商近似代替微商。常用的差商公式为: f(x?h)?f(x?h)?00?(x)f(10.3 ) 02h?3y?4y?y?210?)(fx(10.4)0h2. y?4y?3y?nn?2n?1?x)f((10.5)n2h2)hO(,称为统称三点公式。其误差均为10.2 数值微分的MATLAB实现 MATLAB提供了一个指令求解一阶向前差分,其使用格式为: dx=diff(x) ??nx?,xxx,x?,x?1?n,这样基于两点的数值导dx维数组,为其中x是维数组132n21数可通过指令diff(x)/h实现。对于三点公式,读者可参考例1的M函数文件diff3.m。 x?f()(xx)y?f的值由下表给用三点公式计算处的导数值,在1.0,1.2,1.41例 出。 1.0 1.1 1.2 1.3 1.40.2500 0.2268 0.2066 0.1890 0.1736

相关主题
文本预览
相关文档 最新文档