matlab 第二课

第二讲MATLAB程序设计

MATLAB有两种工作方式:交互式的命令行工作方式M文件的程序工作方式

一. M文件

用MATLAB语言编写的程序,称为M文件。M文件有两类:命令文件和函数文件。

命令文件:没有输入参数,也不返回输出

参数。

函数文件:可以输入参数,也可返回输出

参数。

1.M文件的建立与编辑

建立新的M文件:

从MATLAB命令窗口的File菜单中选择New菜单项,再选择M-file命令。

编辑已有的M文件:

从MATLAB命令窗口的Flie菜单中选择Open M-file命令。

2.命令文件

将需要运行的命令编辑到一个命令文件中,然后在MATLAB命令窗口输入该命令文件的名字,就会顺序执

行命令文件中的命令。

【例1】建立一个命令文件将变量a,b的值互

换。

e31.m文件:

a=1:9;

b=[11,12,13;14,15,16;17,18,19];

c=a;a=b;b=c;

a

b

在MATLAB的命令窗口中输入e31,将会执行该命令文件。

二.数据的输入输出

1. input函数:用于向计算机输入一个参数。调用格式:A=input(提示信息,选项);

注:‘s’选项,则允许用户输入一个字符串。

例如想输入一个人的姓名,可采用命令

xm=input('What''s your name:','s')

【例2】求一元二次方程a2+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)]

将该程序以aa.m文件存盘,然后运行aa.m文件。

2.pause函数:暂停程序的执行。

调用格式:pause(延迟秒数)

注:如果省略延迟时间,直接使用pause,则将暂停程序,直到用户按任一键后程序继续执行。

3.disp函数:命令窗口输出函数。

调用格式:disp(输出项)

注:输出项为字符串或矩阵。

例如

A='Hello,MATLAB';

disp(A)

输出为:Hello,MATLAB

三.程序设计

(一)选择结构

选择结构的语句有if语句和switch语句。1.if语句

格式一:if条件

语句组

end

格式二:if条件

语句组1

else

语句组2

end

(一)选择结构

格式三:if条件1

语句组1

elseif条件2

语句组2

……

elseif条件m

语句组m

else

语句组m+1

end

(一)选择结构

【例4】输入三角形的三条边,求面积。

A=input('请输入三角形的三条边:');

if A(1)+A(2)>A(3)&A(1)+A(3)>A(2)&A(2)+A(3)>A(1) p=(A(1)+A(2)+A(3))/2;

s=sqrt(p*(p-A(1))*(p-A(2))*(p-A(3)));

disp(s);

else

disp('不能构成一个三角形。')

end

运行:请输入三角形的三条边:[456]

9.9216

(一)选择结构

【例5】输入一个字符,若为大写字母,则输出其后继字符,若为小写字母,则输出其前导字符,若为其他字符则原样输出。

c=input('','s');

if c>='A'&c<='Z'

disp(setstr(abs(c)+1));

elseif c>='a'&c<='z'

disp(setstr(abs(c)-1));

else

disp(c);

end

(一)选择结构

【例6】根据变量num 的值来决定显示的内容。num=input('请输入一个数');

switch num

case-1

disp('I am a teacher.');

case0

disp('I am a student.');

case1

disp('You are a teacher.');

otherwise

disp('You are a student.');

end

(二)循环结构

实现循环结构的语句:for语句和while语句。

1.for语句:

格式:for循环变量=表达式1:表达式2:表达式3循环体语句

end

注:其中表达式1的值为循环变量的初值,表达式2的值为步长,表达式3的值为循环变量的终值。步长为1时,表达式2可以省略。

(二)循环结构

2.while语句

格式为:

while(条件)

循环体语句

end

【例7】根据例3.6中求y的表达式,求:

(1)y<3时的最大n值。

(2)与(1)的n值对应的y值。

(二)循环结构

求y的表达式

y=0;i=1;

while1%循环的条件为1,即循环条件总是满足的,这是一个永真循环f=1/(2*i-1);

