试验三MATLAB的程序设计
实验三_M_文件及_MATLAB_程序设计与调试
实验三M 文件及MATLAB 程序设计与调试一、实验目的全面掌握在MA TLAB 下进行程序设计的有关问题,具体涉及到M 脚本文件和M 函数文件的编写、全局和局部变量的使用、流程控制结构、提高程序执行效率的设计技术、程序调试等问题。
二、实验内容1、关于M 脚本文件和M 函数文件MATLAB 的M 文件有两类:脚本文件和函数文件。
(1)脚本文件——将原本要在MATLAB 的指令窗口中直接输入的语句,放在一个以.m 为后缀的,称为脚本文件中。
有了脚本文件,可直接在MATLAB 中输入脚本文件名(不含后缀)。
MATLAB 会打开这一脚本文件,并依次执行脚本文件中的每一条语句,这与在MATLAB 中直接输入语句的结果完全一致。
(2)函数文件——它的第一行必须是函数定义行。
M 函数文件由5 部分构成:◆函数定义行◆H1 行◆函数帮助文本◆函数体◆注释注意:在函数文件中,除了函数定义行之外,其它部分都是可以省略的。
但作为一个函数,为了提高函数的可用性,应加上H1 行和函数帮助文本,为了提高函数的可读性,应加上适当的注释。
例如:function y = mean(x)% MEAN Average or mean value.% For vectors, MEAN(X) is the mean value of the elements in X.% For matrices, MEAN(X) is a row vector containing the mean value of each column.[m,n]=size(x);if m==1% Determine whether x is a vectorm=n;endy = sum(x)/m;①函数定义行:function y = mean(x)function 为函数定义的关键字,mean 为函数名,y 为输出变量,x 为输入变量当函数具有多个输出变量时,则以方括号括起;当函数具有多个输入变量时,则直接用圆括号括起。
实验三:使用matlab求解最小费用最大流算问题
北京联合大学实验报告项目名称: 运筹学专题实验报告学院: 自动化专业:物流工程班级: 1201B 学号:2012100358081 姓名:管水城成绩:2015 年 5 月 6 日实验三:使用matlab求解最小费用最大流算问题一、实验目的:(1)使学生在程序设计方面得到进一步的训练;,学习Matlab语言进行程序设计求解最大流最小费用问题。
二、实验用仪器设备、器材或软件环境计算机,Matlab R2006a三、算法步骤、计算框图、计算程序等1.最小费用最大流问题的概念。
在网络D(V,A)中,对应每条弧(vi,vj)IA,规定其容量限制为cij(cij\0),单位流量通过弧(vi,vj)的费用为dij(dij\0),求从发点到收点的最大流f,使得流量的总费用d(f)为最小,即mind(f)=E(vi,vj)IA2。
求解原理。
若f是流值为W的所有可行流中费用最小者,而P是关于f的所有可扩充链中费用最小的可扩充链,沿P以E调整f得到可行流fc,则fc是流值为(W+E)的可行流中的最小费用流.根据这个结论,如果已知f是流值为W的最小费用流,则关键是要求出关于f 的最小费用的可扩充链。
为此,需要在原网络D的基础上构造一个新的赋权有向图E(f),使其顶点与D的顶点相同,且将D中每条弧(vi,vj)均变成两个方向相反的弧(vi,vj)和(vj,vi)1新图E(f)中各弧的权值与f中弧的权值有密切关系,图E(f)中各弧的权值定义为:新图E(f)中不考虑原网络D中各个弧的容量cij。
为了使E(f)能比较清楚,一般将长度为]的弧从图E(f)中略去.由可扩充链费用的概念及图E(f)中权的定义可知,在网络D中寻求关于可行流f的最小费用可扩充链,等价于在图E(f)中寻求从发点到收点的最短路.因图E(f)中有负权,所以求E(f)中的最短路需用Floyd算法。
1.最小费用流算法的框图描述。
图一2.计算最小费用最大流MATLAB源代码,文件名为mp_mc.mfunction[Mm,mc,Mmr]=mp_mc(a,c)A=a; %各路径最大承载流量矩阵C=c; %各路径花费矩阵Mm=0; %初始可行流设为零mc=0; %最小花费变量mcr=0;mrd=0;n=0;while mrd~=inf %一直叠代到以花费为权值找不到最短路径for i=1:(size(mcr’,1)—1)if a(mcr(i),mcr(i+1))==infta=A(mcr(i+1),mcr(i))—a(mcr(i+1),mcr(i)); elseta=a(mcr(i),mcr(i+1));endn=min(ta,n);%将最短路径上的最小允许流量提取出来endfor i=1:(size(mcr’,1)-1)if a(mcr(i),mcr(i+1))==infa(mcr(i+1),mcr(i))=a(mcr(i+1),mcr(i))+n;elsea(mcr(i),mcr(i+1))=a(mcr(i),mcr(i+1))—n;endendMm=Mm+n;%将每次叠代后增加的流量累加,叠代完成时就得到最大流量 for i=1:size(a,1)for j=1:size(a’,1)if i~=j&a(i,j)~=infif a(i,j)==A(i,j) %零流弧c(j,i)=inf;c(i,j)=C(i,j);elseif a(i,j)==0 %饱合弧c(i,j)=inf;c(j,i)=C(j,i);elseif a(i,j)~=0 %非饱合弧c(j,i)=C(j,i);c(i,j)=C(i,j);endendendend[mcr,mrd]=floyd_mr(c) %进行叠代,得到以花费为权值的最短路径矩阵(mcr)和数值(mrd)n=inf;end%下面是计算最小花费的数值for i=1:size(A,1)for j=1:siz e(A’,1)if A(i,j)==infA(i,j)=0;endif a(i,j)==infa(i,j)=0;endendendMmr=A—a; %将剩余空闲的流量减掉就得到了路径上的实际流量,行列交点处的非零数值就是两点间路径的实际流量for i=1:size(Mmr,1)for j=1:size(Mmr’,1)if Mmr(i,j)~=0mc=mc+Mmr(i,j)*C(i,j);%最小花费为累加各条路径实际流量与其单位流量花费的乘积endendend利用福得算法计算最短路径MATLAB源代码,文件名为floyd_mr。
Matlab实验
MATLAB实验报告学校:湖北文理学院学院:物理与电子工程学院专业:电子信息工程学号: 2013128182 姓名:张冲指导教师:宋立新实验一 MATLAB环境的熟悉与基本运算一、实验目的:1.熟悉MATLAB开发环境2.掌握矩阵、变量、表达式的各种基本运算二、实验内容1、学习使用help命令,例如在命令窗口输入help eye,然后根据帮助说明,学习使用指令eye(其它不会用的指令,依照此方法类推)2、学习使用clc、clear,观察command window、command history和workspace等窗口的变化结果。
3、初步程序的编写练习,新建M-file,保存(自己设定文件名,例如exerc1、exerc2、exerc3……),学习使用MATLAB的基本运算符。
三、练习1)help rand,然后随机生成一个2×6的数组,观察command window、command history和workspace等窗口的变化结果。
2)学习使用clc、clear,了解其功能和作用。
3)用逻辑表达式求下列分段函数的值4)求[100,999]之间能被21整除的数的个数。
(提示:rem,sum的用法)四、实验结果1)2)clc:清除命令窗口所有内容,数值不变;clear:初始化变量的值。
3)4)实验二 MATLAB数值运算一、实验目的1、掌握矩阵的基本运算2、掌握矩阵的数组运算二、实验内容1)输入C=1:2:20,则C(i)表示什么?其中i=1,2,3, (10)2)输入A=[7 1 5;2 5 6;3 1 5],B=[1 1 1; 2 2 2; 3 3 3],在命令窗口中执行下列表达式,掌握其含义:A(2, 3) A(:,2) A(3,:) A(:,1:2:3) A(:,3).*B(:,2)A(:,3)*B(2,:) A*B A.*B A^2 A.^2 B/A B./A3)二维数组的创建和寻访,创建一个二维数组(4×8)A,查询数组A第2行、第3列的元素,查询数组A第2行的所有元素,查询数组A第6列的所有元素。
MATLAB实验三 信号的调制与解调
实验三信号的调制与解调一.实验目的:1.熟悉幅度调制与解调过程,熟悉调制解调过程中信号时域波形和频谱。
2.掌握Modulate函数实现调幅和调频信号。
3.熟悉快速傅立叶变换函数fft,求模函数abs和fftshift函数求信号幅度频谱。
4.掌握butter函数进行巴特沃兹低通滤波器设计,熟悉滤波器频率响应函数freqz,滤波函数filter。
5.熟悉信号的合成与分解原理,加深对傅里叶级数的理解;二、实验原理:1.两个信号的调制通常用乘法器实现,由一个信号控制另一个信号的某个参量,例如用一个低频正弦波信号控制高频载波的幅值,则产生一个振幅调制信号,称为调幅波;类似还可产生调频波等。
2.幅度调制与解调原理:(如下图所示)调制信号()p t,假设信道不引入噪声,解调时采用同步解f t,载波()调,LPF为低通滤波器,()f t为接收信号。
C三、实验内容1.验证性实验a)使用modulate函数产生调幅信号解:Fm=10; Fc=100; Fs=1000; N=1000; k=0:N; t=k/Fs;x=abs(sin(2*pi*Fm*t));xf=abs(fft(x,N)); y1=modulate(x,Fc,Fs,'am');subplot(2,1,1);plot(t(1:200),y1(1:200));xlabel('时间'); ylabel('幅度'); title('调幅');yf=abs(fft(y1,N)); subplot(2,1,2); stem(yf(1:200));xlabel('频率');ylabel('幅度');b)使用modulate函数产生调频信号解:Fm=10; Fc=100; Fs=1000; N=1000; k=0:N; t=k/Fs;x=abs(sin(2*pi*Fm*t));xf=abs(fft(x,N)); y1=modulate(x,Fc,Fs,'pm');subplot(2,1,1);plot(t(1:200),y1(1:200));xlabel('时间'); ylabel('幅度'); title('调频');yf=abs(fft(y1,N)); subplot(2,1,2); stem(yf(1:200)); xlabel('频率');ylabel('幅度');c)周期信号的分解与合成解:t=-3:0.01:3; Fm=0.5; sum=0; n=100; for i=1:2:n;sum=sum+4/pi.*(1/i).*sin(i*2*pi*Fm*t); endplot(t,sum);title('周期信号的分解与合成');2. 设计性实验1) 发射端调制信号()2cos(2)f t t =,载波()cos(20)p t t =,已调信号()A f t ,理想信道无噪声。
MATLAB程序的设计与应用(刘卫国编)课后实验答案
实验一 MATLAB 运算基础1. 先求下列表达式的值,然后显示MATLAB 工作空间的使用情况并保存全部变量。
(1) 0122sin851z e =+(2) 21ln(2z x =,其中2120.455i x +⎡⎤=⎢⎥-⎣⎦ (3) 0.30.330.3sin(0.3)ln , 3.0, 2.9,,2.9,3.022a a e e a z a a --+=++=--L (4) 2242011122123t t z t t t t t ⎧≤<⎪=-≤<⎨⎪-+≤<⎩,其中t =0:0.5:2.5 解:2. 已知:1234413134787,2033657327A B --⎡⎤⎡⎤⎢⎥⎢⎥==⎢⎥⎢⎥⎢⎥⎢⎥-⎣⎦⎣⎦求下列表达式的值:(1) A+6*B 和A-B+I (其中I 为单位矩阵)(2) A*B 和A.*B(3) A^3和A.^3(4) A/B 及B\A(5) [A,B]和[A([1,3],:);B^2]解:运算结果:3. 设有矩阵A 和B1234530166789101769,111213141502341617181920970212223242541311A B ⎡⎤⎡⎤⎢⎥⎢⎥-⎢⎥⎢⎥⎢⎥⎢⎥==-⎢⎥⎢⎥⎢⎥⎢⎥⎢⎥⎢⎥⎣⎦⎣⎦(1) 求它们的乘积C。
(2) 将矩阵C的右下角3×2子矩阵赋给D。
(3) 查看MATLAB工作空间的使用情况。
解:. 运算结果:4. 完成下列操作:(1) 求[100,999]之间能被21整除的数的个数。
(2) 建立一个字符串向量,删除其中的大写字母。
解:(1) 结果:(2). 建立一个字符串向量例如:ch='ABC123d4e56Fg9';则要求结果是:实验二 MATLAB 矩阵分析与处理1. 设有分块矩阵33322322E R A O S ⨯⨯⨯⨯⎡⎤=⎢⎥⎣⎦,其中E 、R 、O 、S 分别为单位矩阵、随机矩阵、零矩阵和对角阵,试通过数值计算验证22E R RS A O S +⎡⎤=⎢⎥⎣⎦。
MATLAB程序设计教程(第二版)第三章实验报告
for i=1:n
a=((2*i*i*2)/((2*i-1)*(2*i+1)))*a;
end
disp(a);
clear
i=1:n;%用prod函数实现
b=prod((2.*i).*(2.*i)./((2.*i-1).*(2.*i+1)))
6.建立 矩阵,要求输出矩阵第n行元素。当n值超过矩阵的行数时,自动转为输出矩阵最后一行元素,并给出出错信息。
班级
Class
姓名
Name
学号
ID
指导老师
Teacher
课程名称
Course
MATLAB
编制日期
Date
实验名称
Title
MATLAB程序设计
一、实验目的(ExperimentTarget)
1.掌握利用if语句、switch语句实现选择结构的方法。
2.掌握利用for语句、while语句实现循环结构的方法。
>> lx2_1
请输入一个百分制分数100
A
>> lx2_1
请输入一个百分制分数90
A
>> lx2_1
请输入一个百分制分数80
B
>> lx2_1
请输入一个百分制分数70
C
>> lx2_1
请输入一个百分制分数60
D
>> lx2_1
请输入一个百分制分数30
E
>> lx2_1
请输入一个百分制分数123
输入出错
(1)
clear
n=input('输入一个数:');%用循环结构实现
>> lx51
MATLAB实验报告
MATLAB实验报告MATLAB 实验报告姓名:专业:学号:实验⼀ MATLAB环境的熟悉与基本运算⼀、实验⽬的:1.熟悉MATLAB开发环境2.掌握矩阵、变量、表达式的各种基本运算⼆、实验基本知识:1.熟悉MATLAB环境:MATLAB桌⾯和命令窗⼝、命令历史窗⼝、帮助信息浏览器、⼯作空间浏览器⽂件和搜索路径浏览器。
2.掌握MATLAB常⽤命令3.MATLAB变量与运算符变量命名规则如下:(1)变量名可以由英语字母、数字和下划线组成(2)变量名应以英⽂字母开头(3)长度不⼤于31个(4)区分⼤⼩写MATLAB中设置了⼀些特殊的变量与常量,列于下表。
MATLAB运算符,通过下⾯⼏个表来说明MATLAB的各种常⽤运算符表2 MATLAB算术运算符表3 MATLAB关系运算符表4 MATLAB逻辑运算符表5 MATLAB特殊运算4.MATLAB的⼀维、⼆维数组的寻访表6 ⼦数组访问与赋值常⽤的相关指令格式5.MATLAB的基本运算表7 两种运算指令形式和实质内涵的异同表6.MATLAB的常⽤函数表8 标准数组⽣成函数表9 数组操作函数三、实验内容1、学习安装MATLAB软件。
2、学习使⽤help命令,例如在命令窗⼝输⼊help eye,然后根据帮助说明,学习使⽤指令eye(其它不会⽤的指令,依照此⽅法类推)3、学习使⽤clc、clear,观察command window、command history和workspace 等窗⼝的变化结果。
4、初步程序的编写练习,新建M-file,保存(⾃⼰设定⽂件名,例如exerc1、exerc2、exerc3……),学习使⽤MATLAB的基本运算符、数组寻访指令、标准数组⽣成函数和数组操作函数。
注意:每⼀次M-file的修改后,都要存盘。
四、实验结果练习A:(1)help rand,然后随机⽣成⼀个2×6的数组,观察command window、command history和workspace等窗⼝的变化结果。
《MATLAB程序设计》实验指导书
三、
实验仪器和设备
1、 计算机一台。 2、 MATLAB7.0 以上集成环境。
四、
预习要求
2
《MATLAB 程序设计》实验指导书
1、 复习 MATLAB 的启动与Байду номын сангаас出,熟悉 MATLAB 运行环境。 2、 复习 MATLAB 中矩阵的生成以及矩阵运算的基本原理。
五、
实验内容及步骤
实验内容:
1、 求下列表达式的值 1) z1
5
《MATLAB 程序设计》实验指导书
2) 函数调用 函数文件编制好后,就可调用函数进行计算了。函数调用的一般格式为 [输出实参表]=函数名(输入实参表) 注意:函数调用时各实参出现的顺序、个数,应与函数定义时形参的顺序、个 数一致,否则会出错。函数调用时,实参先传递给形参,然后再执行函数功能。 5、 选择结构 1) if 语句 a) 单分支 if 语句 if 条件 语句块 end b) 双分支 if 语句 if 条件 语句块 1 else 语句块 2 end c) 多分支 if 语句 if 条件 1 语句块 1 elseif 条件 2 语句块 2 …… elseif 条件 n 语句块 n else 语句块 n+1 end 2) switch 语句 switch 表达式 case 结果表 1 语句块 1 case 结果表 2 语句块 2 ……
二、
实验原理
1、 M 文件 用 MATLAB 语言编写的程序,称为 M 文件,它们的扩展名均为.m。M 文件根据 调用方式的不同分为两类,命令文件(Script file)和函数文件(Function file) 。 2、 建立新的 M 文件 启动 MATLAB 文本编辑器有 3 种方法: 1) 单击工具栏上的“New M-File”命令按钮。 2) 从 MATLAB 主窗口的“File”菜单中选择“New”菜单项,再选择“M-file”命令。 3) 在 MATLAB 命令窗口输入命令“edit”。 3、 打开已有的 M 文件 1) 在当前目录窗口选中要打开的 M 文件,双击鼠标左键。 2) 单击 MATLAB 主窗口工具栏上的“Open File”命令按钮,再从弹出的对话框中 选择所需打开的 M 文件。 3) 从 MATLAB 主窗口的“File”菜单中选择“Open”命令,在“Open”对话框中选中 所需打开的文件。 4) 在 MATLAB 命令窗口输入命令“edit 文件名” 。 4、 函数文件 1) 函数文件的基本结构 函数文件由 function 语句引导,其基本结构为: function 输出形参表=函数名(输入形参表) 注释说明部分 函数体语句 注意:函数名的命名规则与变量名相同。当输出形参多于一个时,应用方括号 括起来。
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编程应用已知单位负反馈的开环传递函数为:G(s)=ωξω(1)假设自然频率ω给定,取五个不同的阻尼比ξ。
试用MATLAB编程,在同一张图中绘制其单位阶跃响应曲线,并分析阻尼比对二阶动态系统的影响。
取ω=2,ξ=0.25, 0.5, 1,2,4由开环传递函数求出闭环传递函数:G(s)=ωξωω将数据带入闭环传递函数得:G(s)=,ξ则随着ξ的值变化,绘制的曲线将不同。
写入MATLAB程序如下:clearclcnum=4;den1=[1 1 4];sys1=tf(num,den1);den2=[1 2 4];sys2=tf(num,den2);den3=[1 4 4];sys3=tf(num,den3);den4=[1 8 4];sys4=tf(num,den4);den5=[1 16 4];sys5=tf(num,den5);step(sys1,'b-',sys2,'g-',sys3,'r-',sys4,'c-',sys5,'y-',20);图1-1 阻尼比不同的单位阶跃响应曲线图阻尼比对二阶动态系统的影响:随着阻尼比ξ的增大,系统超调量逐渐减小。
当阻尼比大于1时,系统响应曲线为单调曲线,已经没有振荡了。
(2)假设阻尼比ξ给定,取五个不同的自然频率ω。
试用MATLAB编程,在同一张图中绘制其单位阶跃响应曲线,并分析自然频率对二阶动态系统的影响。
取ξ=0.5,ω=0.5,1,2,3, 4将数据带入闭环传递函数得:G(s)=ω,ωω则随着ω的值变化,绘制的曲线将不同写入MATLAB程序如下:clearclcnum1=0.25;den1=[1 0.5 0.25];sys1=tf(num1,den1);num2=1;den2=[1 1 1];sys2=tf(num2,den2);num3=4;den3=[1 2 4];sys3=tf(num3,den3);num4=9;den4=[1 3 9];sys4=tf(num4,den4);num5=16;den5=[1 4 16];sys5=tf(num5,den5);step(sys1,'b-',sys2,'g-',sys3,'r-',sys4,'c-',sys5,'y-',20);图1-2 自然频率不同的单位阶跃响应曲线图自然频率对二阶动态系统的影响:随着自然频率的增加,系统的响应速度加快,而响应曲线的峰值保持不变。
MATLAB实验报告一二三
2015秋2013级《MATLAB程序设计》实验报告实验一班级:软件131 姓名:付云雷学号:132872一、实验目的:1、了解MATLAB程序设计的开发环境,熟悉命令窗口、工作区窗口、历史命令等窗口的使用。
2、掌握MATLAB常用命令的使用。
3、掌握MATLAB帮助系统的使用。
4、熟悉利用MATLAB进行简单数学计算以及绘图的操作方法。
二、实验内容:1、启动MATLAB软件,熟悉MATLAB的基本工作桌面,了解各个窗口的功能与使用。
图1 MATLAB工作桌面2、MATLAB的常用命令与系统帮助:(1)系统帮助help:用来查询已知命令的用法。
例如已知inv是用来计算逆矩阵,键入help inv即可得知有关inv命令的用法。
lookfor:用来寻找未知的命令。
例如要寻找计算反矩阵的命令,可键入lookfor inverse,MATLAB即会列出所有和关键字inverse相关的指令。
找到所需的命令後,即可用help进一步找出其用法。
(2)数据显示格式:常用命令:说明format short 显示小数点后4位(缺省值)format long 显示15位format bank 显示小数点后2位format + 显示+,-,0format short e 5位科学记数法format long e 15位科学记数法format rat 最接近的有理数显示(3)命令行编辑:键盘上的各种箭头和控制键提供了命令的重调、编辑功能。
具体用法如下:↑----重调前一行(可重复使用调用更早的)↓----重调后一行→----前移一字符←----后移一字符home----前移到行首end----移动到行末esc----清除一行del----清除当前字符backspace----清除前一字符(4)MATLAB工作区常用命令:who--------显示当前工作区中所有用户变量名whos--------显示当前工作区中所有用户变量名及大小、字节数和类型disp(x) -----显示变量X的内容clear -----清除工作区中用户定义的所有变量save文件名-----保存工作区中用户定义的所有变量到指定文件中load文件名-----载入指定文件中的数据3、在命令窗口执行命令完成以下运算,观察workspace的变化,记录运算结果。
MATLAB实验指导书
实验一:MATLAB的基本操作一、实验目的:1.熟悉MATLAB操作环境2.熟悉MATLAB的帮助3.熟悉MATLAB矩阵的操作4.熟悉MATLAB基本运算二、实验内容:1.自行设计试题,说明三角函数是按弧度还是按角度计算。
2.找出取整的函数,并自行设计试题,说明它们的区别。
3.自行设计试题,说明如何给矩阵按列符值。
4.自行设计试题,建一个5X5矩阵,然后将第一行乘1,第二行乘2,第三行乘3,第四行乘4,第五行乘5。
5.设计编写程序(命令),解方程3x5-7x4+5x2+2x-18=0。
6.自行设计试题,说明eval()函数的功能。
三、实验原理:ceil(x)= -4 -2 0 2 5 7fix(x) = -4 -2 0 1 4 6floor(x) = -5 -3 -1 1 4 6round(x) = -5 -2 0 1 5 72、系统的在线帮助help 命令:(1).当不知系统有何帮助内容时,可直接输入help以寻求帮助:>> help(回车)(2).当想了解某一主题的内容时,如输入:>> help syntax(了解Matlab的语法规定)(3).当想了解某一具体的函数或命令的帮助信息时,如输入:>> help sqrt (了解函数sqrt的相关信息)lookfor命令现需要完成某一具体操作,不知有何命令或函数可以完成,如输入:>> lookfor line (查找与直线、线性问题有关的函数)3、常量与变量系统的变量命名规则:变量名区分字母大小写;变量名必须以字母打头,其后可以是任意字母,数字,或下划线的组合。
此外,系统内部预先定义了几个有特殊意义和用途的变量,见下表:数值型向量(矩阵)的输入(1).任何矩阵(向量),可以直接按行方式...输入每个元素:同一行中的元素用逗号(,)或者用空格符来分隔;行与行之间用分号(;)分隔。
所有元素处于一方括号([ ])内;例1-1:>> Time = [11 12 1 2 3 4 5 6 7 8 9 10]>> X_Data = [2.32 3.43;4.37 5.98](2).系统中提供了多个命令用于输入特殊的矩阵:上面函数的具体用法,可以用帮助命令help得到。
Matlab实验三答案
Matlab实验三答案实验三 MATLAB语言的程序设计一、实验目的:1、熟悉MATLAB程序编辑与设计环境2、掌握各种编程语句语法规则及程序设计方法3、函数文件的编写和设计4、了解和熟悉跨空间变量传递和赋值二、实验基本知识:1、程序流程控制语句for循环结构语法:for i=初值:增量:终值语句1……语句nend说明:1.i=初值:终值,则增量为1。
2.初值、增量、终值可正可负,可以是整数,也可以是小数,只须符合数学逻辑。
while 循环结构语法:while 逻辑表达式循环体语句end说明:1、whiIe结构依据逻辑表达式的值判断是否执行循环体语勾。
若表达式的值为真,执行循环体语句一次、在反复执行时,每次都要进行判断。
若表达式的值为假,则程序执行end之后的语句。
2、为了避免因逻辑上的失误,而陷入死循环,建议在循环体语句的适当位置加break语句、以便程序能正常执行。
(执行循环体的次数不确定;每一次执行循环体后,一定会改变while 后面所跟关系式的值。
)3、while循环也可以嵌套、其结构如下:while逻辑表达式1循环体语句1while逻辑表达式2循环体语句2end循环体语句3endif-else-end分支结构if 表达式1语句1else if 表达式2(可选)语句2else(可选)语句3endend说明:1.if结构是一个条件分支语句,若满足表达式的条件,则往下执行;若不满足,则跳出if结构。
2.else if表达式2与else为可选项,这两条语句可依据具体情况取舍。
3.注意:每一个if都对应一个end,即有几个if,记就应有几个end。
switch-case结构语法:switch表达式case常量表达式1语句组1case常量表达式2语句组2……otherwise语句组nend说明:1.switch后面的表达式可以是任何类型,如数字、字符串等。
2.当表达式的值与case后面常量表达式的值相等时,就执行这个case后面的语句组如果所有的常量表达式的值都与这个表达式的值不相等时,则执行otherwise后的执行语句。
MATLAB应用实验指导书1234-结果
************************ MATLAB语言实验指导书************************中国矿业大学信息与电气工程学院2014年3月实验一 MATLAB 工作环境熟悉及基本运算一、实验目的:熟悉MATLAB 的工作环境,学会使用MATLAB 进行一些简单的运算。
掌握基本的矩阵运算及常用的函数。
二、实验内容:MATLAB 的启动和退出,熟悉MATLAB 的桌面(Desktop ),包括菜单(Menu )、工具条 (Toolbar )、命令窗口(Command Window)、历史命令窗口、工作空间(Workspace)等;完成一些基本的矩阵操作;学习使用在线帮助系统。
三、实验步骤:1、启动MATLAB ,熟悉MATLAB 的桌面。
2、在命令窗口执行命令完成以下运算,观察workspace 的变化,记录运算结果。
(1)(365-522-70) 3 = (2)area=pi*^2 =(3)已知x=3,y=4,在MATLAB 中求z :()232y x y x z -== 576 (4)将下面的矩阵赋值给变量m1,在workspace 中察看m1在内存中占用的字节数。
m1=⎥⎥⎥⎥⎦⎤⎢⎢⎢⎢⎣⎡11514412679810115133216 执行以下命令 >>m1( 2 , 3 )=10 >>m1( 11 )=6>>m1( : , 3 )= 3 10 6 15>>m1( 2 : 3 , 1 : 3 )=[ 5 11 10;9 7 6]>>m1( 1 ,4 ) + m1( 2 ,3 ) + m1( 3 ,2 ) + m1( 4 ,1)=34 (5)执行命令>>help abs查看函数abs 的用法及用途,计算abs( 3 + 4i )=5 (6)执行命令 >>x=0::6*pi; >>y=5*sin(x); >>plot(x,y)(7)运行MATLAB 的演示程序,>>demo ,以便对MATLAB 有一个总体了解。
实验三MATLAB的程序设计
end
ifk==0
Y=1;
elseifk==1&&n==1
Y=1;
elseifk<=n
Y=(n/k)*c(k-1,n-1);
end
程序测试:
>> c(0,0)
ans =
1
>> c(0,1)
ans =
1
>> c(3,4)
ans =
4
7,计算以下和式,并估计其求和公式以及验证:
functionY=s(n)
Y=0;
fork=1:n
Y=Y+k;
end
测试:
>> s(3)
ans =
6
functionY=s(n)
Y=0;
fork=1:n
Y=Y+k^2;
end
测试:
>> s(3)
ans =
14
functionY=s(n)
Y=0;
fork=1:n
Y=Y+k^3;
end
测试:
>> s(2)
4
>> Joseph0(7,4)
2
11,求出 之间的所有素数;
M函数文件:
functionout = nprimes(N)
A= [1:N];
A(1)=0;
i=2;
whilei<= floor(sqrt(N));
forj= 2:fix(N/i)
A(i*j) = 0;
end;
i = A(find(A>i,1));
实验三 多元函数的极值及Matlab实现
实验三多元函数的极值【实验目的】1.掌握MATLAB 软件有关的命令。
2.多元函数自由极值的求法3.多元函数条件极值的求法.【实验准备】1.计算多元函数的自由极值对于多元函数的自由极值问题,根据多元函数极值的必要和充分条件,可分为以下几个步骤:步骤1.定义多元函数),(y x f z =步骤2.求解正规方程0),(,0),(==y x f y x f y x ,得到驻点步骤3.对于每一个驻点),(00y x ,求出二阶偏导数,,,22222yz C y x z B x z A ∂∂=∂∂∂=∂∂=步骤4.对于每一个驻点),(00y x ,计算判别式2B AC −,如果02>−B AC ,则该驻点是极值点,当0>A 为极小值,0<A 为极大值;,如果02=−B AC ,判别法失效,需进一步判断;如果02<−B AC ,则该驻点不是极值点.2.计算二元函数在区域D 内的最大值和最小值设函数),(y x f z =在有界区域D 上连续,则),(y x f 在D 上必定有最大值和最小值。
求),(y x f 在D 上的最大值和最小值的一般步骤为:步骤1.计算),(y x f 在D 内所有驻点处的函数值;步骤2.计算),(y x f 在D 的各个边界线上的最大值和最小值;步骤3.将上述各函数值进行比较,最终确定出在D 内的最大值和最小值。
3.函数求偏导数的MATLAB 命令MATLAB 中主要用diff 求函数的偏导数,用jacobian 求Jacobian 矩阵。
diff(f,x,n)求函数f关于自变量x的n阶导数。
jacobian(f,x)求向量函数f关于自变量x(x也为向量)的jacobian矩阵。
可以用help diff,help jacobian查阅有关这些命令的详细信息【实验内容】例1:求函数z=sin(x)sin(y)sin(x+y)在0<x<pi/2,0<y<pi/2内的极大值.理论分析知:当X=pi/3y=pi/3z有极大值3/8*3^(1/2)Matlab程序:%定义二元函数clc;clear;syms x y;z=sin(x)*sin(y)*sin(x+y);ezsurf(x,y,z,[0,pi/2,0,pi/2]);%求解驻点dzx=diff(z,x)dzy=diff(z,y)[xx,yy]=solve('cos(x)*sin(y)*sin(x+y)+sin(x)*sin(y)*cos(x+y)=0',...'sin(x)*cos(y)*sin(x+y)+sin(x)*sin(y)*cos(x+y)=0','x','y')%对于定义域内的驻点求解二阶偏导函数A=diff(z,x,2);B=diff(diff(z,x),y);C=diff(z,y,2);D=A*C-B^2;%判别极大值点D1=subs(subs(D,'x',xx(1)),'y',yy(1))A1=subs(subs(A,'x',xx(1)),'y',yy(1))D2=subs(subs(D,'x',xx(2)),'y',yy(2))A2=subs(subs(A,'x',xx(2)),'y',yy(2))%极大值点和极大值[xx(2)yy(2)]JDZ=subs(subs(z,'x',xx(2)),'y',yy(2))程序运行结果ans=[1/3*pi,1/3*pi]JDZ=3/8*3^(1/2)例2函数32824−+−=y xy x z 的极值点和极值求函数32824−+−=y xy x z 的极值点和极值.首先用diff 命令求z 关于x,y 的偏导数>>clear;syms x y;>>z=x^4-8*x*y+2*y^2-3;>>diff(z,x)>>diff(z,y)结果为ans =4*x^3-8*yans =-8*x+4*y 即.48,843y x yz y x x z +−=∂∂−=∂∂再求解正规方程,求得各驻点的坐标。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
2caxbxyc,a,b画出函数,分别用脚本文件和函数文件实现以下功能:输入参数的图像;1.
x1,x0f(x)1,1x1x)f(x,的函数值,其中2.编程实现:输入计的值,算函数并计算2,xx1f(0.7),f(0.5),f(1.5)
3.编写一个函数mylog(n,x)来计算实数x的对数,其中,当n取10,计算以10为底的对数;当n取2时,计算以2为底的对数,当n取3时,计算以自然底数为底的对数,当n取其它数时候,用换底公式进行计算。
桂林电子科技大学数学与计算科学学院实验报告
院(系)
数学与计算科学
学号
姓名
成绩
课程名称
数学应用软件实验
实验项目称名
实验三MATLAB的程序设计
一,实验目的
1.掌握建立与编辑函数文件和脚本文件的方法;
2.掌握MATLAB编程语言的基本控制语句;
3.掌握MATLAB程序的调试。
二,实验原理
MATLAB有三种基本程序结构:顺序、选择和循环。主要的语句有if语句、switch语句、for循环语句和while循环。
四,实验结果分析或总结
2cbxyaxca,b,分别用脚本文件和函数文件实现以下功能:1.输入参数画出函数,的图像;脚本文件:)M(1a=input('a=');
b=input('b=');
c=input('c=');
x=[-5:5/1000:5];
y=a.*x.^2+b.*x+c;
plot(x,y)
1~N之间的所有素数;11,求出
12,求出所有的水仙花数(所谓水仙花数,是满足以下条件的三位数:各位数的立方之和等于它333153153;本身,例如,)2*3*3*590,将一个正整数进行质因数分解,例如:;13nm,的最小公倍数和最大公因数;14,求两个正整数15,有一个已排好序的数组,现在输入一个数,请按照原来的规律将此数插入到数组中;16,将一个数组逆序输出;
函数文件一旦创建,就可以与其它的MATLAB函数一样调用了。
5.程序的调试
在程序调试时,程序运行中变量的值为一个重要的线索。因此,查看变量值为程序调试的重要线索,由于在函数调用时只返回最后的输出参数,而不返回中间变量,因此,可以选择下面的方法查看程序运行中的变量值。
(1)通过分析后,将可能出错的语句后面的分号(;)删除,将结果显示在命令窗口中,与预期值进行比较;
(2)利用函数disp显示中间变量的值;
(3)在程序中的适当位置添加keyboard指令。当MATLAB执行至此处时将暂停,等待用户反应。当程序运行至此时将暂停,在命令窗口中显示k>>提示符,用户可以查看工作区中的变量,可以改变变量的值。输入return指定返回程序,继续运行。
(4)在调试一个单独的函数时,可以将函数改写为脚本文件,此时可以直接对输入参数赋值,然后以脚本方式运行该M文件,这样可以保存中间变量,在运行完成后,可以查看中间变量的值,对结果进行分析,查找错误所在。
break:与continue相同的是,break函数也是用于循环控制,中断当前循环。与continue不同,break跳出当前循环,不再执行该循环的任何操作。
return:结束该程序的执行,返回到调用函数或者键盘。
4.创建M文件
M文件以.m为扩展名,它有两种形式:脚本文件和函数文件。
(1)脚本文件的创建
1.选择结构
(1) if语句:
if条件表达式
执行语句
elseif条件表达式
执行语句
end
(2) switch语句
switch表达式
case表达式
执行语句
case表达式
执行语句
…………….
otherwise
执行语句
end
2.循环结构
(1) for循环
for循环变量=表达式
执行语句
end
其中表达式是一个矩阵,矩阵的列被一个一个的赋给循环变量,然后执行循环体内的语句。
n1n1)...(1234)s(n编程实现求和:4.
1111n11)((sn)1...234n
!n2!S(n)1!...计算和式5. 1000时,退出;,当和大于
n!nkk1CC,用递归实现;6.计算组合数1nnk!(nk)!k7,计算以下和式,并估计其求和公式以及验证:
nn...12()
结果输入:>> lx11
a=1
b=1
c=1
>>
图像:
函数文件:2)M(function lx12(a,b,c)
x=[-5:5/1000:5];
y=a.*x.^2+b.*x+c;
plot(x,y)
1kn33333n2...S(n)3k1
k18,估计以下级数的和,并编程验证。
11111...S...!3!n!1!2!k1k11111...S...1)(kk1)122n(334n1k
11kk1)11(1)1(S......11k315722k1k9,画一个国际象棋的棋盘;
1,2,3,...,NM(MN)N1号开始报数,报到10,给个人编上号:,按顺序围成一个圈坐好,从1开始往下报数,重复这个过程,请问最后剩下的那个人的号数是多少?的人退出,下一个人再从N10,M3进行验证;请编程实现,并取
(2) while循环
条件表达式while
执行语句
End
3.其它流程控制函数
continue:continue语句通常用在循环控制中,包括for循环和while循环,用于结束当次循环,继续执行下一次循环,但是不结束当前循环。一般continue语句与if语句相结合,当满足一定的条件时,执行continue语句。
进入MATLAB命令窗口后,选择“File”下拉菜单中的“new”选择“M-file”,或在MATLAB命令窗口输入“edit M文件名”,或点击工具栏中的“新建”按钮。在M文件编辑窗口中,写入符合语法规则的。编写完命令文件后,选择“file”下拉式菜单中的“save”项,然后依提示输入一个文件名。至此,完成了脚本文件的创建。
(2)函数文件的创建
函数文件的创建与脚本文件的创建方法完全一样,只是在函数文件的第一句可执行语句必须是function引导的定义语句,并且输入文件名时要与定义语句中的函数名相同。
(3)脚本文件与函数文件的调用
创建了脚本文件后,只在命令窗口键入脚本文件名,再按回车键,就可以执行脚本文件中所包含的所有命令。