当前位置:文档之家› matlab求解微积分函数

matlab求解微积分函数

matlab求解微积分函数
matlab求解微积分函数

微积分函数

函数的极限、单变量与多变量函数微积分、常微分方程、级数求和幂级数展开等问题是微积分的重要内容。利用软件的符号运算功能可以直接求解这些问题!注意在使用变量之前必须遵守先定义后使用的原则!

MATLAB 提供了两个建立符号对象的函数:sym 和 syms 两个函数的用法不同:sym 函数用来建立单个符号量N 用法:符号量名 sym 符字符串而函数。函数sysm 一次可以定义多个符号变量sym 函数的一般调用格式为:syms 符号变量名1符号变量名2…符号变量名n 。

求函数的极限(limit 命)的调用格式:limit(fx,a):求符号函数f(x)当x 趋近于a 时的极限值(当写成limit(f ,a)时,表示符号函数f(x)的变量为函数findsym(f )确定的默认自变量,即变量x 趋近于a)

例1求极限 x x x

x cos 11

0)sin (lim -→ 在MATLAB 命令窗口中依次输入:

>>syms x %定义符号变量x;

>>limit((sin(x)/x}l /(1一cos(x))),x,0)

运行结果:

ans=

exp( 1/3)

也可以单独求函数在某一点处的单侧极限:左极限limit 优x,a,'left' );右极限limit(fx,a,' right' );

diff 命令的调用格式为:

Diff(f) %关于系统默认的变量求导数

Diff(f,x) %以x 为自变量,对符号表达式f 求一阶导数 diff(f,'x',n) %以x 为自变量,对符号表达式f 求n 阶导数 对于多元函数求偏导数的命令调用格式为:

diff(diff(fx,m),y,n) %先对f 关于变量x 求m 阶偏导数,后再对关于y 求n 阶偏导数; diff(diff(fy,n),x,m)%先对f 关于变量Y 求n 阶偏导数,后再对关于x 求m 阶偏导数;

微积分研究的对象是函数关系,但是在实际问题中,往往很难直接得到所研究的变量之间的函数关系,而比较容易建立起这些变量或者导数之间的关系,从而得到一个含有未函数的导数或者微分的方程,即微分方程。通过求解这些微分方程同样可以找到这些变量之间的函数关系。但是解微分方程,特别是二阶或者二阶以上的微分方程对初学者来说,有一定的困难。而用人matlab 软件,问题就变得十分简单解一阶微分方程常用的方法有:直接积分法,分离变量法,常数变易法等方法,变量替换法等方法。对于可降阶的二阶微分方程一般通过换元将二阶微分方程转化化为一阶线性微分方程然后利用一阶微分方程的解法求解。