y=y+f;

if y>3

break;

end

i=i+1;

end

n=i-1

y=y-f

(二)循环结构

3.循环的嵌套

如果一个循环结构的循环体又包括一个循环结构,就称为循环的嵌套,或称为多重循环结构。

多重循环的嵌套层数可以是任意的。可以按照嵌套层数,分别叫做二重循环、三重循环等。处于内部的循环叫作内循环,处于外部的循环叫作外循环。

MATLAB第二次上机实验报告

电子科技大学电子工程学院标准实验报告(实验)课程名称MATLAB与数值分析 学生姓名: 学号: 指导教师:

一、实验名称 实验二 线性方程组求解和函数的数值逼近 二、实验目的 通过上机实验,使学生对病态问题、线性方程组求解和函数的数值逼近方法有一个初步的理解。 实验涉及的核心知识点:病态方程求解、矩阵分解和方程组求解、Lagrange 插值。 实验重点与难点:算法设计和MATLAB 编程 三、实验内容 1. 对高阶多项式 ()()() ()()20 1 1220k p x x x x x k ==---=-∏ 编程求下面方程的解 ()190p x x ε+= 并绘图演示方程的解与扰动量ε的关系。 2. 对2 20n =,生成对应的Hilbert 矩阵,计算矩阵的条件数;通过先确定解获得常向量 b 的方法,确定方程组 ()n H x b = 最后,用矩阵分解方法求解方程组,并分析计算结果。 3. 对函数 ()2 1 125f x x = + []1,1x ∈- 的Chebyshev 点 ()()21cos 21k k x n π ?? -= ? ?+? ? ,1,2,,1k n =+ 编程进行Lagrange 插值,并分析插值结果。 四、实验数据及结果分析 1. 对高阶多项式

()()() ()()20 1 1220k p x x x x x k ==---=-∏ 编程求下面方程的解 ()190p x x ε+= 并绘图演示方程的解与扰动量ε的关系。 p=[1,-1]; for i=2:20 n=[1,-i]; p=conv(p,n); % 求多项式乘积 end m=zeros(1,21); % m 的最高次幂为20,有21项 hold on x=1:20; d=[-1,0,0.1,0.5,1]; for i=1:5 delt=d(i); m(2)=delt; y=(roots(p+m))'; % 求多项式的根 plot(x,y,'-o','color',[i/5,i/20,i/10]); end title('方程p(x)=0的解与扰动量delt 的关系') legend('delt=-1','delt=0','delt=0.1','delt=0.5','delt=1') 2468101214161820 010 20 30 40 50 60 方程p(x)=0的解与扰动量delt 的关系 delt=-1delt=0delt=0.1delt=0.5delt=1

第2讲 matlab的数值分析

第二讲MATLAB的数值分析 2-1矩阵运算与数组运算 矩阵运算和数组运算是MATLAB数值运算的两大类型,矩阵运算是按矩阵的运算规则进行的,而数组运算则是按数组元素逐一进行的。因此,在进行某些运算(如乘、除)时,矩阵运算和数组运算有着较大的差别。在MATLAB中,可以对矩阵进行数组运算,这时是把矩阵视为数组,运算按数组的运算规则。也可以对数组进行矩阵运算,这时是把数组视为矩阵,运算按矩阵的运算规则进行。 1、矩阵加减与数组加减 矩阵加减与数组加减运算效果一致,运算符也相同,可分为两种情况: (1)若参与运算的两矩阵(数组)的维数相同,则加减运算的结果是将两矩阵的对应元素进行加减,如 A=[1 1 1;2 2 2;3 3 3]; B=A; A+B ans= 2 2 2 4 4 4 6 6 6 (2)若参与运算的两矩阵之一为标量(1*1的矩阵),则加减运算的结果是将矩阵(数组)的每一元素与该标量逐一相加减,如 A=[1 1 1;2 2 2;3 3 3]; A+2 ans= 3 3 3 4 4 4 5 5 5 2、矩阵乘与数组乘 (1)矩阵乘 矩阵乘与数组乘有着较大差别,运算结果也完全不同。矩阵乘的运算符为“*”,运算是按矩阵的乘法规则进行,即参与乘运算的两矩阵的内维必须相同。设A、B为参与乘运算的 =A m×k B k×n。因此,参与运两矩阵,C为A和B的矩阵乘的结果,则它们必须满足关系C m ×n 算的两矩阵的顺序不能任意调换,因为A*B和B*A计算结果很可能是完全不一样的。如:A=[1 1 1;2 2 2;3 3 3]; B=A;

