Matlab工程应用基础 3 3
实验3 MATLAB程序设计
实验3 MATLAB程序设计实验3 MATLAB程序设计一、实验目的本实验的主要目的是通过实际的编程练习,掌握和熟悉MATLAB 程序设计的基本知识和技巧。
通过本实验的学习,能够灵活使用MATLAB进行程序设计,解决实际问题。
二、实验内容1. MATLAB语言基础在本部分,我们将介绍MATLAB语言的基本语法和常用函数的使用方法。
1.1. 变量定义和赋值在MATLAB中,可以通过简单的语法来定义和赋值变量。
例如,`a = 10;`表示将值10赋给变量a。
,MATLAB也支持定义矩阵和向量。
1.2. 数学运算MATLAB提供了丰富的数学运算函数,如加法、减法、乘法、除法等等。
通过这些函数,我们能够进行各种数学运算。
1.3. 条件语句和循环语句条件语句和循环语句在程序设计中非常重要。
在MATLAB中,我们可以使用if-else语句来进行条件判断,使用for循环和while 循环来实现循环操作。
2. MATLAB绘图功能MATLAB的绘图功能非常强大,可以用于绘制各种图形,如曲线图、散点图、柱状图等等。
2.1. 绘制曲线图在MATLAB中,通过`plot`函数可以绘制曲线图。
我们可以指定要绘制的曲线的x和y坐标,并可以设置其他参数,如线型、颜色等。
2.2. 绘制散点图通过`scatter`函数可以绘制散点图。
散点图用于展示数据的分布情况,非常直观。
2.3. 绘制柱状图通过`bar`函数可以绘制柱状图。
柱状图用于比较不同类别或不间点的数据。
3. MATLAB文件操作在实际的程序设计过程中,常常需要读取和写入文件。
MATLAB 提供了相关的文件操作函数,方便我们进行文件的读写操作。
3.1. 文件的读取通过`fopen`函数可以打开一个文件,通过`fread`函数可以读取文件的内容。
3.2. 文件的写入通过`fopen`函数可以创建一个文件,并通过`fwrite`函数将数据写入文件中。
三、实验步骤1. 编写MATLAB程序根据实验内容,编写MATLAB程序实现相应功能。
3-第1章-MATLAB基础-M文件(3)
有调用关系的函数在同一文件
调用函数应放在被调用函数上方。 被调用函数次序无限制。范例func4.m
function out=func4(x) Recip=func3(x) ; out=sum(recip); %定义子函数 function output=func3(input) Output=1./input >>func4([1,2,3]) ans= 1.8333
第2行为函数的实现 规范函数的运算过程,并指定输出变量的值。
调用函数
调用函数funcavg1,可输入 >>vec=[1 2 3]; >>ave=funcavg1(vec) ave= 2
函数的输入和输出
一个函数可以有多个输入和输出 funcavg2.m可接受两个输入并产生两个输出。
function [avg1,avg2]=funcavg2(vec1,vec2); avg1=sum(vec1)/length(vec1); avg2=sum(vec2)/length(vec2);
funcavg2.m的调用 >>[a,b]=funcavg2([1,2,3],[4,5,6]) a= 2 b= 6
•说明:nargin和nargout是库函数,可以检查任何函数M文件 的输入和输出参数个数。 >>nargin(‘funcavg2’); ans= 2
范例
>>[a,b]=funcavg3([1,2,3],[4,5,6,7]) a= 2 b= 6 >>c=funcavg3([1 3 5 7 9]) c= 5
MATLAB 程序设计-M文件 鲁 坚
jianlu@ 深圳大学 数学与计算科学学院
matlab程序设计与应用第3版pdf版
matlab程序设计与应用第3版pdf版引言概述:《MATLAB程序设计与应用第3版》是一本经典的MATLAB编程教材,它提供了广泛的知识和技巧,帮助读者掌握MATLAB的应用。
本文将从五个大点出发,详细阐述该书的内容,包括基础知识、数据处理、图形绘制、符号计算和应用实例。
正文内容:1. 基础知识1.1 MATLAB环境介绍:介绍MATLAB的工作环境和基本操作,包括命令窗口、编辑器、变量和函数的定义等。
1.2 数据类型和运算:详细介绍MATLAB中的数据类型,如标量、向量、矩阵和结构体等,以及常用的运算符和函数。
1.3 控制流程:讲解MATLAB中的条件语句、循环语句和函数的定义与调用,帮助读者掌握程序的流程控制。
1.4 文件与数据的输入输出:介绍如何读写文件和处理各种数据格式,如文本文件、Excel文件和图像文件等。
1.5 调试与性能优化:提供调试MATLAB程序的技巧和方法,并介绍如何优化程序的性能,提高代码的运行效率。
2. 数据处理2.1 数据导入与清洗:介绍如何导入外部数据,并对数据进行清洗和预处理,包括数据类型转换、缺失值处理和异常值检测等。
2.2 数据可视化:讲解如何使用MATLAB的绘图函数绘制各种类型的图表,如折线图、散点图、柱状图和饼图等,以及如何添加标签和注释。
2.3 数据分析与统计:介绍常用的数据分析和统计方法,如描述统计、假设检验、回归分析和聚类分析等,以及MATLAB中相应的函数和工具箱的使用。
2.4 信号处理:介绍信号处理的基本概念和方法,包括时域分析、频域分析和滤波器设计等,以及MATLAB中相关的函数和工具箱。
2.5 机器学习与数据挖掘:简要介绍机器学习和数据挖掘的基本原理和方法,并介绍MATLAB中的机器学习工具箱和数据挖掘工具箱的使用。
3. 图形绘制3.1 2D图形绘制:详细介绍绘制2D图形的方法和技巧,包括曲线绘制、图形样式设置和图形的保存等。
3.2 3D图形绘制:讲解如何绘制3D图形,包括曲面图、散点图和体积图等,以及如何设置视角和光照效果。
Matlab基础(3)连续系统
Matlab3MATLAB3.1xy)(xPiyF jyFiMjM3.1.1LL TdxxP])[(NF(1)F)(xP][N——————14}{RMFMFjjyiiyF41][RNiyF jyFiMjMx y3.1.2LdxEIMU22122xuEIM(2)(3)x iyF jyFiMjMx ydxu x PWL 0)(L dxxu EIU22221323.1.33.1.4(4)(5)WU V L dxPu x u EI V22221456(6)(7))}()]{([),(t x N t xu u][Nuxt][N xu}{}{(8)14RM F M F Fjjy iiy 14R u ujjiiyjjiiu u iyF jyF iM jM xyL TT dx N P xNx N EI V2222}]{[}{}{21}{][xN xu tN tu }{][TT TN u][}{}]{[][}{2N N u TT 0}{V87(9)9(10)910(11)dxN P dx xNx N EIL T LT2222][}{dxN P dx xNx N EIL T LT2222][}{3.1.5(12)12442222][R dx x N x N EILTK }]{[}{X KF (13)14][}{R M F M F dx N P jjy i iy L TF 14][R u u X jjiiLEI L EI LEI L EI L EI L EI L EI L EI L EI L EI L EI L EI L EI L EI L EI L EI dx x N x N EIL T46266126122646612612][22232322232302222K ][K (14)]232231[23233222323322Lx L x L x L xL x L x xL x L xNjjiijjy i iy u u LEI L EI LEI L EI L EI L EI L EI L EI L EI L EI L EI L EI L EI L EI L EI L EI M F M F 46266126122646612612222323222323}]{[}{X KF jjy i iy M F M F }{Fjjy i iy jjiiM F M F LEI L EI L EI L EI L EI L EI L EI L EI L EI L EI L EI L EI L EI L EI L EI L EI u u 12223232223234626612612264661261215(16)3.2 Matlab4402222][RdxxNxNEILTKclearx=sym( ‘x’); L=sym( ‘L’);N=[ 1 –3 * (x^2) / (L^2) + 2 * (x^3) / (L^3), x –2 * (x^2) / L + (x^3) / (L^2),….3 * (x^2) / (L^2) –2 * (x^3) / (L^3), -(x^2) / L + (x^3) / (L^2) ];Ni=diff( N, 2 );Nt=transpose( Ni);kk=Nt* Ni;K=E * I * int(kk, 0, ‘L’);]232231[23233222323322LxLxLxLxLxLxxLxLxNMatlabsymx=sym(‘y’)xy:symsx y zxyz1x=sym(‘y’)x=y2x=sym(‘y+z’)x=y+z3y=sym(‘a*x^2+b*x+c’)y= a*x^2+b*x+csubsx=subs(y,’old’,’new’)y“old”“new”1x=sym(‘y’)z=subs(x, ‘y’, 2)z=22x=sym(‘y+z’); zz=subs(x, ‘[ y, z ]’, [ 2, 3 ] )zz=5x4zsubs(z, ‘x’, 4)273y=sym(‘a*x^2+b*x+c’)z=subs(y, ‘[ a, b, c ]’, [1, 2, 3 ] )z=x^2+2*x+3subs1z=subs(x, y, 2)z=subs(‘x’, y, 2)z=subs(‘x’, ‘y’, 2)•diff ( N, ‘x’, n )Nxn diff( N, n )MatlabxnnxN(‘x’);,2)first_order=2*x+2 second_order=212)(2xxxfxxf)(22)(xxf52),(223xy y x yx y xf yy xf ),(22),(xy xf (‘x ’); y=fxy=(x^3)*(y^2)+2*(x^2)*y+x*y+5;,2)second_order_x=first_order_y=2*(x^3)*y+2*(x^2)+x•int (N, ‘x ’, L1, L2);int (N, ‘x ’, L1, L2)NL1L2diff ( N, L1, L2 )Matlabx21L L Ndx3131103102x dx x (‘x ’);result=1/3numericresultnumeric(result = numeric (result)result=0.3333y y y x y x dxxy yx 2131)2131()(3102331032(‘x ’); y=result=1/3*y^3+1/2*yresult y 6result = subs (result, ‘y ’, 6)result=753.3——5cmYFYL=10 m; b=h=5 e-2 m; E=3e10 N/m 2; F Y =100 Nbh10 m100 N3.3.11.2.mbhI73223102.512)105)(105(12232F3=100 NM3=0F2=0M2=0121F1=0M1=0F2=0M2=01210 m100 N3.11i=1j=2L=5 m E=3e11 N/m2I=5.2e-7 m4124800374406240037440374401497637440149766240037440124800374403744014976374401497646266126122646612612][2223232223231LEILEILEILEILEILEILEILEILEILEILEILEILEILEILEILEIK121F1=0M1=0F2=0M2=04.11000}{2211M F M F F 121F 1=0M 1=0F 2=0M 2=015.1}]{[}{XKF122211221111248003744062400374403744014976374401497662400374401248003744037440149763744014976][0000u u u u K6.22i=2j=3L=5 m E=3e11 N/m2I=5.2e-7 m41][124800374406240037440374401497637440149766240037440124800374403744014976374401497646266126122646612612][12223232223232KKLEILEILEILEILEILEILEILEILEILEILEILEILEILEILEILEI232F3=100 NM3=0F2=0M2=07.2210000}{3322M F M F F 232F 3=100 NM 3=0F 2=0M2=028.2}]{[}{XKF233322332221248003744062400374403744014976374401497662400374401248003744037440149763744014976][010000u u u u K9.1233221112480037440624003744037440149763744014976624003744012480012480037440374406240037440374401497637440374401497614976374401497662400374401248003744037440149763744014976100uuu3322332221248003744062400374403744014976374401497662400374401248003744037440149763744014976][100uuuuK2211221111248003744062400374403744014976374401497662400374401248003744037440149763744014976][uuuuK332211124800374406240037440003744014976374401497600624003744012480012480037440374406240037440374401497637440374401497614976374401497600624003744012480037440003744014976374401497601000000u uu 0100000012480037440624003744000374401497637440149760062400374401248001248000624003744037440149760149761497637440149760062400374401248003744000374401497637440149761332211u uu,011u 1100001248003744062400374403744014976374401497662400374402496000374401497602995213322u u 01000000124800374406240037440374401497637440149760062400374401248001248000624003744037440149760149761497637440149760062400374401248003744000374401497637440149761332211u u u 10.100 N11.5128215050320512820.0752142482136752136.03846160840240384615.07350445370667735042.03322u u3.3.2 Matlab1.K1L151022221][L Tdx xN x N EIK2.2K1L152022222][L Tdx xN xN EIK3.m_chap2_ex1.m4X42.512820320512820.0752142136752136.0384610240384615.0735040667735042.03322uu m_chap3_ex13.4——w=1000 N/m; L 1=L 2=5 m; b=h=5 cm; E=3e11 N/m 2; I=5.2e-7 m 4bhxyw=1000 N/mL=10 mL 1=5 mL 2=5 mw=1000 N/m L 1=5 m12L 2=5 m23w=1000 N/m1.3.4.1122.11i=1j=2L1=5 m E=3e11 N/m2I=5.2e-7 m4124800374406240037440374401497637440149766240037440124800374403744014976374401497646266126122646612612][12112121312131121121213121311LEILEILEILEILEILEILEILEILEILEILEILEILEILEILEILEIKw=1000 N/mL1=5 m123.w=1000 N/mw=1000 N/mL 1=5 m1212F 1= -750 NF 2= -1750 NM1= -2500/3 N mM2=1250 N m1250175032500750)(}{1012211L Tdx x P M F M F N F ]232231[2131231321221312313212L x L xL x L x Lx L xxL x Lx NxxL wxP 200)(114.12211221111248003744062400374403744014976374401497662400374401248003744037440149763744014976][1250175032500750u u u u K 12F 1= -750 NF 2= -1750 NM 1= -2500/3 N mM 2=1250 N mw=1000 N/mL 1=5 m12}]{[}{X K F 125.22i=2j=3L2=5 m E=3e11 N/m2I=5.2e-7 m4][124800374406240037440374401497637440149766240037440124800374403744014976374401497646266126122646612612][122222222322232222222223222322KKLEILEILEILEILEILEILEILEILEILEILEILEILEILEILEILEIL2=5 m23w=1000 N/m6.2w=1000 N/m23F 2= -1750 NF 3= -750 NM 1= -7500 N mM 2=2500/3 N m3250075012501750)(}{2023322L Tdxx P M F M F N F ]232231[2232232322222322323222L xL x Lx L x L x L x xL x LxN)(200)()(2222x L xL L wxP L 2=5 m23w=1000 N/m7.28.332211124800374406240037440374401497637440149766240037440124800124800374403744062400374403744014976374403744014976149763744014976624003744012480037440374401497637440149763250075012501250)1750(175032500750uuu3322332221248003744062400374403744014976374401497662400374401248003744037440149763744014976][3250075012501750uuuuK2211221111248003744062400374403744014976374401497662400374401248003744037440149763744014976][1250175032500750uuuuK3322111248003744062400374400374401497637440149760062400374401248001248003744037440624003744037440149763744037440149761497637440149760062400374401248003744000374401497637440149763250075012501250)1750(175032500750u uu 3322111248003744062400374403744014976374401497600624003744024960006240037440374401497602995237440149760062400374401248003744000374401497637440149763250075012501250)1750(175032500750u uu9.3250035003250012480062400374406240024960062400374402995237440624003744012480013221u33221112480037440624003744037440149763744014976624003744024960062400374403744014976299523744014976624003744012480037440374401497637440149763250075012501250)1750(175032500750uuuxy w=1000 N/mL=10 mL1=5 m L2=5 m10.166928.00534176.0166928.03221u3.4.2 Matlab1.1K1L151022221][L Tdx xN x N EIK2.2K1L252022222][L Tdx xN x N EIK( P * transpose ( N ), x, 0, ‘1250175032500750)(}{1012211L T dxx P M F M F N F xx L wx P 200)(11w=1000 N/m); L2=sym ( ‘L2’);(P * transpose ( N ), x, 0, ‘L23250075012501750)(}{2023322L T dxx P M F M F N F )(200)()(2222x L x L L wx P。
第三章 matlab程序设计基础
3. 程序控制流 3.多分支if语句
• 多分支if语句格式为:
if 条件1 语句组1 elseif 条件2 语句组2 …… elseif 条件m 语句组m else 语句组m+1
end
3. 程序控制流
• 例 输入一个字符,若为大写字母,则输出其后继字符,若为 小写字母,则输出其前导字符,若为数字字符则输出其对应 的数值,若为其他字符则原样输出。 – 程序如下:
c=input('请输入一个字符','s'); if c>='A' & c<='Z' disp(setstr(abs(c)+1)); elseif c>='a'& c<='z' disp(setstr(abs(c)-1)); elseif c>='0'& c<='9' disp(abs(c)-abs('0')); else disp(c); end
分类:脚本文件(Script File)和函数文件(Function File)。 主要区别。
1. M文件 脚本文件
没有输入和输出 由一系列指令组成 可在命令窗口直接运行 产生的所有变量存储在workspace中。 例 test.m。
1. M文件 例 脚本M文件实例
脚本M文件实例,查找10 ~100所有素数。
1. M文件
• 函数文件examp.m: function fout=charray(a,b,c) %举例说明函数文件名与函数名不同 if nargin==1 fout=a; elseif nargin==2 fout=a+b; elseif nargin==3 fout=(a*b*c)/2; end • 命令窗口: x=[1:3];y=[1;2;3]; examp(x) examp(x,y') examp(x,y,3)
MATLAB第三章
第三章微积分问题的计算机求解一、实验内容:题目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.求出下面函数的导数。
第三章MATLAB有限元分析与应用
第三章MATLAB有限元分析与应用有限元分析(Finite Element Analysis, FEA)是一种工程计算方法,用于解决结构力学和流体力学等问题。
它将一个复杂的结构分割成多个简单的离散单元,通过建立数学模型和求解方程组,得到结构的力学、热力学和流体力学等性能参数。
MATLAB是一种功能强大的数学计算软件,具有直观的用户界面和丰富的工具箱,可以方便地进行有限元分析。
本章将介绍在MATLAB中进行有限元分析的基本步骤和方法,以及一些常见的应用例子。
首先,进行有限元分析需要将结构进行离散化。
常用的离散化方法有节点法和单元法。
节点法是将结构的几何形状划分为小的节点,并在节点上进行计算。
单元法是将结构划分为多个小的单元,并在每个单元内进行计算。
在MATLAB中,可以通过创建节点和单元的矩阵来描述结构和单元的关系。
例如,创建一个2D结构形式的节点矩阵:nodes = [0 0; 1 0; 0 1; 1 1];然后,通过创建描述节点连接关系的矩阵,来定义结构的单元:elements = [1 2 3; 2 4 3];这里的每一行代表一个单元,数字表示节点的编号。
接下来,需要定义材料的力学参数和边界条件。
材料的力学参数包括弹性模量、泊松比等。
边界条件包括支座约束和加载条件。
在MATLAB中,可以通过定义力学参数和边界条件的向量来描述。
例如,定义弹性模量和泊松比的向量:E=[200e9200e9];%弹性模量nu = [0.3 0.3]; % 泊松比定义支座约束的向量(1表示固定,0表示自由):constraints = [1 1; 0 0; 0 1; 0 1];定义加载条件的向量(包括点力和面力):最后,通过求解方程组得到结构的应力和位移等结果。
在MATLAB中,可以利用有限元分析工具箱中的函数进行计算。
例如,可以使用“assem”函数将节点和单元的信息组装成方程组,并使用“solveq”函数求解方程组。
程序设计训练II——Matlab语言及其应用(3)
字符串表达式:’Hello!’ 字符串赋值语句:s=’Hello!’
字符串变量s是数组变量,有5个元素
1行 5列
字符串处理函数
构造多维数组
cat函数 格式:cat(n,A1,A2,A3)
cat(1,A1,A2,A3)=[A1;A2;A3] cat(2,A1,A2,A3)=[A1,A2,A3] cat(3,A1,A2,A3)的结果是扩张为3维数组 ans(:,:,1)=A1 ans(:,:,2)=A2 ans(:,:,3)=A3
习题三(Page 56)——(2) 7. 解线性方程
8. 解方程组
习题三(Page 56)——(3) 9. 求顶点是A(2,5,6),B(11,3,8),C(5,1,11)的三 角形各边的长。 10. 进行如下的逻辑运算,观察结果。
(1)P=[100], ~P, P|(~P), P&(~P) (2)C=rem(P,2), C&P, C|P, (C-1)&P (3)any(P), all(P), all(P|(~P)), any(P&(~P))
函数体(function body)
注释文字(Comments)
Help文字行(help text lines) H1行(First help text line) 函数声明行(function definition line),文件名同函数名
M-file函数的一般结构
ห้องสมุดไป่ตู้
函数声明行:定义函数名,如 function y=abc(r,s,t)。 函数名最好同M-file文件名,便于直接调用。 H1行:帮助信息的第一行,给定帮助信息的关键字,命令 lookfor topic或lookfor topic –all只搜索H1中的文字 Help行:其他帮助信息,命令help <M文件名>显示H1行和 Help行的所有文字 函数体:包括运算和赋值等编程代码 注释文字:在一行中由%引领,直至行末的文字 注释体:由%{ }括起的多行文字 参数传递:值传递(实参的值赋值给函数虚参,函数执行完 后,消除虚参) 全局变量:在函数体中,用global <变量名> 声明 函数的调用格式: y=abc(r,s,t)
[计算机软件及应用]matlab课件第3讲
2021/8/26
10
4、数组元素的标识与寻访
• 数组元素的标识 – “全下标(index)”标识 经典数学教科书采用“全下标”标识法:每一维对应一个下标。 – 如对于二维数组,用“行下标和列下标”标识数组的元素, a(2,3)就表示二维数组a的“第2行第3列”的元素。 – 对于一维数组,用一个下标即可,b(2)表示一维数组b的第2 个元素,无论b是行向量还是列向量。 – “单下标”(linear index)标识 所谓“单下标”标识就是用一个下标来表明元素在数组的位置。 – 对于二维数组, “单下标”编号:设想把二维数组的所有 列,按先后顺序首尾相接排成“一维长列”,然后自上往下 对元素位置执行编号。 – 两种“下标”标识的变换:sub2ind、ind2sub
>>a([1 2 5]) %寻访a的第1、2、5个元素组成的子数组
ans = 1.0000 3.2500 10.0000
2021/8/26
13
4、数组元素的标识与寻访 (续)
>>a(1:3) %寻访前3个元素组成的子数组
ans =
1.0000 3.2500 5.5000
>>a(3:-1:1) %由前3个元素倒序构成的子数组
(1,3) (2,3) (3,3)
(1,4) (2,4) (3,4)
(1,4) (2,4) (3,4)
页
24
5、多维数组 (续)
• 三维数组,可对应至一个 X - Y - Z 三维立体坐标,如下图所示:
Z(页)
2021/8/26
X(行)
Y(列)
25
5、多维数组 (续)
• 三维数组元素的寻址:可以(行、列、页)来确定。 • 以维数为 3×4×2 的三维数组为例,其寻址方式如下
第3章MATLAB程序设计3.1 M文件3.2 程序控制结构3.3 函数文...
例3-3 求一元二次方程ax2 +bx+c=0 的根。
程序如下: a=input('a=?'); b=input('b=?'); c=input('c=?'); d=b*b-4*a*c; x=[(-b+sqrt(d))/(2*a),(-b-sqrt(d))/(2*a)]; disp(['x1=',num2str(x(1)),',x2=',num2str(x(2))]);
2.数据的输出
MATLAB提供的命令窗口输出函 数主要有disp函数,其调用格式为 disp(输出项) 其中输出项既可以为字符串,也可 以为矩阵。
例3-2 输入x,y的值,并将它们的 值互换后输出。
程序如下: x=input('Input x please.'); y=input('Input y please.'); z=x; x=y; y=z; disp(x); disp(y);
程序如下: A=[1,2,3;4,5,6]; B=[7,8,9;10,11,12]; try C=A*B; catch C=A.*B; end C lasterr %显示出错原因
3.2.3 循环结构
1.for语句 for语句的格式为: for 循环变量=表达式1:表达式2:表达式3 循环体语句 end 其中表达式1的值为循环变量的初值,表达式 2的值为步长,表达式3的值为循环变量的 终值。步长为1时,表达式2之间第一个能 被21整除的整数。
程序如下: for n=100:200 if rem(n,21)~=0 continue end break end n
4.循环的嵌套: 如果一个循环结构的循环体又包括一
MATLAB语言与应用(3)
—
s3 3s2 3s 1
H (s) (s 1)(s 2) (s 2 j)(s 2 j)(s 3)
三 根轨迹分析(1-4)
所谓根轨迹是指,当开环系统某一参数从零变到无穷大时,闭环系 统特征方程的根在s平面上的轨迹。一般来说,这一参数选作开环 系统的增益K,而在无零极点对消时,闭环系统特征方程的根就是 闭环传递函数的极点。
求按串联、并联、正反馈、负反馈连接时的系统状态方程及系统1按 单位负反馈连接时的状态方程。
3.模型的转换与连接(5-5)
例:求当K1=250/K1=1000时如图所示的系统的传递函数(表示成零极 增益型式)
二、控制系统的时域分析
时域分析的一般方法 求取系统单位阶跃响应:step() 求取系统的冲激响应:impulse()
频率特性是指系统在正弦信号作用下,稳态输出与输入之比对频率的关系 特性。频率特性函数与传递 X o ( jw) A(w)e j(w) Xi ( jw)
其中 A(w)
X o (w)为幅频特性 X i (w)
(w) o (w) i (w)为相频特性
通常将频率特性用曲线的形式进行表示,包括对数频率特性曲线和幅相频 率特性曲线(简称幅相曲线),MATLAB提供了绘制这两种曲线的函数。
(s 1)(s 3)
串联。
例:求闭环系统的传递函数:
3.模型的转换与连接(4-5)
控制系统工具箱LTI对象运算优先等级为“状态空间>零极增益>传 递函数”,合成系统的系统函数的对象特性应按照环节的最高等级 来确定。
例:已知系统1和系统2的状态方程分别为
x2
0 1
1 3
x2
10u2
y2 1 4x2
根轨迹分析(2-4)
MATLAB基础教程-薛山第二版-课后习题答案
nums1=[7 1 3 5 32 12 1 99 10 24];
nums2=[54 1 456 9 20 45 48 72 61 32 10 94 11];
nums3=[44 11 25 41 84 77 998 85 2 3 15];
编写脚本文件创建相应的3个向量:newNums1、newNums2和newNums3,分别包含以上3个向量中从第一元素开始且间隔取值的元素。
矩阵是一个二维数组,所以矩阵的加、减、数乘等运算与数组运算是一致的。但有两点要注意:
(1)对于乘法、乘方和除法等三种运算,矩阵运算与数组运算的运算符及含义都不同:矩阵运算按线性变换定义,使用通常符号;数组运算按对应元素运算定义,使用点运算符;
(2)数与矩阵加减、矩阵除法在数学是没有意义的,在MATLAB中为简便起见,定义了这两类运算
6.设 , , , ,判断下面表达式的值。
(1)
(2)
(3)
(4)
(5)
(6)
clear,clc
a=39;b=58;c=3;d=7;
a>b,a<c,a>b&&b>c,a==d,a|b>c,~~d
7.编写脚本,计算上面第2题中的表达式。
clear,clc
disp('sin(60)=');
disp(sind(60))
实验04051002MATLAB科学计算及绘图
操作成绩
报告成绩
1
1)熟悉MATLAB所提供的常用数值计算的函数(方程(组)的求解、插值、拟合);
2)掌握MATLAB二维图形绘制命令及其图形控制(plot、loglog、contour、polar等);
matlab 实验三 matlab程序设计与优化
matlab 实验三 matlab程序设计与优化Matlab是一种高级的计算机编程语言,广泛应用于科学、工程、金融和其他领域。
在Matlab实验三中,我们将学习Matlab程序设计与优化。
本文将介绍Matlab实验三的内容和要求,并提供一些有用的技巧和建议,帮助读者更好地完成实验。
实验三的主要内容包括:1. Matlab程序设计基础2. Matlab程序优化技巧3. Matlab代码调试方法4. Matlab性能分析工具5. 实例分析与练习题下面我们将逐个介绍这些内容。
1. Matlab程序设计基础在本节中,我们将学习如何使用Matlab编写简单的程序。
以下是一些重要的概念和技巧:1)变量和数据类型:在Matlab中,变量可以存储不同类型的数据,如数字、字符串、逻辑值等。
常见的数据类型包括double、char、logical等。
2)运算符:Matlab支持各种数学运算符,包括加减乘除、幂运算等。
此外,还有逻辑运算符(如and、or)和比较运算符(如==、~=)。
3)控制结构:控制结构可以控制程序执行流程。
常见的控制结构包括if语句、for循环和while循环。
4)函数:函数是一种可重复使用的代码块,可以接受输入参数并返回输出结果。
Matlab中有很多内置函数,也可以编写自己的函数。
2. Matlab程序优化技巧在本节中,我们将学习如何优化Matlab程序以提高其性能。
以下是一些重要的技巧:1)向量化:向量化是一种将循环操作转换为矩阵操作的技术。
这样可以减少程序执行时间,并且使代码更简洁。
2)预分配数组:在编写Matlab程序时,应尽可能避免动态数组分配。
相反,应该预先分配所需大小的数组。
3)使用内置函数:Matlab中有许多内置函数,它们通常比用户自定义函数更快。
因此,在编写程序时应尽可能使用内置函数。
4)避免不必要的计算:在编写程序时,应尽可能避免不必要的计算。
例如,在循环中进行重复计算或计算已知结果等。
实验3MATLAB软件的基础应用
数学与软件科学学院实验报告学期: 2014 至2015 第 1 学期年月日课程名称:MATLAB程序设计及应用专业: 信息与计算科学级班实验编号:3 实验项目 MATLAB字符串、单元数组和结构体指导教师__郭远华_ 姓名:学号:实验成绩:一、实验目的及要求1. 掌握matlab的单元数组;2.掌握matlab结构体;3. 掌握字符串的各种操作;4. 熟悉matlab中的基础程序设计.二、实验内容以下涉如果及到源代码,答题时请拷贝代码1、创建以下内容的字符串:This Is An Example. ,记为mychar。
求字符串的长度;以操作数组的方式显示前5个字符;反顺序显示mychar中的字符;显示mychar对应的ASCII码;结合find()命令,将mychar中的小写全部转化为大写。
2、创建以下带单引号的字符串:Example ‘4.1.2’,字符串记为mychar2。
将5题mychar中的This Is 与mychar2横向连接。
3、用直接输入的方法创建2行的字符串数组,第一行为:The string array,第二行为:hasmultiple rows,如果2行长度不等,补充空格对齐。
4、用char()函数创建2行的字符串数组,第一行为:The string array,第二行为:has two rows。
5、创建两个字符串,内容分别为blink和bliss。
用关系运算符==和>=比较两个字符串;调用函数比较两个字符串是否相同;调用函数比较两个字符串的前3位是否相同。
6、str=’This is a good example.’,将str中的good 替换为great;查找str中的a,并显示a出现的位置。
7、创建字符串数组,数组的2行分别为Picture和Pitch,用函数strmatch()在数组中分别查找Pi和Pic。
8、将字符串’very good’转化为等值的整数。
Matlab应用 上机实验3
实验3 M 文件和程序的流程控制语句实验目的:1、 理解脚本M 文件和函数M 文件的区别。
2、 掌握脚本M 文件和函数M 文件的创建和运行。
3、 掌握流程控制语句的使用。
4、程序的调试。
实验内容:1、 编写一个函数文件fun.m ,用于求∑==101n n n a,然后在命令文件中给定a 的值,调用函数fun 。
2、 编写一个函数文件,求小于任意自然数n 的斐波那契数列各项。
Fibnacci 数列定义如下:⎪⎩⎪⎨⎧>+===--2,121121n f f fn f f n n3、 编写一个函数M 文件([y1,y2]=fun(x1,x2)),使之可以处理1个或两个输入参数,一个或两个输出参数,满足如下条件:当只有一个输入参数x1时:如果只有一个输出参数y1,则y1=x1; 如果有两个输出参数y1,y2,则y1=y2=x1/2; 当有两个输入参数x1,x2时:如果只有一个输出参数y1,则y1=x1+x2; 如果有两个输出参数y1,y2,则y1=y2=(x1+x2)/2; 4、(个人所得税纳税问题)根据中华人民共和国个人所得税法规定,公民的工资、薪金所得应该依法缴纳个人所得税。
个人所得税计算公式为:在每个人的月收入中超过1600元以上的部分应该纳税,这部分收入称为应纳税所得额。
应纳税所得额实行分段累积税率,按如下税率表计算1) y 和x 的函数关系,并编写函数M 文件实现此函数。
2) 调用函数,求月收入为6850和12300的应纳税额。
5、编matlab M文件实现下述猜数游戏(选做,有加分)首先由计算机产生[1,100]之间的随机整数,然后由用户猜测所产生的随机数。
根据用户猜测的情况给出不同提示,如猜测的数大于产生的数,则显示“High”,小于则显示“Low”,等于则显示“You won”,同时退出游戏。
用户最多可以猜7次。
matlab程序设计教程第三版课后答案
matlab程序设计教程第三版课后答案在 MATLAB中,对 MATLAB编程是用什么来编写程序的?下面分别介绍下 MATLAB程序设计教程中关于使用什么语言编写程序:由于使用较多,本教程会在 MATLAB基础上进行改进和优化,并以此为基础将问题分类为四个不同层次:(1)定义问题分类;(2)提出问题间关系;(3)分析问题和解决问题。
本教程不限制解决问题时是否使用或修改现有问题而只是要求解决问题时使用或修改现有问题而不适用本教程中各层次问题并加入了分析问题和解决问题的内容和方法。
一、定义问题分类定义问题分类的目的是为了将不同层次的问题区分开来,以便更加准确地进行相应的程序设计。
解决问题应根据问题所涉及的对象及其相互关系来进行分类,通常可以分为三类:计算类、求解类。
定义问题分类时应根据问题的重要性、目标实现过程中有无对相关问题分类的基础知识等进行考虑,以便对问题分类更具有针对性。
在 MATLAB中定义问题分类时一般按可划分的对象分类,也可按可处理的对象分类三大类,如图2所示。
图2中的问题分类如图3所示,其中 A为问题分类中的问题, B为已完成的问题, C为分析问题, D为解决问题。
二、提出问题间关系问题的内部结构由程序代码构成,因此,问题间的问题关系是编程人员必须掌握的知识,为了便于操作,它们之间存在着复杂的相互关系。
当一个问题被解决后,下一个问题的解决还需要继续解决下一个问题。
如果一个问题不被解决又要继续解决另外一个问题,或者一个问题已经解决了,而下一个问题却没有得到解决,那么这类问题就被称为“已知问题”或者“未知问题”。
由于已知问题都是由已知的数学问题所构成,所以这种关系叫已知问题与未知问题之间的关系(见图3)。
当一个问题与其他问题处于不同的数学问题之间时,所处的数学问题就会存在一定程度的矛盾。
如果数学问题不能得到解决,或者解决数学问题的算法设计出现错误,那么这个矛盾就会不断激化,最终将使整个问题变得越来越复杂。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
◆ [ x,fval,exitflag,output,jacob]=fsolve(fun,x0,options,P1,P2...): 解 非 线性方程组最完整的调用格式。 x0 是表示零点数是猜测值的向量; options 是 优 化 迭 代 所 采 用 参 数 的 结 构 数 组 。 P1 和 P2是向函数 fun 传递的参数; x 和 fval是输出参数,所求零点的自变量值和函数值; output是输出此命令所用的计算方法、迭代次数等信息。 jacob是函数在 x 处的 jacobian。
结果为:
Zero found near tt. x=
-1 fval =
0 exitflag =
1
Zero found near yy. x=
1.8812 fval =
-6.2172e-015 exitflag =
1
第3章 矩阵、数组和符号运算
解非线性方程组的函数命令fsolve 其调用格式为: ◆ x=fsolve(fun,x0) :解非线性方程组最简单的调用格式。
[yy]=ginput(1) %用鼠标获取 2 个零点猜测值
zoom off
%恢复原来图形大小
第3章 矩阵、数组和符号运算
显示所得零点初始猜测值,结果为: tt =
-0.9838 0.0001 yy = 1.8762 0.0091
(5)用函数 fzero 命令求函数的精确零点 [x,fval,exitflag]=fzero(’fun1’,tt(1),[]) %靠近 tt(1)点处的精确零点 [x,fval,exitflag]=fzero(’fun1’,yy(1),[]) %靠近 yy(1)点处的精确零点
第3章 矩阵、数组和符号运算
求一元函数零点命令fzero 的调用格式为: ◆ x = fzero(fun,x0):求一元函数零点命令的最简形式; ◆ [x,fval,exitflag] =fzero(fun,x0,options,P1,P2,...):求一元函 数零点命令的完整格式。
x0 是初始猜测的零点; options 是优化迭代所采用的参数选项,options的缺省设置可以用命令 options=optimset(’fzero’)获得; P1,P2是向函数 fun 传递的附加参数。它的具体取名和函数 fun 中一 致; x是输出参数,为所求的零点自变量值; fval是输出参数,为函数 fun 在 x 处的值; exitflag是描述函数 fun 的退出情况。若 exitflag>0,则表示找到函数 零点后退出;若 exitflag<0,则表示没有找到零点或在搜索过程中遇到 了无穷大的函数值。
然后用fsolve求解
>>[x,fval,exitflag,output,jacob]=fsolve(‘fc’, [1.,1.],[]) %[1.,1.]为初值 x=
0.3367 0.5553 fval =
1.0e-008 * 0.2029 0.5242 exitflag = 1
第3章 矩阵、数组和符号运算
b. 非线性方程的符号解法 用函数零点法求非线性方程的解有两个函数命令,即 fzero 和 fsolve。
fzero命令用于求一元函数零点 fsolve命令用于求解非线性方程组 首先需将方程 f(x)=g(x)转化为 F(x)=f(x)-g(x)=0,方程组也 是如此 ;然后再将函数 F(x)写成 MATLAB 的 m 函数,以 便在 fzero 和 fsolve 命令中调用。 求解的过程为: 先猜测一个初始零点,或者该零点大概所在的区间; 然后通过计算,使猜测值不断精确化,或使猜测区间不断 收缩 ,直到达到预先指定的精度为止。
>> fplot('fun1',[-5,5],'r')
>> hold on
>> fplot('fun2',[-5,5],'r')
( 4)用 zoom 和 ginput 命令获得零点的初始近似值 在程序中输入下列命令,可得到函数的局部放大图及鼠标
操作线。
zoom on
%局部放大命令
[tt]=ginput(1)
0 2 10
9 B 7
6
>> A=sym('[10,-1,0;-1,10,-2;0,-2,10]')
A=
[ 10, -1, 0]
[ -1, 10, -2]
[ 0, -2, 10]
>> B=('[9;7;6]')
B=
[9;7;6]
>> linsolve(A,B) ans = [ 473/475] [ 91/95] [ 376/475] >> vpa(ans,6) ans = [ .995789] [ .957895] [ .791579] 矩阵 A 必须至少是行满秩的。当 A 的列数大于 行数时,将给出解不惟一的警告提示。
第3章 矩阵、数组和符号运算
7、符号方程求解
a.线性求解线性方程组符号解。
对方程 A*X=B,linsolve 的调用格式为:
X = linsolve(A,B)
等同于 X = sym(A)\sym(B)
10 1 0 A 1 10 2
第3章 矩阵、数组和符号运算
求方程组 x1 0.7sin x1 0.2cos x2 0 的根。
x2 0.7cos x1 0.2sin x2 0
首先编制函数文件fc.m
function y=fc(x) y(1)=x(1)-0.7*sin(x(1))-0.2*sin(x(2)); y(2)=x(2)-0.7*cos(x(1))+0.2*sin(x(2)); y=[y(1),y(2)];
第3章 矩阵、数组和符号运算
用 fzero 命令求解函数 f (x) x4 4x 5 的零点
( 1)建立函数 f(x)的 M 文件。
function y=fun1(x)
y=x.^4-4*x-5;
( 2)建立水平横轴的 M 文件。
function y=fun2(x)
y=0;
( 3)用作图法估计函数零点位置。