例2,解微分方程 1)0(,sin 2'=+=y t t y

分析:根据一阶微分方程解的理沦直接积分可以求解上述微分方程,matlab求解过程:

在matlab中输入:

>>solve=dsolve('Dy=t^2+sin(t)'):计算结果solve= 1 /3 * t^3- cos(t)+Cl ;

利用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微积分基本运算

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实现

实验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实现陈悦5133201讲解

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

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

数值积分用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 计算多元函数的积分 三重积分的计算最终是化成累次积分来完成的,因此只要能正确的得出各累次积分的积分限,便可在MA TLAB 中通过多次使用int 命令来求得计算结果。但三重积分的积分域Ω是一个三维空间区域,当其形状较复杂时,要确定各累次积分的积分限会遇到一定困难,此时,可以借助MATLAB 的三维绘图命令,先在屏幕上绘出Ω的三维立体图,然后执行命令 rotate3d on ↙ 便可拖动鼠标使Ω的图形在屏幕上作任意的三维旋转,并且可用下述命令将Ω的图形向三个坐标平面进行投影: view(0,0),向XOZ 平面投影; view(90,0),向YOZ 平面投影; view(0,90),向XOY 平面投影. 综合运用上述方法,一般应能正确得出各累次积分的积分限。 例11.6.1计算zdv Ω ???,其中Ω是由圆锥曲面222z x y =+与平面z=1围成的闭区域 解 首先用MA TLAB 来绘制Ω的三维图形,画圆锥曲面的命令可以是: syms x y z ↙ z=sqrt(x^2+y^2); ↙ ezsurf(z,[-1.5,1.5]) ↙ 画第二个曲面之前,为保持先画的图形不会被清除,需要执行命令 hold on ↙ 然后用下述命令就可以将平面z=1与圆锥面的图形画在一个图形窗口内: [x1,y1]=meshgrid(-1.5:1/4:1.5); ↙ z1=ones(size(x1)); ↙ surf(x1,y1,z1) ↙ 于是得到Ω的三维图形如图:

由该图很容易将原三重积分化成累次积分: 111zdv dy -Ω=???? 于是可用下述命令求解此三重积分: clear all ↙ syms x y z ↙ f=z; ↙ f1=int(f,z.,sqrt(x^2+ y^2),1); ↙ f2=int(f1,x,-sqrt(1- y^2), sqrt(1- y^2)); ↙ int(f2,y,-1,1) ↙ ans= 1/4*pi 计算结果为4 π 对于第一类曲线积分和第一类曲面积分,其计算都归结为求解特定形式的定积分和二重积分,因此可完全类似的使用int 命令进行计算,并可用diff 命令求解中间所需的各偏导数。 例11.6.2用MATLAB 求解教材例11.3.1 解 求解过程如下 syms a b t ↙ x=a*cos(t); ↙ y=a*sin(t); ↙ z=b*t; ↙ f=x^2 +y^2+z^2; ↙ xt=diff(x,t); ↙ yt=diff(y,t); ↙ zt=diff(z,t); ↙ int(f*sqrt(xt^2 +yt^2+zt^2),t,0,2*pi) ↙ ans= 2/3*( a^2 +b^2)^1/2*a^2*pi+8/3*( a^2 +b^2)^1/2*b^2*pi^3 对此结果可用factor 命令进行合并化简: factor (ans ) ans= 2/3*( a^2 +b^2)^1/2*pi*(3* a^2 +4*b^2*pi^2) 例11.6.3用MATLAB 求解教材例11.4.1 解 求解过程如下 syms x y z1 z2↙ f= x^2 +y^2; ↙ z1=sqrt(x^2 +y^2); ↙ z2=1; ↙ z1x=diff(z1,x); ↙ z1y=diff(z1,y); ↙ z2x=diff(z2,x); ↙ z2y=diff(z2,y); ↙

数值积分算法与MATLAB实现

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

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

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数值积分 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实现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求积分的各种方法

详解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 =57/-

/348075*2^(1/2)+14912/4641*2^(1/4)+64/225*2^(3/4) %给出有理数 解>>VF2=vpa(F2) %给出默认精度的数值解VF2 = 224.9 232805二、数值积分 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.0 01。 trace控制是否展现积分过程,若取非0则展现积分过程,取0则不展现,缺省时取trace= 0。

高等数学实验报告matlab

西安交通大学 高等数学 实验报告 班级 组员与学号 2013年

实验名称:学生成绩管理 一、实验目的 二、实验内容 三、详细编程 clear for i=1:10 a{i}=89+i; b{i}=79+i; c{i}=69+i; d{i}=59+i; end c=[d,c]; Name=input('please input name:'); Score=input('please input score:'); n=length(Score); Rank=cell(1,n); S=struct('Name',Name,'Score',Score,'Rank',Rank); for i=1:n switch S(i).Score case 100 S(i).Rank='满分'; case a S(i).Rank='优秀'; case b S(i).Rank='良好'; case c S(i).Rank='及格'; otherwise S(i).Rank='不及格'; end end disp(['学生姓名 ','得分 ','等级']);

for i=1:n disp([S(i).Name,blanks(6),num2str(S(i).Score),blanks(6),S(i).Rank]); end s=0; for i=1:n s=S(i).Score+s; end averscore=s/n; t=S(1).Score; for i=1:(n-1) if(S(i).ScoreS(i+1).Score) m=S(i+1).Score; end end disp(['平均成绩']); disp([averscore]); disp(['最高分']); disp(t); disp(['最低分']); disp(m); 四、实验结果

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