A*B ans= 6 6 6 12 12 12 18 18 18 F=ones(1,3); G=ones(3,1); F*G ans 3 G*F ans= 1 1 1 1 1 1 1 1 1 (2)数组乘 数组乘的运算符为“.*”,运算符中的点号不能遗漏,也不能随意加空格符。参加数组乘运算的两数组的大小必须相等(即同维数组)。数组乘的结果是将两同维数组(矩阵)的对应元素逐一相乘,因此,A.*B和B.*A的计算结果是完全相同的,如: A=[1 1 1 1 1;2 2 2 2 2;3 3 3 3 3]; B=A; A.*B ans= 1 1 1 1 1 4 4 4 4 4 9 9 9 9 9 B.*A ans= 1 1 1 1 1 4 4 4 4 4 9 9 9 9 9 由于矩阵运算和数组运算的差异,能进行数组乘运算的两矩阵,不一定能进行矩阵乘运算。如 A=ones(1,3); B=A; A.*B ans= 1 1 1 A*A ???Error using= =>

(完整版)第二讲Matlab编程与作图

第二讲Matlab编程与作图 第一部分Matlab程序设计初步 Matlab除了指令行操作的直接交互外,作为一种高级应用软件还提供了自己的编程语言。通过编写Matlab程序,可以更加方便地调用Matlab提供的各种功能强大的函数库,使得程序能完成复杂的运算处理大量的数值数据。 1、M文件简介 Matlab提供了丰富的编程语言,使得用户可以将一连串的命令写入文件,然后使用简单的函数来执行这些命令。文件被保存为文本文件,后缀为.m,比如说dblquad.m,因此Matlab的程序通常被称为M 文件。 M文件是一个文本文件,可以使用各种文本编辑器对它进行编辑和修改,比如Windows操作系统自带的记事本,也可以用Matlab 内建的M文件编辑器。 M文件分为两类,一类称为脚本(Scripts),类似于批处理文件,相当于将在Matlab命令窗口中执行的一系列指令放在一个文件中,当在命令窗口调用该文件名时,则按顺序执行其中的命令集。 例2.1:编写求10!的程序。 n=10;s=1; for k=1:n s=s*k; end

disp(s) %disp:MATLAB中的命令,表示只显示结果,不显示变量名。 另一类M文件称为函数(Function),它可以接受输入变量,并将运算结果送至输出变量,类似于数学中的函数y=f(x)。 函数M文件的基本结构: function f=fact(n) 函数定义行 %Compute a factorial value. 计算阶乘的值 %FACT(N) returns the factorial of N, 帮助文档 %usually denoted by N! %Put simply,FACT(N) is PROD(1:N), 注释 f=prod(1:n); 函数体 例2.2:编写分段函数 21 () 1 -1<1 321 x x f x x x x ?> ? =≤ ? ?+≤- ? %myfun1.m function y=myfun1(x) y=(x.^2).*(x>1)+(x>-1& x<=1)+(3+2*x).*(x<=-1); 注意:1.函数名与变量名的命名法则相同,要求以字母开头,后接字母或下划线;2.函数名与保存的文件名最好一致。 2、控制流 所有的计算机编程语言都提供了控制程序流执行程序的语法,Matlab也不例外。所有的控制流语法都以end 结尾。

