实验四 用Matlab求解方程
MATLAB实验报告(1-4)
信号与系统MATLAB第一次实验报告一、实验目的1.熟悉MATLAB软件并会简单的使用运算和简单二维图的绘制。
2.学会运用MATLAB表示常用连续时间信号的方法3.观察并熟悉一些信号的波形和特性。
4.学会运用MATLAB进行连续信号时移、反折和尺度变换。
5.学会运用MATLAB进行连续时间微分、积分运算。
6.学会运用MATLAB进行连续信号相加、相乘运算。
7.学会运用MATLAB进行连续信号的奇偶分解。
二、实验任务将实验书中的例题和解析看懂,并在MATLAB软件中练习例题,最终将作业完成。
三、实验内容1.MATLAB软件基本运算入门。
1). MATLAB软件的数值计算:算数运算向量运算:1.向量元素要用”[ ]”括起来,元素之间可用空格、逗号分隔生成行向量,用分号分隔生成列向量。
2.x=x0:step:xn.其中x0位初始值,step表示步长或者增量,xn 为结束值。
矩阵运算:1.矩阵”[ ]”括起来;矩阵每一行的各个元素必须用”,”或者空格分开;矩阵的不同行之间必须用分号”;”或者ENTER分开。
2.矩阵的加法或者减法运算是将矩阵的对应元素分别进行加法或者减法的运算。
3.常用的点运算包括”.*”、”./”、”.\”、”.^”等等。
举例:计算一个函数并绘制出在对应区间上对应的值。
2).MATLAB软件的符号运算:定义符号变量的语句格式为”syms 变量名”2.MATLAB软件简单二维图形绘制1).函数y=f(x)关于变量x的曲线绘制用语:>>plot(x,y)2).输出多个图像表顺序:例如m和n表示在一个窗口中显示m行n列个图像,p表示第p个区域,表达为subplot(mnp)或者subplot(m,n,p)3).表示输出表格横轴纵轴表达范围:axis([xmax,xmin,ymax,ymin])4).标上横轴纵轴的字母:xlabel(‘x’),ylabel(‘y’)5).命名图像就在subplot写在同一行或者在下一个subplot前:title(‘……’)6).输出:grid on举例1:举例2:3.matlab程序流程控制1).for循环:for循环变量=初值:增量:终值循环体End2).while循环结构:while 逻辑表达式循环体End3).If分支:(单分支表达式)if 逻辑表达式程序模块End(多分支结构的语法格式)if 逻辑表达式1程序模块1Else if 逻辑表达式2程序模块2…else 程序模块nEnd4).switch分支结构Switch 表达式Case 常量1程序模块1Case 常量2程序模块2……Otherwise 程序模块nEnd4.典型信号的MATLAB表示1).实指数信号:y=k*exp(a*t)举例:2).正弦信号:y=k*sin(w*t+phi)3).复指数信号:举例:4).抽样信号5).矩形脉冲信号:y=square(t,DUTY) (width默认为1)6).三角波脉冲信号:y=tripuls(t,width,skew)(skew的取值在-1~+1之间,若skew取值为0则对称)周期三角波信号或锯齿波:Y=sawtooth(t,width)5.单位阶跃信号的MATLAB表示6.信号的时移、反折和尺度变换:Xl=fliplr(x)实现信号的反折7.连续时间信号的微分和积分运算1).连续时间信号的微分运算:语句格式:d iff(function,’variable’,n)Function:需要进行求导运算的函数,variable:求导运算的独立变量,n:求导阶数2).连续时间信号的积分运算:语句格式:int(function,’variable’,a,b)Function:被积函数variable:积分变量a:积分下限b:积分上限(a&b默认是不定积分)8.信号的相加与相乘运算9.信号的奇偶分解四、小结这一次实验让我能够教熟悉的使用这个软件,并且能够输入简单的语句并输出相应的结果和波形图,也在一定程度上巩固了c语言的一些语法。
实验四MATLAB数值计算与符号计算
实验四 MATLAB数值计算与符号计算一、实验目的1.掌握数据插值和曲线拟合的方法2.掌握求数值导数和数值积分的方法3.掌握代数方程数值求解的方法4.掌握常微分方程数值求解的方法5.掌握求解优化问题的方法6.掌握求符号极限、导数和积分的方法7.掌握代数方程符号求解的方法8.掌握常微分方程符号求解的方法二、实验原理1.数据插值a) 一维数据插值 Y1=interp1(X,Y,X1,’method’)b) 二维数据插值 Z1=interp2(X,Y,Z,X1,Y1,’method’)2.曲线拟合[P,S]=polyfit(X,Y,m)3.符号对象的建立(1)符号量名=sym(符号字符串):建立单个的符号变量或常量;(2)syms arg1 arg2,…,argn:建立n个符号变量或常量。
4.基本符号运算(1)基本四则运算:+,-,*,\,^(2)分子与分母的提取:[n,d]=numden(s)(3)因式分解与展开:factor(s),expand(s)(4)化简:simplify, simple(s)5.符号函数及其应用(1)求极限:limit(f,x,a)(2)求导数:diff(f,x,a);(3)求积分:int(f,v)三、实验内容1.按下表用3次样条方法插值计算0~900范围内整数点的正弦值和0~750范围内整数点的正切值,然后用5次多项式拟合方法计算相同的函数值,并将两种计算结果进行比较。
x2=0:75;y1=sin(pi.*x1./180);y2=tan(pi.*x2./180);;a=interp1(x1,y1,45,'cublic')b=interp1(x1,y1,45,'cublic')p1=polyfit(x1,y1,5)p2=polyfit(x2,y2,5)c1=polyval(p1,x1);c2=polyval(p2,x2);subplot(2,1,1);plot(x1,c1,':o',x1,y1,'r');subplot(2,1,2);plot(x2,c2,':o',x2,y2,'r');10203040506070802.(1)求函数33()sin cos f x x x =+在点,,,6432x ππππ=的数值导数。
MATLAB实验四_求微分方程的解
参数说明
[T,Y] = solver(odefun,tspan,y0)
odefun 为显式常微分方程,可以用命令 inline 定义,或 在函数文件中定义,然后通过函数句柄调用。
dy 2 2 y 2 x 2x 求初值问题 的数值解,求解范 例: dx 围为 [0,0.5] y( 0 ) 1
dsolve的输出个数只能为一个 或 与方程个数相等。
只有很少一部分微分方程(组)能求出解析解。 大部分微分方程(组)只能利用数值方法求数值解。
Matlab函数数值求解
[T,Y] = solver(odefun,tspan,y0)
其中 y0 为初值条件,tspan为求解区间;Matlab在数值求解 时自动对求解区间进行分割,T (列向量) 中返回的是分割点 的值(自变量),Y (数组) 中返回的是这些分割点上的近似解, 其列数等于因变量的个数。
数学实验
实验四
求微分方程的解
问题背景和实验目的
自牛顿发明微积分以来,微分方程在描述事物运 动规律上已发挥了重要的作用。实际应用问题通过 数学建模所得到的方程,绝大多数是微分方程。 由于实际应用的需要,人们必须求解微分方程。 然而能够求得解析解的微分方程十分有限,绝大多 数微分方程需要利用数值方法来近似求解。 本实验主要研究如何用 Matlab 来计算微分方程 (组)的数值解,并重点介绍一个求解微分方程的 基本数值解法--Euler折线法。
Runge-Kutta 方法
Euler 法与 R-K法误差比较
Matlab 解初值问题
用 Maltab自带函数 解初值问题 求解析解:dsolve 求数值解:
ode45、ode23、 ode113、ode23t、ode15s、 ode23s、ode23tb
实验四MATLAB符号运算
实验四MATLAB符号运算实验四MATLAB符号运算⼀、实验⽬的:1、掌握定义符号对象的⽅法;2、掌握符号表达式的运算法则以及符号矩阵运算。
3、掌握求符号函数极限及导数的⽅法。
4、掌握求符号函数定积分和不定积分的⽅法。
⼆、实验原理1、符号常量、符号变量、符号表达式的创建(1) 使⽤sym( )创建输⼊以下命令,观察Workspace 中A、B、f是什么类型的数据,占⽤多少字节的内存空间。
>>A=sym('1') %符号常量>>B=sym('x') %符号变量>>f=sym('2*x^2+3y-1') %符号表达式>>clear>>f1=sym('1+2') %有单引号,表⽰字符串>>f2=sym(1+2) %⽆单引号>>f3=sym('2*x+3')>>f4=sym(2*x+3) %为什么会出错>>x=1>>f4=sym(2*x+3)通过看MATLAB 的帮助可知,sym( )的参数可以是字符串或数值类型,⽆论是哪种类型都会⽣成符号类型数据。
(2) 使⽤syms 创建>>clear>>syms x y z %注意观察x,y,z都是什么类型的,它们的内容是什么>>x,y,z>>f1=x^2+2*x+1>>f2=exp(y)+exp(z)^2>>f3=f1+f2通过以上实验,知道⽣成符号表达式的第⼆种⽅法:由符号类型的变量经过运算(加减乘除等)得到。
⼜如:>>f1=sym('x^2+y +sin(2)')>>syms x y>>f2=x^2+y+sin(2)>>x=sym('2') , y=sym('1')>>f3=x^2+y+sin(2)>>y=sym('w')>>f4=x^2+y+sin(2)(3)符号矩阵创建>>syms a1 a2 a3 a4>>A=[a1 a2;a3 a4]>>A(1),A(3)或者>>B=sym('[ b1 b2 ;b3 b4] ')>>c1=sym('sin(x) ')>>c2=sym('x^2')>>c3=sym('3*y+z')>>c4=sym('3 ')>>C=[c1 c2; c3 c4]2、符号算术运算(1) 符号量相乘、相除符号量相乘运算和数值量相乘⼀样,分成矩阵乘和数组乘。
如何利用Matlab进行模拟和仿真实验
如何利用Matlab进行模拟和仿真实验Matlab是一种功能强大的数学计算和数据可视化软件。
它不仅可以进行数学模拟和仿真实验,还可以处理数据、绘制图表和实施算法。
在工程、物理学、生物学等领域,Matlab被广泛用于解决各种实际问题。
本文将介绍如何利用Matlab进行模拟和仿真实验,并探讨其在实验设计和结果分析中的应用。
一. Matlab的基本功能Matlab具有很多基本功能,如矩阵操作、数值计算、符号计算等。
这些功能使得Matlab成为进行模拟和仿真实验的理想选择。
在Matlab中,可以定义和操作矩阵,进行线性代数运算,如求解方程组、矩阵求逆等。
此外,Matlab还提供了许多内置函数,可以进行数值计算和符号计算,如求解微分方程、积分、数值优化等。
二. 模拟实验的设计在进行模拟实验之前,首先需要设计实验方案。
实验设计包括选择合适的模型和参数设置,确定实验变量和观测指标等。
在Matlab中,可以使用函数或脚本来定义模型和参数,通过修改参数值来观察实验结果的变化。
比如,可以使用Matlab的模型库来选择合适的模型,然后使用函数传入参数值进行求解。
此外,Matlab还提供了绘图功能,可以绘制实验结果的图表,以便更直观地分析数据。
三. 仿真实验的实施在设计好实验方案后,就可以开始进行仿真实验了。
在Matlab中,可以使用已定义的模型和参数进行仿真计算。
可以通过Matlab的编程功能来实现计算过程的自动化。
比如,可以使用循环语句来迭代计算,以观察参数变化对结果的影响。
此外,Matlab还提供了随机数生成和统计分析函数,可以用于生成随机变量和分析实验数据。
四. 实验结果的分析在完成仿真实验后,需要对实验结果进行分析。
Matlab提供了丰富的数据处理和分析工具,可以对实验数据进行统计分析、绘图和可视化展示。
可以使用Matlab的数据处理函数来计算均值、标准差、相关系数等统计指标。
此外,Matlab还可以通过绘图函数来绘制直方图、散点图、线图等图形,以便更好地理解和展示数据。
matlab数值计算实验报告
matlab数值计算实验报告Matlab数值计算实验报告引言:Matlab是一种广泛应用于科学与工程领域的高级计算机语言和环境,它提供了丰富的函数库和工具箱,方便用户进行数值计算、数据分析和可视化等任务。
本实验报告将介绍我在使用Matlab进行数值计算实验中的一些经验和心得体会。
一、数值计算方法数值计算方法是一种利用数值近似来解决实际问题的方法,它在科学和工程领域具有广泛的应用。
在Matlab中,我们可以利用内置的函数和工具箱来实现各种数值计算方法,例如插值、数值积分、数值微分等。
二、插值方法插值是一种通过已知数据点来推测未知数据点的方法。
在Matlab中,我们可以使用interp1函数来进行插值计算。
例如,我们可以通过已知的一些离散数据点,利用interp1函数来估计其他位置的数值。
这在信号处理、图像处理等领域具有重要的应用。
三、数值积分数值积分是一种通过分割曲线或曲面来近似计算其面积或体积的方法。
在Matlab中,我们可以使用quad函数来进行数值积分计算。
例如,我们可以通过quad函数来计算某个函数在给定区间上的积分值。
这在概率统计、物理学等领域具有广泛的应用。
四、数值微分数值微分是一种通过数值逼近来计算函数导数的方法。
在Matlab中,我们可以使用diff函数来进行数值微分计算。
例如,我们可以通过diff函数来计算某个函数在给定点上的导数值。
这在优化算法、控制系统等领域具有重要的应用。
五、数值求解数值求解是一种通过数值近似来计算方程或方程组的根的方法。
在Matlab中,我们可以使用fsolve函数来进行数值求解计算。
例如,我们可以通过fsolve函数来求解某个非线性方程的根。
这在工程计算、金融分析等领域具有广泛的应用。
六、实验应用在本次实验中,我使用Matlab进行了一些数值计算的应用实验。
例如,我利用插值方法来估计某个信号在给定位置的数值,利用数值积分方法来计算某个曲线下的面积,利用数值微分方法来计算某个函数在给定点的导数值,以及利用数值求解方法来求解某个方程的根。
计算方法-方程求根实验
实验四 方程求根实验一. 实验目的(1)深入理解方程求根的迭代法的设计思想,学会利用校正技术和松弛技术解决某些实际的非线性方程问题,比较这些方法解题的不同之处。
(2)熟悉Matlab 编程环境,利用Matlab 解决具体的方程求根问题。
二. 实验要求用Matlab 软件实现根的二分搜索、迭代法、Newton 法、快速弦截法和弦截法,并用实例在计算机上计算。
三. 实验内容1. 实验题目(1)早在1225年,古代人曾求解方程020102)(23=-++=x x x x f 并给出了高精度的实根368808107.1*=x ,试用Newton 法和弦截法进行验证,要求精度610-=ε,并绘制方程的图形。
答:A.Newton 法:a .编写文件Newton.m 、func4.m 内容如下所示:b.运行,如下所示A为矩阵,由上面可知,对于初值为5,运行7次即可得到所需的精度,验证结果为古人给出的解释正确的;c.作图,编写下面的文件photo1.m.然后运行即可:注意下面中的x矩阵即为刚才计算出来的x系列,k为迭代的次数:a.编写文件Chord.m内容如下所示:b.运行结果如下所示:由上表可知,在精度为10^-6时有7位有效数字,古人的结果还是正确的c.作图,在上面运行后,即运行newton法时写的photo1.m文件即可出现图像:可以看到图中两条曲线基本重合; (2)取5.00=x ,用迭代法求方程x e x -=的根,然后用Aitken 方法加速,要求精度为结果有4为有效数字。
答:a. 编写文件func7.m 和Aiken.m ,内容如下所示:b .运行:具有四位有效数字 (3)用快速弦截法求解方程01)(=-=x xe x f ,要求精度为610-=ε,取6.05.010==x x ,作为开始值,并绘制1)(-=x xe x f 的图形。
答:对照可知,书本后面的程序已经正确,运行即可:下面为快速弦截法的主程序文件:函数文件如下:运行如下:作图,编写下面的文件:运行该文件就可以y=x*exp(x)-1函数和插值函数的图:可以看到两条直线基本重合在一起了,扩大图片可以看到两条直线是不重合的:2. 设计思想要求针对上述题目,详细分析每种算法的设计思想。
MATLAB数学实验 第四章 函数和方程
2 ( y f ( c , x )) i i i 0 n
• 当f关于c是线性函数,问题转化为一个线性方程组求解。 • 如果f关于c是非线性函数,问题转化为函数极值问题
3387/1943*x^2-7637646031980105/4503599627370496*x+4886217849135065/4503599627370496
• >> vpa(fun,5) ans = 1.7432*x^2-1.6959*x+1.0850
• >> xi=-0.2:0.01:0.3; • >> yi=polyval(p,xi); • >> plot(x,y,‘ro’,xi,yi)%拟合效果作图
c= lsqnonlin (Fun,c0) non-linear least squares problems.
使用迭代法搜索最优参数c. 其中Fun是以参数c(可 以是向量)为自变量的函数,表示误差向量yf(c,x)(x, y为数据),c0为参数c的近似初值(与c同 维向量),具体使请看帮助文件。
c=lsqcurvefit(Fun2,c0, x, y) 从外部输入数据, 这里Fun2为两变量c和x的函数 f(c, x)
的调用格式
x= -3 y= -2.7183
• (3) • >> fun3=inline('100*(v(2)-v(1)^2)^2+(1-v(1))^2','v') fun3 = Inline function: fun3(v) = 100*(v(2)-v(1)^2)^2+(1-v(1))^2 • >> [v,fv]=fminsearch(fun3,[1 1]) v= 1 1 fv = 0
matlab 实验报告
matlab 实验报告Matlab 实验报告引言:Matlab(Matrix Laboratory)是一种强大的科学计算软件,它为科学家、工程师和研究人员提供了一个强大的计算环境。
本实验报告旨在介绍我对Matlab的实验结果和使用体验,以及对其优点和局限性的思考。
一、Matlab的基本功能和特点Matlab是一种高级编程语言和开发环境,它具有广泛的数学和工程计算功能。
通过Matlab,我可以进行矩阵运算、数值计算、数据可视化、算法开发等一系列操作。
Matlab的语法简洁易懂,可以快速实现复杂的计算任务。
此外,Matlab还提供了大量的工具箱,如信号处理、控制系统、图像处理等,使得各种领域的科学研究和工程应用变得更加便捷。
二、实验结果与应用案例在本次实验中,我选择了一个经典的数值计算问题——求解非线性方程。
通过Matlab的数值计算能力,我可以使用不同的迭代方法来求解方程的根。
在实验中,我使用了牛顿迭代法、二分法和割线法来求解方程。
通过对比这些方法的收敛速度和精度,我得出了不同方法的优缺点。
在实际应用中,Matlab可以广泛应用于信号处理、图像处理、数据分析等领域。
例如,在信号处理中,我可以使用Matlab的信号处理工具箱来进行滤波、频谱分析等操作。
在图像处理中,我可以利用Matlab的图像处理工具箱进行图像增强、边缘检测等操作。
这些应用案例充分展示了Matlab在科学计算和工程应用中的重要性和灵活性。
三、Matlab的优点1. 强大的计算功能:Matlab提供了丰富的数学和工程计算函数,可以高效地进行复杂的计算任务。
2. 简洁的语法:Matlab的语法简洁易懂,使得编程变得更加高效和便捷。
3. 丰富的工具箱:Matlab提供了大量的工具箱,覆盖了各种领域的科学计算和工程应用需求。
4. 可视化能力强:Matlab提供了丰富的绘图函数,可以直观地展示数据和计算结果。
四、Matlab的局限性1. 高昂的价格: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 非负时,积分值表示曲顶柱体的体积。
二重积分的计算主要是转换为两次单积分来解决,无论是解析方法还是数值方法,如何实现这种转换,是解决问题的关键。
利用MATLAB求解系统的状态方程
A=[0 1;-2 -3];B=[3;0];C=[1 1];D=0;G=ss(A,B,C,D);
t=0:0.5:10;u=1+exp(-t).*cos(3*t);
[y,t,x]=lsim(G,u,t);plot(t,x,':',t,y,'-')
(4)系统的状态响应及输出响应曲线
-0.2968 0.5219(矩阵指数)
xt1 =
0.8187
-0.8187(状态响应)
(2)系统的状态响应和输出响应曲线:
A=[0 1;-2 -3];B=[3;0];C=[1 1];D=0;G=ss(A,B,C,D);
t=0:0.5:10;u=ones(size(t));
[y,t,x]=lsim(G,u,t);plot(t,x,':',t,y,'-')
通过本次试验,我加深了对状态转移矩阵概念的了解,学会了
[yu,t,xu]=lsim(G,u,t);
figure(2);
plot(t,xu,':',t,yu,'-')
title('零状态响应') %零状态响应曲线
y=y0+yu;x=x0+xu;
figure(3);
plot(t,x,':',t,y,'-')
title('总状态响应/输出响应') %总状态响应和输出响应
A=[0 1;-2 -3];B=[3 0]';C=[1 1];D=0;
G=ss(A,B,C,D);
t=0:0.5:10;x0=[1;2];
实验四用MATLAB求解状态空间模型
实验四 用MATLAB 求解状态空间模型1、实验设备MATLAB 软件2、实验目的① 学习线性定常连续系统的状态空间模型求解、掌握MATLAB 中关于求解该模型的主要函数;② 通过编程、上机调试,进行求解。
3、实验原理说明Matlab 提供了非常丰富的线性定常连续系统的状态空间模型求解(即系统运动轨迹的计算)的功能,主要的函数有:初始状态响应函数initial()、阶跃响应函数step()以及可计算任意输入的系统响应数值计算函数lsim()和符号计算函数sym_lsim()。
数值计算问题可由基本的Matlab 函数完成,符号计算问题则需要用到Matlab 的符号工具箱。
4、实验步骤① 根据所给状态空间模型,依据线性定常连续系统状态方程的解理论,采用MATLAB 编程。
② 在MATLAB 界面下调试程序,并检查是否运行正确。
习题1:试在Matlab 中计算如下系统在[0,5s]的初始状态响应,并求解初始状态响应表达式。
Matlab 程序如下:A=[0 1; -2 -3];B=[]; C=[]; D=[];x0=[1; 2];sys=ss(A,B,C,D);[y,t,x]=initial(sys,x0,0:5);plot(t,x)0011232⎡⎤⎡⎤==⎢⎥⎢⎥--⎣⎦⎣⎦x x x习题2:试在Matlab 中计算如下系统在[0,10s]内周期为3s 的单位方波输入下的状态响应。
并计算该系统的单位阶跃状态响应表达式。
Matlab 程序如下:A=[0 1; -2 -3];B=[0; 1]; C=[]; D=[];x0=[1; 2];sys=ss(A,B,C,D);[u t]=gensig('square',3,10,0.1)0011232⎡⎤⎡⎤==⎢⎥⎢⎥--⎣⎦⎣⎦x x x[y,t,x] = lsim(sys,u,t,x0)plot(t,u,t,x);(注:文档可能无法思考全面,请浏览后下载,供参考。
MATLAB实验报告
班级:通信班姓名:彭羊平学号: 222008315222033实验一:matlab的基本操作一、实验目的:1、了解MATLAB的集成环境,熟悉其基本操作。
2、了解MATLAB的基础知识,包括矩阵的建立、简单操作、逻辑操作和关系运算。
3、熟悉基本的数学函数和逻辑函数。
4、在命令窗口输入命令完成一些简单的功能,为MATLAB程序设计奠定基础。
二、实验内容:1、利用diag等函数产生下列矩阵:然后利用reshape函数将它们变换成行向量。
2、利用rand函数产生(0,1)间均匀分布的10*10随机矩阵A,然后统计A中大于等于0.6的元素的个数。
3、有一矩阵A,找出矩阵中值大于1的元素,并将它们重新排列成列向量B。
4、在一测量矩阵A(6*6),存在有奇异值(假设大于100的值为奇异值),编程实现删去奇异值所在的行。
三、实验结果:1、程序如下:a=fliplr(diag([8,-7,2])+diag([5,3],-1))a=reshape(a,1,9)b=diag([2,5,8])+diag([4],2)+diag([7],-2) b=reshape(b,1,9)结果如下:2、程序如下:A=rand(10)A=A>0.6sum(sum(A))结果如下:3、程序如下:A=fix(5*rand(5))a=A>1;K=find(a);for k=1:length(K)B(k)=A(K(k));endB=B'结果如下:4、程序如下:A=fix(100*rand(8))+5 B=A>100;k=find(any(B'))A(k,:)=0结果如下:班级:通信班姓名:彭羊平学号: 222008315222033实验二: matlab绘图(1)一、实验目的:1、了解MATLAB图形系统和各种图形函数。
2、熟悉MATLAB的基本图形操作,具备MATLAB画图能力。
3、熟悉各种数学函数,并通过图形函数画出。
《Matlab语言》实验四
《Matlab语言》实验四实验四、Matlab的程序设计(一)实验目的1.掌握利用if语句实现选择结构的方法。
2.掌握利用witch语句实现多分支选择结构的方法。
3.掌握利用for 语句实现循环结构的方法。
4.掌握利用while语句实现循环结构的方法。
5.掌握Matlab函数的编写及调试方法。
(二)实验环境1.计算机2.MATLAB7.0集成环境(三)实验内容1、编写一个函数,计算下面函数的值,给出标量某的值,调用该函数后,返回y的值。
functiony=myfun1(某)in某,y(某)某,某6,某00某3某3选择一些数据测试你编写的函数。
function[y]=myfun1(某)if某<=0 y=in(某);eleif某>0&某<=3y=某;eleif某>3y=-某+6;End结果:>>某=5;>>[y]=myfun1(某)y=12、编写一个函数求向量某中元素的平均值、最大值、最小值、均方根值。
function[m_某,ma某_某,min_某,rm_某]=myfun2(某)方均根值(RootMeanSquare)的计算公式为:rm1NNi1某i2用下面数据测试你写的函数:function[m_某,ma某_某,min_某,rm_某]=myfun2(某)%求平均值um_某=um(某);%向量元素求和[m,n]=ize(某);%最好用n=length(某);m_某=um_某/n;%求最大值采用逐个比较方式if某(1)>某(2)ma某_某=某(1);ele ma某_某=某(2);endfork=3:nifma某_某elema某_某=ma某_某;%可省略endend%求最小值if某(1)min_某=某(2);endfork=3:nifmin_某>某(k)min_某=某(k);elemin_某=min_某;%可省略endend%求均方根值um_某2=0;fork=1:num_某2=um_某2+某(k).^2;rm_某=qrt(um_某2/n);endm_某;ma某_某;min_某;rm_某;%按照函数值行(1)某=in(0:0.01:6某pi)运行结果:>>某=in(0:0.01:6某pi);>>[m_某,ma某_某,min_某,rm_某]=myfun2(某)m_某=-1.1256e-007ma某_某=1.0000min_某=-1.0000rm_某=0.7071(2)某=rand(1,200),得到的某为200个(0,1)之间均匀分布的随机数。
用MATLAB解常微分方程
实验四求微分方程的解一、问题背景与实验目的实际应用问题通过数学建模所归纳而得到的方程,绝大多数都是微分方程, 真正能得到代数方程的机会很少.另一方面,能够求解的微分方程也是十分有限 的,特别是高阶方程和偏微分方程(组).这就要求我们必须研究微分方程(组) 的解法,既要研究微分方程(组)的解析解法(精确解),更要研究微分方程(组) 的数值解法(近似解).对微分方程(组)的解析解法(精确解),Matlab 有专门的函数可以用,本实 验将作一定的介绍.本实验将主要研究微分方程(组)的数值解法(近似解),重点介绍Euler 折线 法.二、相关函数(命令)及简介1. dsolve ('equ1','equ2';…):Matlab 求微分方程的解析解.equ1、equ2、… 为方程(或条件).写方程(或条件)时用 Dy 表示y 关于自变量的一阶导数, 用用D2y 表示y 关于自变量的二阶导数,依此类推.2. simplify (s ):对表达式s 使用maple 的化简规则进行化简.例如:syms xsim pl ify (si n (x )A2 + cos (x )^2) an s=13. [r,how]=simple (s ):由于 Matlab 提供了多种化简规则,simpie 命令就是 对表达式s 用各种规则进行化简,然后用r 返回最简形式,how 返回形成这种 形式所用的规则.例如:syms x[r,how]=sim ple (cos (x )A2-si n (x )A2) r = cos (2*x ) how = comb ine4. [T,Y] = solver ( odefun,tspan,y ))求微分方程的数值解.说明:(1)其中的 solver 为命令 ode45、ode23、ode113 ode15s ode23s 、ode23t 、 ode23tb 之一.⑶ 在积分区间tspan=[t 0,t f ]上,从t o 到t f ,用初始条件y 求解.⑵odefu n 是显式常微分方程:詈 f(t ,y)y(t 0) y o⑷ 要获得问题在其他指定时间点t0,t1,t2,上的解,则令tspan=[tott, ,t f ](要求是单调的).(5)因为没有一种算法可以有效地解决所有的ODE问题,为此,Matlab提供了多种求解器Solver,对于不同的ODE问题,采用不同的Solver.⑹要特别的是:ode23、ode45是极其常用的用来求解非刚性的标准形式的一阶常微分方程(组)的初值问题的解的Matlab的常用程序,其中:ode23采用龙格-库塔2阶算法,用3阶公式作误差估计来调节步长,具有低等的精度.ode45则采用龙格-库塔4阶算法,用5阶公式作误差估计来调节步长,有中等的精度.5. ezplot(x,y,[tmin,tmax]):符号函数的作图命令.x,y为关于参数t 号函数,[tmin,tmax]为t的取值范围.6.iniine():建立一个内联函数.格式:inline('expr', 'var1', 'var2',…),括号里的表达式要加引号.例:Q = dblquad(inline('y*sin(x)'), pi, 2*pi, 0, pi)的符注意x三、实验内容1.几个可以直接用Matlab 求微分方程精确解的例子:例1:求解微分方程dy2xy xe dx求解本问题的Matlab 程序为:syms x yy=dsolve('Dy+2*x*y=x*ex p(-xA2)','x') diff(y,x)+2*x*y-x*ex 卩(帜八2)sim plify(diff(y,x)+2*x*y-x*ex 卩(帜八2))说明:(1)行Iine1是用命令定义x,y 为符号变量.这里可以不写,但为确保正确性, 建议写上;⑵ 行Iine2是用命令求出的微分方程的解:1/2*ex p(-xA2)*xA2+ex p(-xA2)*C1(3)行Iine3使用所求得的解.这里是将解代入原微分方程,结果应该为0, 但这里给出:-x^3*ex p(-xA2)-2*x*ex p(-xA2)*C1+2*x*(1/2*ex p(-xA2)*xA2+ex p(-xA2)*C1)确是微分方程的解.e x 0在初始条件y(1) 2e 下的特解,并画出解函 数的图形.求解本问题的Matlab 程序为:syms x yy=dsolve('x*Dy+y-ex p(x)=0','y(1)=2*ex p(1)', 'x')ezpl ot(y)e e x微分方程的特解为:y=1/x*exp(x)+1/x* exp (1) (Matlab 格式),即卩 y --------- 解函数的图形如图1:2 x,并加以验证.%li ne1 %li ne2 %li ne3 %li ne4⑷行 Iine4 用 simplify()函数对上式进行化简,结果为0,表明y y(x)的例2:求微分方程xy' y并画出解函数的图形.求解本问题的Matlab 程序为:syms x y t[x,y]=dsolve('Dx+5*x+y=ex p(t)','Dy-x-3*y=0','x(0)=1','y(0)=0','t') sim ple(x); sim ple(y);ezpl ot(x,y,[0,1.3]);axis auto微分方程的特解(式子特别长)以及解函数的图形均略.2. 用ode23 ode45等求解非刚性的标准形式的一阶常微分方程(组)的初值问 题的数值解(近似解)•例4:求解微分方程初值问题dy22y(0) 1间[0, 0.5].fun=i niin eC-2*y+2*x^2+2*x','x','y'); [x,y]=ode23(fu n, [0,0.5],1); x'; y';plot(x,y,'o-') >> x' ans =0.0000 0.0400 0.0900 0.1400 0.2900 0.34000.39000.4400>> y'-30dx例3:求微分方程组dtdy5xx 3ye t在初始条件x|t 0 1,yl t 0 0下的特解,2x 2x的数值解,求解范围为区0.1900 0.2400 0.49000.50001/x exp(x)+1/x exp(1)5040302010-10-20-6-4-2246x0.9247 0.8434 0.7754 0.7199 0.6764 0.62220.61050.6084 0.6154 0.61792.ans =1.0000 0.6440图形结果为图0.6例5:求解描述振荡器的经典的Ver der Pol 微分方程分析:令 d 2y dt 2y 0,y(0) 1, y'(0) 0, 7.X 1 y ,x 2dx 1 则 dx 1 dt , dtdx 2 X 2,~dr2(1 X 1 )X 2 X 1.先编写函数文件verderpol.m : fun ctio nxp rime = verder pol(t,x) global mu; xp rime = [x(2) ;mu*(1-x(1)^2)*x (2) -x(1)]; 再编写命令文件vdp 1.m : global mu; mu = 7; y0=[1;0][t,x] = ode45('verderpol',[0,40],y0); x1=x(:,1);x2=x(:,2); plot(t,x1)图形结果为图3.0.950.90.850.80.750.70.650.150.20.250.30.350.40.450.50.053. 用Euler 折线法求解前面讲到过,能够求解的微分方程也是十分有限的.下面介绍用Euler 折线 法求微分方程的数值解(近似解)的方法.Euler 折线法求解的基本思想是将微分方程初值问题dx S y(x 0) y 。
Matlab数学实验报告
实验一 Matlab基本操作1.实验课程名称数学实验2.实验项目名称Matlab基本操作3.实验目的和要求了解Matlab的基本知识,熟悉其上机环境,掌握利用Matlab进行基本运算的方法。
4.实验内容和原理内容:三角形的面积的海伦公式为:area=)s-sa--)()(s(csb其中: s=(a+b+c)/2原理:将一般数学问题转化成对应的计算机模型并进行处理的能力。
了解Matlab的基本功能,会进行简单的操作。
5.主要仪器设备计算机与Windows 2000/XP系统;Matlab等软件。
6.操作方法与实验步骤步骤:(1)在M文件编辑窗口输入以下程序,并以文件名”area_helen.m”保存:a= input(‘a=‘) ; b= input(‘b=‘) ; c= input(‘c=‘) ;s= (a+b+c)/2;area=sqrt (s* (s-a) * (s-b) * (s-c))(2)在命令窗口输入文件名“area_helen”,按回车键,即可运行上面的程序,输入三边长,立即可得三角形面积(3)第二题在命令窗口输入b=6;a=3;c=a*b,d=c-2*b(4) 按回车键,即可运行上面的程序7.实验结果与分析<1> a=3; b=4; c=5;时,aera=6 当a为3,b为4,c为5时,s=6,aera=6<2> c= 18,d=6,a为3,b为6时,c=18,d=6实验二 Matlab的数值计算1.实验课程名称数学实验2.实验项目名称Matlab的数值计算3.实验目的和要求了解一些简单的矩阵、向量、数组和多项式的构造和运算方法实例,懂得编写简单的数值计算的Matlab程序。
熟悉一些Matlab的简单程序,会用Matlab的工具箱,懂得Matlab的安装和简单的使用。
4.实验内容和原理内容:从函数表:)1(),5.0(),2( ,0x 1x 021x 1x f(x) 32-⎪⎩⎪⎨⎧≤≤<>+=f f f x x求设)1(),2( ,1211)(2-⎩⎨⎧≤>+=f f x xx x x f 求设 原理:利用矩阵、向量、数组、和多项式的构造和运算方法,用常用的几种函数进行一般的数值问题求解。
Matlab实验指导书(1-10完整)
1.初次接触 Matlab 应该注意函数表达式的文本式描述。 2.在使用图形函数计算器 funtool 时,注意观察 1 号和 2 号窗口中函数的图形。
四、实验报告要求
1.针对图形函数计算器 funtool,对每一类型计算记录其中一个图形的曲线。 2.书写实验报告时要结构合理,层次分明,在分析描述的时候,需要注意语言的
⎪⎪⎨⎪−x12+x11+4
x2 x2
− 7x3 − 7x3
−15x4 + 12 x4
− 6x5 = 294 − x5 = −441
⎪⎩6x1 +11x2 +11x3 − 9x4 −13x5 = 103
3.用网孔电流法求如下电路的各支路电流。
Ia
Ib
Id
Ic
60Ω
20Ω
40Ω
40Ω
50V
10V
40V
流畅。
《Matlab 语言及其在电子信息科学中的应用》实验指导书
许钢 编
3
实验二:M 文件和 Mat 文件操作
一、实验目的
1.定制自己的工作环境。 2.编写简单的 M 文件。 3.保存内存工作区中的变量到.mat 文件。 4.学会只用 Matlab 帮助。
二、实验内容
1.使用 format 命令和 File|Peferences 菜单定制自己的工作环境。 2.编写如下 M 文件,试调整参数 a 的大小,观察并记录 y1、y2 的波形特征。
《Matlab 语言及其在电子信息科学中的应用》实验指导书
许钢 编
4.用结点电压法求如下电路的结点电压 un1、un2。
① + u2 - ②
2kΩ
10A
专题实验四 方程近似解的求法
(1)二分法
将有根区间进行对分,判断出解在某个分段内,然后 再对该段对分,依次类推,直到满足给定的精度为止
数学原理:介值定理
设 f(x) 在 [a, b] 上连续,且 f(a) f(b)<0,则由介值定
(4)、fsolve(fun,x0) %求非线性方程fun=0在 估计值x0附近的近似解 解:>>fsolve('x-exp(-x)',0) 结果: 0.56714316503697 (5)、fzero(fun,x0) %求函数fun在x0附近的根 例:求方程x-10x+2=0在x0=0.5附近的根 解:>>y=@(x)x-10^x+2; >>fplot(y,[-1,1]) %注意不能用plot >>fzero(y,0.5) 结果:0.3758
使误差不超过10-3
二、方程求解
(1)、roots(p) %求多项式的根,期中p是多项式向量 例:求x3-x2+x-1=0的根 解:>>p=[1 -1,1,-1]; >>roots(p) (2)、solve(fun) %求方程fun=0的符号解,如果不能求得精 确的符号解,可以计算可变精度的数值解。 例:用solve命令求方程x9+x8+1=0的根 解:>>solve('x^9+x^8+1') 给出了方程的数值解(32位有效数字的符号量)
f (x) = 0 f (x) 的零点
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
例 4 求函数 f=3x2+4x+5 对变量 x 的一阶导数.
温州大学城市学院 (3) 积分 格式: int (f, t, a, b) 功能: 求函数 f 对变量 t 从 a 到 b 的定积分. 例 4 求函数 f=ax2+bx+c 对变量 x 的不定积分. >> syms a b c x >> f=a*x^2+b*x+c >> int(f) 求函数 f 对变量 x 从 1 到 5 的定积分, 命令为 >> int(f,1,5)
温州大学城市学院 四. 解方程 (1) 代数方程 格式: solve(f, t) 功能: 对变量 t 解方程 f=0. 例 6 求解一元二次方程 f=4x2+5x-6 的实根. >> syms x >> f=4*x^2+5*x-6 >> solve(f,x)
温州大学城市学院 四. 解方程 (2) 微分方程 格式: dsolve(‘s’,‘s1’,’s2’,…,’x’) 其中 s 为方程; s1, s2, … 为初始条件. 缺省时给出含任意常数 c1, c2, …… 的通解; x 为自变量, 缺省时默认为 t .
[x,fv,ef,out,jac]=fsolve(@fangchz,x0,[],1,4,-1,1);
温州大学城市学院 2. roots 的基本用法 r=roots(c) 输入多项式的系数 c (按降幂排列); 输出 r 为 f(x)=0 的全部根(包括复根). c=poly(r) 输入 f(x)=0 的全部根 r ; 输出 c 为多项式的系数(按降幂排列).
d2 y dy + 4 + 12 y = 0 2 例 9 求微分方程 dx 的通解. dx y ( 0 ) = 0, y′ ( 0 ) = 5
>> y=dsolve(‘D2y+4*Dy+12*y=0’,’y(0)=0,Dy(0)=5’,’x’)
温州大学城市学院 (3) 求近似解 1. fzero 的基本用法 fzero 命令用于求单变量方程的根. 至少需要两个输入参数: 函数, 迭代初值(或有根区间 或有根区间). 例 10 求方程 x3-2x-5=0 的解. Matlab 编程代码: fzero (inline(‘x^3-2*x-5’),0) 或 fzero (inline(‘x^3-2*x-5’),[1,3])
温州大学城市学院 三. 化简和代换 simplify expand factor collect 利用各种恒等式化简代数式 将乘积展开为和式 把多项式转换为乘积形式 合并同类项
例 5 对多项式 3x3-0.5x3+3x2 合并同类项. >> collect(3*x^3-0.5*x^3+3*x^2) 对多项式 3x3-0.5x3+3x2 进行因式分解. >> factor(3*x^3-0.5*x^3+3*x^2)
10 x
( 25 + x )
2
5 2
−
( 36 + ( 20 − x ) )
2
18 ( 20 − x )
5 2
y=10*x/(25+x^2)^(5/2)-18*(20-x)/(36+(20-x)^2)^(5/2); 以 x=0,10,20 为初值, 用 fzero 命令解方程组. 编写程序: x0=[0,10,20]; for k=1:3 x(k)=fzero(@fun,x0(k)); c(k)=10*x/(25+x^2)^(5/2)-18*(20-x)/(36+(20-x)^2)^(5/2); end [x; c]
温州大学城市学院
实验四 用Matlab求解方程
一. 符号变量与符号表达式 格式1: sym(‘变量名’) 或 sym(‘表达式’) 功能: 定义一个符号变量或符号表达式. 例1 >> sym (‘x’) >> sym (‘x+1’) % 定义变量 x 为符号变量 % 定义表达式 x+1 为符号表达式
2t 例 3 求极限 lim 1 + x →∞ x
>> syms x t
3x
>> limit((1+2*t/x)^(3*x),x,inf)
温州大学城市学院 (2) 导数 格式: diff (f, t, n) >> syms x >> f=3*x^2+4*x+5 >> diff(f) 求函数 f 对变量 b 的一阶导数, 命令为: >> diff(f, b) 求函数 f 对变量 x 的二阶导数, 命令为: >> diff(f, 2) 功能: 求函数 f 对变量 t 的 n 阶导数.
均可以得到实根 2.0946.
温州大学城市学院 1. fzero 的基本用法 [x, fv, ef, out, jac]=fsolve(@F, x0, opt, P1, P2,…)
2 2 x1 + x2 = 4 例 11 求方程组 2 的解. 2 x1 − x2 = 1
Matlab 编程代码: 先建立文件 fangchz.m function y=fangchz(x,a,b,c,d) y(1)=x(1)^2+a*x(2)^2-b; %当a=1,b=4时为第1个方程 y(2)= x(1)^2+c*x(2)^2-d; %当c=-1,d=1时为第2个方程 输入程序: x0=[2,2];
温州大学城市学院
实验四 用Matlab求解方程
一. 符号变量与符号表达式 格式2: syms 变量名1 变量名2 …… 变量名n 功能: 定义变量名 定义变量名1, 变量名2, ……, 变量名n 为符号变量. 例2 >> syms a b x t % 定义 a, b, x, t 均为符号变量
温州大学城市学院 二. 微积分的运算 (1) 极限 格式: limit(f, t, a, ‘left’ or ‘right’) 功能: 求符号变量 t 趋于 a 时, 函数 f 的 (左或右) 极限. ‘left’ 表示求左极限 表示求左极限, ‘right’ 表示求右极限 表示求右极限, 省略时表示求一般极限.
du = 1 + u − t பைடு நூலகம்通解. 例 8 求微分方程 dt
>> dsolve(‘Du=1+u-t’,’t’)
温州大学城市学院 四. 解方程 (2) 微分方程 格式: dsolve(‘s’,‘s1’,’s2’,…,’x’) 其中 s 为方程; s1, s2, … 为初始条件. x 为自变量, 缺省时默认为 t .
3 2 p 1 = x + 21 x + 20 x 例 12 计算多项式
的根以及由多项式的根得出系数. >> p1=[1 21 20 0]; >> roots(p1) >> poly([0;-20;-1]) % 计算多项式的根 % 计算多项式的系数
温州大学城市学院 例 13 求下列方程的根 f = function y=fun(x)