Matlab微积分问题的计算机求解实验
- 格式:ppt
- 大小:782.50 KB
- 文档页数:41
实验一Matlab基本操作与微积分计算实验目的1.进一步理解导数概念及其几何意义.2.学习matlab的求导命令与求导法.3.通过本实验加深理解积分理论中分割、近似、求和、取极限的思想方法.4.学习并掌握用matlab求不定积分、定积分、二重积分、曲线积分的方法.5.学习matlab命令sum、symsum与int.实验内容一、变量1、变量MATLAB中变量的命名规则是:(1)变量名必须是不含空格的单个词;(2)变量名区分大小写;(3)变量名最多不超过19个字符;(4)变量名必须以字母打头,之后可以是任意字母、数字或下划线,变量名中不允许使用标点符号.1、创建简单的数组x=[a b c d e f ]创建包含指定元素的行向量x=first:step: last创建从first起,逐步加step计数,last结束的行向量, step缺省默认值为1x=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)方阵的特征值与特征向量:[V,D]=eig[A] A 的转置 A’ A 的n 次幂A^n 四、导数及偏导数计算 1.学习matlab 命令.建立符号变量命令sym 和syms 调用格式: x=sym(‘x’), 建立符号变量x ;syms x y z , 建立多个符号变量x,y,z ; matlab 求导命令diff 调用格式:diff (函数()f x ) , 求()f x 的一阶导数()f x ';diff (函数()f x , n ) , 求()f x 的n 阶导数()()n f x (n 是具体整数); diff (函数(,)f x y ,变量名x ), 求(,)f x y 对x 的偏导数f x∂∂; diff (函数(,)f x y , 变量名x ,n ) ,求(,)f x y 对x 的n 阶偏导数n n fx∂∂;matlab 求雅可比矩阵命令jacobian ,调用格式:jacobian ([(,,)f x y z ;(,,)g x y z ;(,,)h x y z ], [,,x y z ])给出: f f f x y z gg g x y z h h h xyz ⎛⎫∂∂∂ ⎪∂∂∂ ⎪ ⎪∂∂∂⎪∂∂∂ ⎪ ⎪∂∂∂ ⎪∂∂∂⎝⎭2.求一元函数的导数. (1)()y f x =的一阶导数. 例1.1 设()x f x e =,用定义计算(0)f '. 解:()f x 在某一点0x 的导数定义为极限: 000()()limx f x x f x x∆→+∆-∆我们记h x =∆,输入命令:syms h;limit((exp(0+h)-exp(0))/h,h,0) 得结果:ans=1.可知(0)1f '= 例1.2 求ln(sin )y x =的导数. 解: 输入命令:dy_dx=diff(log(sin(x))). 得结果:dy_dx=cos(x)/sin(x).在matlab 中,函数x ln 用log(x)表示,而log10(x)表示x lg .例1.3 求下列函数的导数: %利用matlab 命令diff 一次可以求出若干个函数的导数.1.1y =2.22cos 2cos2y x x =+.3.xy sin 34=.4.xy ln ln 4=. 解: 输入命令:a=diff([sqrt(x^2- 2*x+5),cos(x^2)+2*cos(2*x),4^(sin(x)),log(log(x))]). 得结果:a=[1/2/(x^2-2*x+5)^(1/2)*(2*x-2), -2*sin(x^2)*x-4*sin(2*x), 4^sin(x)*cos(x)*log(4), 1/x/log(x)].由本例可以看出,matlab 函数是对矩阵或向量进行操作的,a(i)表示向量a 的第i 个分量.函数向量的第i 个函数的导数为导数向量中对应的元素。
软件学院 MATLAB 程序设计 课程实验报告 201 ~201 学年 第 学期 级 专业班级: 学号: 姓名:实验六 数值微分积分实验一、实验目的1.掌握基本的插值与拟合方法2.掌握使用数学工具Matlab 进行实际问题的插值和拟合建模二、实验内容1.解微分方程2. 求解积分三、实验环境1.工具软件:MATLAB2012b四、实验步骤1. 解微分方程(1)微分方程的解析解dsolve(‘方程1’, ’方程2’,…‘方程n ’, ‘初始条件…’, ‘自变量’)求微分方程的特解⎪⎩⎪⎨⎧===++15)0(',0)0(029422y y y dx dy dx y d(2)求微分方程组的通解⎪⎪⎪⎩⎪⎪⎪⎨⎧+-=+-=+-=z y x dtdz z y x dt dy zy x dt dx 244354332(3)常微分方程的数值解[t ,x]=solver (’f ’, ts, x0, options )解微分方程组⎪⎪⎩⎪⎪⎨⎧===-=-==1)0(,1)0(,0)0(51.0'''321213312321y y y y y y y y y y y y(4)实例-微分方程设位于坐标原点的甲舰向位于x 轴上点A(1, 0)处的乙舰发射导弹,导弹头始终对准乙舰.如果乙舰以最大的速度v 0(是常数)沿平行于y 轴的直线行驶,导弹的速度是5v 0,求导弹运行的曲线方程,并绘图表示。
2. 求解积分(1) quad 函数、quadl 函数quad8函数来求定积分例:被积函数f(x)=x*sin(x)/(1+cos(x)*cos(x)),x 的范围自定义(2) 梯形积分函数trapzX = sort(rand(1,101)*pi);Y = sin(X);Z = trapz(X,Y);(3)dblquad 函数用于求二重积分的数值解自变量范围:pi <= x <= 2*pi, 0 <= y <= pi ;被积函数z = y*sin(x)+x 2*cos(y)(4)triplequad 函数用于求三重积分的数值解五、分析与思考1、什么是解析解?什么是数值解?六、实验总结。
计算方法实验报告matlab《使用MATLAB进行计算方法实验报告》摘要:本文利用MATLAB软件进行了一系列计算方法实验,包括数值积分、微分方程求解、线性代数计算等。
通过实验结果分析,我们验证了各种计算方法的准确性和稳定性,为进一步研究和应用这些方法提供了可靠的数值支持。
引言:计算方法是现代科学和工程中不可或缺的一部分,它们通过数值计算的方式解决了许多复杂的数学问题。
MATLAB作为一种强大的数值计算工具,被广泛应用于各种计算方法的实验和研究中。
本文将利用MATLAB进行一系列计算方法实验,验证其在数值计算中的有效性和实用性。
实验一:数值积分在本实验中,我们将使用MATLAB对一些常见的积分问题进行数值求解,比较不同数值积分方法的精度和收敛速度。
通过实验结果的分析,我们将评估各种数值积分方法的适用范围和优缺点。
实验二:微分方程求解微分方程是自然界和工程领域中常见的数学模型,其数值求解方法对于模拟和预测系统行为至关重要。
在本实验中,我们将使用MATLAB对一些典型的微分方程进行数值求解,并比较不同数值方法的稳定性和精度。
实验三:线性代数计算线性代数是现代科学和工程中的基础学科,其在数据处理、信号处理、优化等领域中有着广泛的应用。
在本实验中,我们将利用MATLAB进行一些常见的线性代数计算,比如矩阵求逆、特征值分解等,验证其数值计算的准确性和效率。
结论:通过以上一系列的实验,我们验证了MATLAB在计算方法实验中的有效性和实用性。
我们发现,MATLAB提供了丰富的数值计算工具和函数库,能够满足各种计算方法实验的需求。
同时,我们也发现不同的计算方法在不同的问题上有着各自的优势和局限性,需要根据具体问题选择合适的方法。
希望本文的实验结果能够为相关领域的研究和应用提供一定的参考和借鉴。
实验四 用matlab 计算积分4.1积分的有关理论定积分:积分是微分的无限和,函数)(x f 在区间],[b a 上的积分定义为∑⎰=→∆∆==ni ii x bax f dx x f I i 1)max()(lim)(ξ其中.,,2,1),,(,,1110n i x x x x x b x x x a i i i i i i n =∈-=∆=<<<=--ξ从几何意义上说,对于],[b a 上非负函数)(x f ,记分值I 是曲线)(x f y =与直线b x a x ==,及x 轴所围的曲边梯形的面积。
有界连续(或几何处处连续)函数的积分总是存在的。
微积分基本定理(Newton-Leibniz 公式):)(x f 在],[b a 上连续,且],[),()('b a x x f x F ∈=,则有)()()(a F b F dx x f ba-=⎰这个公式表明导数与积分是一对互逆运算,它也提供了求积分的解析方法:为了求)(x f 的定积分,需要找到一个函数)(x F ,使)(x F 的导数正好是)(x f ,我们称)(x F 是)(x f 的原函数或不定积分。
不定积分的求法有学多数学技巧,常用的有换元积分和分部积分法。
从理论上讲,可积函数的原函数总是存在的,但很多被积函数的原函数不能用初等函数表示,也就是说这些积分不能用解析方法求解,需用数值积分法解决。
在应用问题中,常常是利用微分进行分析,而问题最终归结为微分的和(即积分)。
一些更复杂的问题是含微分的方程,不能直接积分求解。
多元函数的积分称为多重积分。
二重积分的定义为∑∑⎰⎰∆∆=→∆+∆ijji j i y x Gy x f dxdy y x f i i ),(lim ),(0)max(22ηξ当),(y x f 非负时,积分值表示曲顶柱体的体积。
二重积分的计算主要是转换为两次单积分来解决,无论是解析方法还是数值方法,如何实现这种转换,是解决问题的关键。
第三章微积分问题的计算机求解一、实验内容:题目1.试求出如下极限。
①limx→∞(3x +9x )1/ x,②lim x→∞[(x+2)x+2(x+3)x+3 ]/(x+5)2x+5【分析】:该题为单变量函数的极限。
极限问题可以用limit()函数直接求出。
要注意该函数的调用格式为:L=limit(fun,x,x0)(求极限),L=limit(fun,x,x0,’left’或’right’)(求极限)。
还需注意一开始要对函数的字符进行申明。
【解答】:(1)输入如下语句:>> syms x;f=(3^x+9^x)^(1/x);L=limit(f,x,inf)语句运行后显示如下:L =9(2)输入如下语句:>>syms x;f=(x+2)^(x+2)*(x+3)^(x+3)/(x+5)^(2*x+5);>> L=limit(f,x,inf)语句运行后显示如下:L =exp(-5)题目2.试求下面的双重极限。
①lim x→−1y→2 (x2y+xy3)/(x+y) 3,②limx→0 y→0 xy /√(xy+1)−1,③limx→0y→0 [1−cos(x2+y2)]/(x2+y2)e x2+y2。
【分析】:该题为多变量函数的极限问题。
他可以用嵌套使用limit()函数来解决。
在MATLAB上可以用L=limit(limit(f,x,x0),y,y0)或者L=limit(f,y,y0),x,x0)来解决。
其思想是所有的先关于X求导,再所有的关于y求导。
【解答】:(1)输入如下语句:>> syms x y>> f=(x^2*y+x*y^3)/(x+y)^3;>> L=limit(limit(f,x,-1),y,2)语句运行后显示如下:L =-6(2)输入如下语句:>> syms x yf=(x*y)/(sqrt(x*y+1)-1);L=limit(limit(f,x,0),y,0)按ENTER键,语句运行后显示如下:L =2(3)输入如下语句:>> syms x yf=(1-cos(x^2+y^2))/(sqrt(x^2+y^2)*exp(x^2+y^2));L=limit(limit(f,x,0),y,0)按ENTER键,语句运行后显示如下:L =题目3.求出下面函数的导数。