哈工大MATLAB选修课第2次小作业

1. 表1 用三次样条方法插值计算0-90 度内整数点的sin 值和0-75 度内整数点的正切值,然后用5 次多项式拟合方法计算相同的函数。 a(度)0 15 30 45 60 75 90 Sin(a)0 0.2588 0.5000 0.7071 0.8660 0.9659 1.0000 tan(a)0 0.2679 0.5774 1.0000 1.7320 3.732 解:分别对应的程序如下: 正弦函数: x = pi*(0:90)/180; y = sin(x); xx = pi*(0:.25:90)/180; yy = spline(x,y,xx); plot(x,y,'o',xx,yy) 正切函数: x = pi*(0:75)/180; y = tan(x); xx = pi*(0:.25:75)/180; yy = spline(x,y,xx); plot(x,y,'o',xx,yy)

正弦拟合: figure x=pi*(0:15:90)/180; y=[0,0.2588,0.5,0.7071,0.866,0.9659,1.0]; xx=pi*(1:0.05:90)/180; p2=polyfit(x,y,5); yy=polyval(p2,xx); plot(x,y,'-ro',xx,yy); 正切拟合: figure x=pi*(0:15:75)/180; y=[0,0.2679,0.5774,1,1.732,3.732]; xx=pi*(1:0.05:75)/180; p2=polyfit(x,y,5); yy=polyval(p2,xx); plot(x,y,'-ro',xx,yy); legend('描点显示','五次拟合')

第二讲_MATLAB图形处理

常用的数学函数 acos(x)———反余弦函数cos(x)———余弦函数 acot(x)———反余切函数cot(x)———余切函数 asin(x)———反正弦函数sin(x)———正弦函数 atan(x)———反正切函数tan(x)———正切函数 exp(x)———自然指数函数pow2(x)———以2为底的指数函数 log(x)———自然对数函数sqrt(x)———根号函数 log2(x)———以2为底的对数函数floor(x)———向下取整数 log10(x)———以10为底的对数函数ceil(x)———向上取整数 mod(x)———x对y的模round(x)———四舍五入函数 rem(x,y)———x除以y的余数sign(x)———符号函数 3.2.7选择输出格式 MA TLAB中的所有计算都是以双精度方式完成的,但是显示输出可以是具有4个小数位的定点输出。例如,对于向量x = [1/3 0.00002] MA TLAB有下列输出:x= 0.3333 0.0000 如果在矩阵中至少有一个元素不是严格的整数,则有4种可能的输出格式。显示的输出量可以利用下列命令加以控制: format short format long format short e format long e 一旦调用了某种格式,则这种被选用的格式将保持,直到对格式进行了改变为止。 format short和format long是经常采用的格式。一旦调用了MATLAB,即使没有输入格式命令,MATLAB 也将以format short格式显示数值结果。如果矩阵或向量的所有元素都是严格的整数,则format short和format long的结果是相同的。 MA TLAB操作桌面的file菜单中打开preferences窗口,选择命令窗口界面,就可以方便地进行格式选择。注:复数和复数矩阵(Complex and complex matrix) 复数用特殊字符i或j 表示。i=sqrt(-1), 其值在工作空间显示为0+1.0000i. 例:输入 z=3+4i 或z=3+4j 结果一样。 MA TLAB 中复数有下面的语句生成办法: z=a+b*i 或z=r*exp(i*θ)其中r为复数的模,θ为复数辐角的弧度数。 复数的两种输入方法:

matlab第二次

Matlab素质拓展课第二次作业 第二次课知识点if 选择语句for while 循环语句子函数(多个输入参数输出参数) 递归二分法秦九韶算法等 3.3 写一个名为nexthour的函数,接收一个整数参数,该参数是一天内的某个小时,然后返回下一个小时。假定是12小时制,所以例子中12的下一个小时是1. % 3.3 写一个名为nexthour的函数, % 接收一个整数参数,该参数是一天内的某个小时,然后返回下一个小时。 % 假定是12小时制,所以例子中12的下一个小时是1. function y=nexthour(n) if n>=1&&n<=11 y=n+1; elseif n==12 y=1; else y=-1; disp('输入错误!'); end end 3.6 写一个脚本,提示用户输入分数的分子和分母。如果分母是0,则打印错误信息,指出0不能做分母。如果分母不是0,则打印分数的结果。 % 3.6 写一个脚本,提示用户输入分数的分子和分母。 % 如果分母是0,则打印错误信息,指出0不能做分母。 % 如果分母不是0,则打印分数的结果。 clc; clear; fenzi=input('请输入分子:'); fenmu=input('\n请输入分母:'); if fenmu==0 disp('打印错误!分母不能为0!') else fprintf('分数=%d/%d\n',fenzi,fenmu); end 3.11 写一个函数createMToN,它能够创建并返回一个从m到n的整数组成的向量(m是第一个输入参数,n是第二个),不管m是小于n还是大于n。如果m等于n,该向量正好是1*1的,或者说是标量。 %dy_chapter3_11.m cerateMToN function vec=dy_chapter3_11(m,n) if m>n vec=m:-1:n; elseif m vec=m:n; else vec=m;

92598-MATLABSimulink——北航——第二次课2

第二章MATLAB在数值分析中的应用 董素君 新主楼C-503 dsj@https://www.360docs.net/doc/983647617.html,

思考题 进行下列计算,给出不使用for 和while 等循环语句的计算方法; 1 . 2.求出y=x*sin(x) 在0> sum(2.^[0:63]) a ns = 1.8447e+019 >> x=0.01*pi:0.01*pi:32*pi; >> y=x.*sin(x); >> plot(x,y) >> hold on >> grid max sort

主要内容 1.1 MATLAB环境 1.2 基本程序元素 1.3 数据类型及常用函数 1.4 矩阵 1.5 字符串数组 1.6 程序设计 1.7 图形可视化 1.8 MATLAB在数值分析中的应用 1.9 图形用户界面GUI开发

多项式 使用降幂系数的行向量表示,如 多项式表示为:p=[1 -12 0 25 116] roots :求多项式等于0的根,根用列向量表示 poly :已知多项式的根,构建相应多项式 polyval(p,n):求多项式函数值 polyder(p):求多项式的微分多项式116 25012234+++?x x x x 》p=[1 -12 0 25 116] 》r=roots(p) r = 11.7473 2.7028 -1.2251 + 1.4672i -1.2251 -1.4672i 》p=poly(r) p = 1 -1 2 -0 25 116》a=[1 2 3] ; 》polyval(a,2)ans =11》polyder(a) ans = 2 2

MatLab2第二讲MatLab图形绘制功能

MatLab & 数学建模 第二讲MatLab图形绘制功能一、二维平面图形 基本绘图函数 hold on 命令用于在已画好的图形上添加新的图形

plot是绘制一维曲线的基本函数,但在使用此函数之前,我们需先定义曲线上每一点的x及y座标。下例可画出一条正弦曲线: x=0:0.001:10; % 0到10的1000个点的x座标 y=sin(x); % 对应的y座标 plot(x,y); % 绘图 Y=sin(10*x); plot(x,y,'r:',x,Y,'b') % 同时画两个函数

?若要改变颜色,在座标对後面加上相关字串即可: x=0:0.01:10; plot(x,sin(x),'r') 若要同时改变颜色及图线型态(Line style),也是在坐标对後面加上相关字串即可: plot(x,sin(x),'r*')

用axis([xmin,xmax,ymin,ymax])函数来调整图轴的范围 axis([0,6,-1.5,1]) MATLAB也可对图形加上各种注解与处理: xlabel('x轴'); % x轴注解 ylabel('y轴'); % y轴注解 title('余弦函数'); % 图形标题 legend('y = cos(x)'); % 图形注解 gtext('y = cos(x)'); % 图形注解 ,用鼠标定位注解位置 grid on; % 显示格线 fplot的指令可以用来自动的画一个已定义的函数分布图,而无须产生绘图所须 要的一组数据做为变数。其语法为fplot('fun',[xmin xmax ymin ymax]),其中fun 为一已定义的函数名称,例如sin, cos等等;而xmin, xmax, ymin, ymax则是设定绘图横轴及纵轴的下限及上限。

Matlab第二次实验报告

Matlab第二次实验报告 实验目的: 1、了解plot函数和subplot函数的基本用法和matlab绘图的基本原理。 2、了解图形的属性设置。比如画图的颜色,画图采用的线性标识符等。 二:实验基本知识 1: 1. 单窗口单曲线绘图; 2. 单窗口多曲线绘图; 3. 单窗口多曲线分图绘图; 4. 多窗口绘图; 5.可任意设置颜色与线型; 6.图形加注功能; 7.fplot——绘制函数图函数; 8.ezplot——符号函数的简易绘图函数 9:subplot—将画图区域分块函数。

实验内容: 将高数课本后的18个图画出 上机练习程序 第1——6图: clear,clc a=input('??ê?è?aμ??μ£o') figure(1); x=-50:1:50; y=a.*x.^3; subplot(3,2,1); plot(x,y,'r'); title('y=a*x^3'); xlabel('X'); ylabel('Y'); x=0:1:50; y=sqrt(a.*x.^3); subplot(3,2,2); plot(x,y,x,-y,'r'); title('y^2=a*x^3'); xlabel('X'); ylabel('Y'); x=-3:0.1:3; y=exp(-x.^2); subplot(3,2,3); plot(x,y,'r'); title('y=e^x^2'); xlabel('X'); ylabel('Y'); x=-3:0.1:3; y=8*a^3./(x.^2+4*a^2); subplot(3,2,4); plot(x,y,'r'); title('y=8*a^3./(x.^2+4*a^2)'); xlabel('X');

matlab第二次实验报告

《数学建模实验》上机实验报告 班级:计算机35班 学号:2130505099 姓名:田博文

【实验一】 一上底面半径2米、下底面半径4米、高4米的圆台形水池内盛满了水,由池底一横截面积为0.001平方米的小孔放水。求在任意时刻的水面高度和将水放空所需的时间。 一、问题分析: 在dt很小一段时间内,水的流速v可以看成是不变的与水面高度h有关的函数,即v=gh 2; 在dt时间内流出的水量,可以近似的为一圆柱, 对应的圆柱高为dh; 由于容器下降的水量与流出的水量相等,令小孔面积为b, 即dV=π2r dh=bvdt; 可得dh与dt的关系为:dh=bvdt/(π2r); 根据相似三角形原理可得, r=4-h/2; 初始条件有; h(0)=4; 为表示方便,引入变量L=4-h 故r=2+L/2 二、代码: T=0; for L=0:0.001:4-0.001 %选取积分微元为0.001,即dh V=0.001*pi*(2+(1/2*L))^2; %水面处的dV,b=0.001 t=V/(sqrt(2*(4-L)*9.8)*0.001) %dV与dt关系 T=T+t;

plot(T,(4-L),'red'); hold on end 三、运行结果:

四、结论: 在任意时刻的水面高度和将水放空所需的时间如上图红线所示,横轴为时间,纵轴为水面高度。 【实验二】 有A、B、C三个场地,每一个场地都出产一定数量的原料,同时也消耗一定数量的产品,具体数据如下表所示。已知制成每吨产品需要消耗3吨原料,A、B两地,A、C两地和B、C两地之间的距离分别为150千米、100千米和200千米,假设每万吨原料运输1千米的运费为5000元,每万吨产品运输1千米的运费为6000元。由于地区条件的差异,在不同地区设厂的费用不同,由于条件的限制,在B处建厂的规模不能超过5万吨,问:在这三地如何建厂、规模建多大才能使得总费用最小?

相关文档
最新文档