MATLAB上机内容及作业

MATLAB上机内容及作业
MATLAB上机内容及作业

无约束优化求解函数fminsearch和fminunc

求解无约束非线性优化问题的函数有fminsearch 函数、fminunc函数。函数fminsearch和fminunc功能相同,但fminunc函数可以得到目标函数在最优解处的梯度和Hessian矩阵值。

无约束优化数学模型为:

min f(X) X∈R n

求解无约束非线性优化问题的步骤为:

第一步:先编写目标函数的M文件;第二步:再在命令窗口中调用相应的优化函数。

1、fminsearch函数调用格式为

[x, fval]=fminsearch(@myfun, x0)

输出参数的含义:

x:返回最优解的设计变量的值;

fval:在最优设计变量值时,目标函数的最小值;

exitflag:返回算法终止的标志,有以下几种情况,>0 表示算法收敛于最优解处;=0 表示算法已经达到迭代的最大次数;<0 表示算法不收敛。

output:返回优化算法信息的一个数据结构,有以下信息:

output.iteration 表示迭代次数

output.algorithm 表示所采用的算法

output.funcCount 表示函数评价次数

输入参数的含义:

@myfun:目标函数的M文件,在其前要加“@”,或表示为'myfun' ,myfun自己可以任意命名;

x0:在调用该优化函数时,需要先对设计变量赋一个初始值;

2、fminunc函数的调用格式

[x, fval]=fminunc (@myfun, x0)

grad:返回目标函数在最优解处的梯度信息;hessian:返回目标函数在最优解处的hessian矩阵信息。其余含义同上。

3、实例

已知某一优化问题的数学模型为:

min f(X)=3x12+2x1x2+x22X∈R n

用MA TLAB程序编写的代码为:

第一步:首先编写目标函数的.m文件,并保存为examplefsearch.m文件(先单击file菜单,后点击New 命令中的M—file,即可打开M文件编辑窗口进行代码的编辑,在英文状态下输入程序代码),代码为:function f=examplefsearch(x)

f=3*x(1)^ 2+2*x(1)*x(2)+x(2)^2;

第二步:在Command窗口中调用fminsearch函数,代码为:

x0=[1;1]; %赋初值

[x,fval]=fminsearch(@examplefsearch,x0) %回车即可调用fminsearch函数,得到结果

输出最优解结果为:

x=

1.0e-0.08* -0.7914 0.2260 %分别为x1和x2的最优点的值(近似为0)

fval=

1.5722e-016 %对应最优点的最优目标函数值(近似为0)4、作业

已知几个优化问题的数学模型分别为:

(1)min f(X)=0.1935x1 x22 x32(4+6x4) X∈R4

(2)min f(X)= (x13+cos x2+log x3)/ e x1 X∈R3

(3)min f(X)=2x13+4x1x23 -10x1x2+x33X∈R3

试用MATLAB编程分别求解上述优化问题的最优解。(分别把步骤、代码、结果写在另一张纸上,作为作业交)

其中cos x2在MA TLAB应写为cos(x(2));log x3应为log(x(3));e x1应为exp(x(1))。

min f(X) =f T*X X∈R n

s.t. A*X≤b

Aeq* X =beq

lb≤X≤ub

上式中,f:表示目标函数中变量的系数向量,为列向量;

A:表示所有线性不等式约束的系数矩阵;

b:为所有线性不等式约束的不等式右面常数向量,为列向量;

Aeq:表示所有线性等式约束的系数矩阵;

beq:为所有线性等式约束的等式右面常数向量,为列向量;

lb和ub:分别表示为变量的上下限,为列向量。

2、linprog函数的调用格式

调用格式如下:

[x,fval]= linprog (f, A,b, Aeq,beq,lb,ub)

上式中,A、b、Aeq、beq、lb、ub、x0、options均为可选项,如果数学模型中无该项参数,则用[]代替。例如如果某一数学模型中没有等式约束,即无Aeq和beq参数,则调用的格式为:

[x,fval]= linprog (f, A,b, [],[],lb,ub)

用linprog函数求解线性规划问题时,直接在MA TLAB软件的Command窗口中调用,先将各个输入参数在Command窗口中赋值后,即可调用linprog函数。

3、实例

求使目标函数f(x)= -5 x1- 4 x2-6 x3 取最小值时的x 的值,且满足约束条件为:x1-x2+x3≤20

3x1+2 x2+4x3≤42

3x1+2 x2≤30

x1≥0,x2≥0,x3≥0

直接在MA TLAB的Command窗口输入下列代码,即可求解,过程如下:

f=[-5; -4; -6];

A=[1, -1, 1; 3 , 2 , 4 ; 3 , 2 ,0];

b=[20 ; 42; 30];

lb=zeros(3,1);

[x,fval,exitflag,output]= linprog (f, A,b, [],[],lb,[],[])

结果输出为:

x=0.000

15.000

3.000

fval=-78.000

4、作业

用linprog函数求下列数学模型的最优解。

min f(X)= -7 x1- 5 x2

s.t. 3x1+x2≤90

4x1+6 x2≤200

x1≤20

x2≤30

x1≥0,x2≥0

min f(X) =1/2*X T*H*X+f T *X X ∈R n s.t. A*X ≤b Aeq*x=beq lb ≤x ≤ub

上式中,H :表示目标函数中变量的二次项的系数矩阵;其余参数同linprog 函数中的含义。 2、quadprog 函数的调用格式

调用格式如下: [x,fval]= quadprog (H ,f, A ,b, Aeq,beq,lb,ub)

上式中,A 、b 、Aeq 、beq 、lb 、ub 均为可选项,如果数学模型中无该项参数,则用[]代替。 例如如果某一数学模型中没有等式约束,即无Aeq 和beq 参数,则调用的格式为: [x,fval]= quadprog (H ,f, A ,b, [],[],lb,ub) 用quadprog 函数求解二次规划问题时,直接在MA TLAB 软件的Command 窗口中调用,先将各个输入参数在Command 窗口中赋值后,即可调用quadprog 函数。 3、实例 求使目标函数f(x)= 1/2 x 12+x 22-x 1 x 2-2 x 1 -6 x 2 取最小值时的x 的值,且满足约束条件为: x 1+x 2≤2 -x 1+2 x 2≤2 2x 1+x 2≤3 x 1≥0,x 2≥0 首先把目标函数写成以下形式:f(X) =1/2*X T*H*X+f T *X ,其中 f(x)= 1/2 x 12+x 22-x 1 x 2-2 x 1 -6 x 2

=1/2(

x 12-x 1 x 2-x 2 x 1+2x 22)-2 x 1 -6 x 2

=[]??

??????????--+????????????--212121622111,21x x x x x x T

上式中H= ??

???

?--21

11

,f= ??

????--62

直接在MA TLAB 的Command 窗口输入下列代码,即可求解,过程如下: H=[1,-1;-1,2];

f=[-2; 6]; A=[1, 1,;-1 , 2 ;2 ,1]; b=[2 ; 2; 3]; lb=zeros(2,1); [x,fval]= quadprog (H,f, A,b, [],[],lb) 结果输出略。 4、作业 用quadprog 函数求下列数学模型的最优解。 min f(X)= x 12+x 22-10 x 1-16 x 2 +89 s.t. x 1-x 2+1≥0

x 1≥0

10-x 1≥0 x 2-1≥0 10-x 2≥0 x 2-x 1=0

四、MATLAB求解非线性优化问题的函数fmincon

1 、fmincon函数要求数学模型的形式

在MA TLAB优化工具箱中,用于求解非线性规划的函数有fmincon,要求的非线性规划的数学模型的一般形式为:

min f(X) X∈R n

s.t. A*X≤b

Aeq*x=beq

lb≤x≤ub

c(X) ≤0

ceq(X)=0

上式中,c(X):表示约束函数中的非线性不等式约束函数;ceq(X) 约束函数中的非线性等式约束函数。其他含义同linprog函数。

2、fmincon函数的调用格式

调用格式如下:

[x,fval]= fmincon (@objfun,x0, A,b, Aeq, beq, lb, ub, @nonlcon)

上式中,objfun为目标函数的m文件函数名,自己命名,引用时前面需要加句柄@,或用单引号‘’引用;x0为给变量赋的初值;nonlcon为非线性约束的m文件函数名,自己命名,引用时前面需要加句柄@,或用单引号‘’引用;A、b、Aeq、beq、lb、ub、x0、options的含义同线性规划函数linprog。

3、上机编制程序求解过程

第一步:先编制目标函数的.m文件,并保存;

第二步:编制非线性约束的.m文件,并保存;

第三步:在MA TLAB的Command窗口输入赋予x0的初值,以及线性约束、边界约束等输入参数的值后,即可调用fmincon函数,进行求解。

4、实例

求使目标函数f(X)= (x1-3)2+x2 2取最小值时的X 的值,且满足约束条件为:x1 2+x2-4≤0

x2-x1≤2

x1≥0,x2≥0

该问题是非线性规划问题,其约束条件中含有非线性约束,求解过程如下:

(1)先编制目标函数的m文件,并保存为myobjfun.m,代码如下:

function f=myobjfun(x)

f=( x(1) -3)^2+x(2)^2;

(2)编制非线性约束的.m文件,并保存为myconfun.m,代码如下:

function [c, ceq]= myconfun (x)

c =x (1) ^2+x(2)-4;

ceq =[];

(3)在MA TLAB的Command窗口输入下列代码,即可求解:

x0=[1; 1]; A=[-1 ,1]; b=[2]; Aeq=[ ]; beq=[ ]; lb=[0; 0]; ub=[ ];

[x,fval]= fmincon (@myobjfun,x0, A,b,Aeq,beq,lb,ub, @myconfun)

结果输出略。

5、作业

用fmincon函数求下列数学模型的最优解。

min f(X)=25/(x1 x23)s.t. 30/(x1 x23)-50≤0 10-4x1 x2≥0

2≤x1≤4

0.5≤x2≤1 min 3

2

1

)

(x

x

x

x

f-

=

s.t. 72

2

2

3

2

1

+

+

≤x

x

x

min f(X)=

2

1

2

1

2

2

2

1

5

2x

x

x

x

x

x-

-

-

+

s.t. 0

)1

(

2

2

1

+

-

-x

x

6

3

2

2

1

+

-x

x

min f(X)= x12+x22-10 x1-16 x2+89

s.t. x1-x2+1≥0

10-x1≥0

x2-1≥0

10-x2≥0

x2-x1=0

作业五:设计一圆柱螺旋压缩弹簧,参数为:弹簧中径D、钢丝直径d、总圈数n。设计要求在F=700N 作用下,产生10mm 的变形量。要求弹簧压并高度≤50mm,弹簧内径≥16mm,在满足强度条件下,要求设计的弹簧具有最轻的重量。根据设计要求和弹簧的受力分析,可得到下面的数学模型

min

s.t.

试用MATLAB编程分别求解上述优化问题的最优解。

(分别把步骤、代码、结果写在另一张纸上,作为作业交)作业六:教材166页实例。

20

)

(

1

)

(

20

)

(

1

)

(

50

)

(

8

)

(

]

[

8

)

615

.0

25

.0

(

)

(

10

)

(

4

)

(

16

)

(

50

)

(

)

(

10

)

(

8

)

(

4

)

(

3

12

3

11

2

10

2

9

1

8

1

7

3

2

1

1

2

1

2

2

1

6

2

1

5

2

1

4

2

1

3

3

2

2

4

2

3

3

1

1

3

2

2

1

2

-

=

-

=

-

=

-

=

-

=

-

=

-

+

-

-

=

-

=

-

=

+

-

=

-

=

=

-

=

=

x

x

g

x

x

g

x

x

g

x

x

g

x

x

g

x

x

g

x

Fx

x

x

x

x

x

x

x

g

x

x

x

g

x

x

x

g

x

x

x

g

x

x

x

g

Gx

n

x

Fx

x

g

x

x

x

X

f

τ

π

λ

ρπ

上式中,x1表示弹簧中径D,x2表示钢丝直径d,x3表示总圈数n。

其中:第一个约束为弹簧的变形量要求;

第二个约束为弹簧的压并高度要求;

第三个约束为弹簧的内径要求;

第四、五个约束为弹簧的旋绕比要求;

第六个约束为弹簧的强度要求;

第七到第十二个约束为弹簧的尺寸要求

(即边界约束要求);

其中未知参数的取值为:

材料剪切模量G=81000N/mm2;

弹簧支承圈数n0=1.75;

弹簧终端类型系数λ=0.5;

弹簧中径D和钢丝直径d的取值优先选用第一系列,有D:8,9,10,12,16,20,25,30,35,40,45,50;d:1,1.2,1.6,2,2.5,3,3.5,4,4.5,5,6,8,10,12,16,20

Matlab上机_测试题c答案讲课教案

<<<<<<精品资料》》》》》 Matlab 上机测试题答案 班级 姓名 学号 要求: (1)请将程序和运行结果粘贴到题目下面,写清楚哪部分是程序,哪部分是运行结果,运行结果包括图形,图形请适当缩小,然后将word 文档传到教育在线,注意保存格式是2003的doc ,文件名”自111_110110_张三” (2)在最开始前请将输入Matlab 命令窗口中输入”diary ”命令,随后在workspace 窗口中可以发现一个名为“diary ”的文件。在老师要求结束练习后,在命令窗口输入”diary off ”命令,然后将文件“diary ”上传到教育在线。 (3)注意题号不要弄乱。 --------------------------------------------------------------------- 1、 矩阵Y= ???? ? ???? ???3472123100451150425 ,给出元素1的全下标和单下标,并用函数练习全下标和单下标的转换,求出元素100的存储位置。取出子矩阵? ? ? ? ??21301,并求该矩阵的维数。 解:命令为: Y=[5,2,4;0,15,1;45,100,23;21,47,3] Y(2,3) Y(10) sub2ind([4 3],2,3) [i,j]=ind2sub([4 3],10) find(Y==100) sub2ind([4 3],3,2) B=Y(2:2:4,3:-2:1) 或 B=Y([2 4],[3 1]) [m n]=size(Y) --------------------------------------------------------------------- 2、已知矩阵A=[1 0 -1 ;2 4 1; -2 0 5],B=[0 -1 0;2 1 3;1 1 2] 求2A+B 、A 2-3B 、A*B 、B*A 、A .*B ,A/B 、A\B 解:命令为: A=[1 0 -1 ;2 4 1; -2 0 5] B=[0 -1 0;2 1 3;1 1 2] E=2*A+B F=A^2-3*B G=A*B H=B*A I=A.*B J=A/B K=A\B --------------------------------------------------------------------- 3、利用函数产生3*4阶单位矩阵和全部元素都为8的4*4阶矩阵,并计算两者的乘积。 解:命令为: A=eye(3,4) B=8*ones(4) C=A*B --------------------------------------------------------------------- 4、创建矩阵a=????? ???????------7023021.5003.120498601 ,取出其前两列构成的矩阵b ,取出前两行构成矩阵c ,转置矩阵b 构成矩阵d ,计算a*b 、c

Matlab上机实验答案

Matlab上机实验答案 实验一 MATLAB运算基础 1. 先求下列表达式的值,然后显示MATLAB工作空间的使用情况并保存全部变量。 >> z1=2*sin(85*pi/180)/(1+exp(2)) z1 = >> x=[2 1+2i; 5]; >> z2=1/2*log(x+sqrt(1+x^2)) z2 = - + + -

>> a=::; >> z3=(exp.*a)-exp.*a))./2.*sin(a++log(+a)./2) (>> z33=(exp*a)-exp*a))/2.*sin(a++log(+a)/2)可以验证z3==z33,是否都为1) z3 = Columns 1 through 5 + + + + + Columns 6 through 10 + + + + + Columns 11 through 15 + + + + + Columns 16 through 20 + + + + +

Columns 21 through 25 + + + + + Columns 26 through 30 + + + + + Columns 31 through 35 + + + + + Columns 36 through 40 + + + + + Columns 41 through 45 + + + + + Columns 46 through 50

+ + + + + Columns 51 through 55 + + + + + Columns 56 through 60 + + + + + Column 61 + (4) 2 2 4 2 01 112 2123 t t z t t t t t ?≤< ? =-≤< ? ?-+≤< ? ,其中t=0:: >> t=0::; >> z4=(t>=0&t<1).*(t.^2)+(t>=1&t<2).*(t.^2-1)+(t>=2&t<3).*(t.^ 2-2.*t+1) z4 =

MATLAB上机习题一

MATLAB上机习题一 请按以下步骤完成上机实验: 1)在FTP上下载“MATLAB上机习题一.doc”文件,所有习题列在该文件内; 2)在MATLAB中完成所有习题,并将屏幕截图粘贴到相应习题后面; 3)如果习题是问答题,请将答案写在题目后; 4)如果有的习题要求提供脚本文件,请将脚本文件内容拷贝到相应习题后; 5)将文件保存并重命名为“自己的学号-姓名”,例如“20110771-张三.doc”; 6)上传该文件到FTP的相关目录。 1. 运行MATLAB软件,拖放、关闭界面上的子窗口,并恢复到原始试图。 2. 采用鼠标及命令两种方式将桌面添加到MATLAB搜索路径列表的起始及最后位置。 3. 采用鼠标及命令方式将当前工作目录设置为桌面指向的文件夹。 4. 通过使用帮助确定内置变量ispc 的含义。 6. 观察MATLAB中关键字、字符串、注释的字体显示颜色。 5. 创建double类型的变量,并进行计算 1)a=87,b=190,计算a+b、a-b、a*b;

2)创建uint8类型的变量,数值与(1)中相同,进行相同的计算,观察计算结果与预想的是否一致。 6. 计算如下表达式: 1)()sin 60 2)3e 3)3cos 4π?? ??? 4)2 7562323336 +?-?? 7. 设u=2,v=3,计算: 1)4log uv v 2)() 2 2u e v v u +- 3 8. 计算如下表达式: 1)()()3542i i -+ 2)()sin 28i - 9. 判断下面语句的运算结果,并与MATLAB 计算结果做比较:

1)420< 2)420≤ 3)420== 4)4~20= 5)''''b B < 10. 设a=39,b=58,c=3,d=7,判断下面表达式的值与MATLAB 计算结果做比较: 1)a b > 2)a b < 3)&&a b b c >> 4)a d == 5)|a b c > 6)~~d 11. 判断下列变量名哪些是合法的MATLAB 变量: 1)fred 7)fred! 2)book_1 8)book-1 3)2ndplace 9)Second_Place 4)#1 10)No_1 5)vel_5 11)vel.5 6)tan 12)while 提示,可以使用isvarname 对上述变量名进行检验。 12. 编写脚本程序,命名为barbell.m ,完成如下计算: 如图1所示的杠铃,

Matlab 上机题及答案

1 一个三位整数各位数字的立方和等于该数本身则称该数为水仙花数。输出全部水仙花数。 for m=100:999 m1=fix(m/100); %求m的百位数字 m2=rem(fix(m/10),10); %求m的十位数字 m3=rem(m,10); %求m的个位数字 if m==m1*m1*m1+m2*m2*m2+m3*m3*m3 disp(m) end end 2.从键盘输入若干个数,当输入0时结束输入,求这些数的平均值和它们之和。 sum=0; n=0; val=input('Enter a number (end in 0):'); while (val~=0) sum=sum+val; n=n+1; val=input('Enter a number (end in 0):'); end if (n > 0) sum mean=sum/n end 3. 若一个数等于它的各个真因子之和,则称该数为完数,如6=1+2+3,所以6是完数。求[1,500]之间的全部完数。 for m=1:500 s=0; for k=1:m/2 if rem(m,k)==0 s=s+k; end end if m==s disp(m); end end 4. 从键盘上输入数字星期,在屏幕上显示对应英文星期的单词。 function week n=input('input the number:'); if isempty(n) errror('please input !!')

end if n>7|n<1 error('n between 1 and 7') end switch n case 1 disp('Monday') case 2 disp('Tuesday') case 3 disp('Wednesday') case 4 disp('Thursday') case 5 disp('Friday') case 6 disp('Saturday') case 7 disp('Sunday') end 5. 某公司销售电脑打印机的价格方案如下: ()如果顾客只买一台打印机,则一台的基本价格为$150。 ()如果顾客购买两台以上打印机,则第二台价格为$120。 ()第三台以后,每台$110。 写一段程序分别计算出购买1--10台打印机所需的钱数。打印机台数可以在程序开始处指定,或通过input命令读入。运行程序,计算出购买10台打印机的总价格。 写出程序,生成分别购买1--10台打印机所需价格的图表(使用fprintf命令输出图表,不允许手算)。 x=input('请输入购买的打印机台数:'); for m=1:x if m<=1 y(m)=150*m; elseif m<=2 y(m)=150+120*(m-1); else y(m)=150+120+110*(m-2); y(1,m)=y(m); end end y(x) plot(1:m,y,'r*--')

MATLAB上机实验(答案)

MATLAB工具软件实验(1) (1)生成一个4×4的随机矩阵,求该矩阵的特征值和特征向量。程序: A=rand(4) [L,D]=eig(A) 结果: A = 0.9501 0.8913 0.8214 0.9218 0.2311 0.7621 0.4447 0.7382 0.6068 0.4565 0.6154 0.1763 0.4860 0.0185 0.7919 0.4057 L = -0.7412 -0.2729 - 0.1338i -0.2729 + 0.1338i -0.5413 -0.3955 -0.2609 - 0.4421i -0.2609 + 0.4421i 0.5416 -0.4062 -0.0833 + 0.4672i -0.0833 - 0.4672i 0.4276 -0.3595 0.6472 0.6472 -0.4804 D = 2.3230 0 0 0 0 0.0914 + 0.4586i 0 0 0 0 0.0914 - 0.4586i 0 0 0 0 0.2275 (2)给出一系列的a值,采用函数 22 22 1 25 x y a a += - 画一组椭圆。 程序: a=0.5:0.5:4.5; % a的绝对值不能大于5 t=[0:pi/50:2*pi]'; % 用参数t表示椭圆方程 X=cos(t)*a; Y=sin(t)*sqrt(25-a.^2); plot(X,Y) 结果: (3)X=[9,2,-3,-6,7,-2,1,7,4,-6,8,4,0,-2], (a)写出计算其负元素个数的程序。程序: X=[9,2,-3,-6,7,-2,1,7,4,-6,8,4,0,-2]; L=X<0; A=sum(L) 结果: A =

matlab上机作业

第四次 上机作业 1、 从键盘输入一个4位整数,按照如下规则加密后输出。加密规则:每位数字 都加上7,然后用和除以10的余数取代该数字;再把第一位与第三位交换,第二位与第四位交换。 Clear X=ones(1,4); X (1)=input(’输入第一位:‘); X (2)=input(’输入第二位:‘); X (3)=input(’输入第三位:‘); X (4)=input(’输入第四位:‘); X=rem(7+x,10); Y=1000.*x(3)+100.*x(4)+10.*x(1)+x(2) 2、 分别用if 和switch 语句实现以下计算,其中a 、b 、c 的值从键盘输入。 ??? ? ??? <≤+<≤+<≤++=5 .55.3, ln 5.35.1, sin 5.15.0,2x x c b x x b a x c bx ax y c a=input(‘请输入a :’); b=input(‘请输入b :’); c=input(‘请输入c :’); If(x>=0.5&&x<=1.5) y=a.*x^2+b.*x+c Elseif(x>=1.5&&x<=3.5) y=a.*(sin(b))^c+x

Elseif(x>=3.5&&x<=5.5) y=log(abs(b+c./x)) end a=input(‘请输入a:’); b=input(‘请输入b:’); c=input(‘请输入c:’); Switch x case(x>=0.5&&x<=1.5) y=a.*x^2+b.*x+c case(x>=1.5&&x<=3.5) y=a.*(sin(b))^c+x case(x>=3.5&&x<=5.5) y=log(abs(b+c./x)) end 3、产生20个两位随机整数,输出其中小于平均值的偶数。Clear al ;close all ;clc; X=fix(rand(1,20)*89)+10; Disp([‘20个随机数是:’,num2str(x)]); X1=mean(x); Disp([‘平均值为:’,num2str(x1)]); N=find(rem(x,2)==0&x

MATLAB上机考试题(一)

(1)在MATLAB的命令窗口中执行_____命令,将命令窗口的显示内容清空。() A.clear B.clc C.echo off D.cd (2)在MATLAB的命令窗口中执行_____命令,使数据输出显示为十六进制表示。() A.format long B.format rat C.format hex D.format short e (3)下列变量名中_____是合法的。() A.x*y,a,1 B.x\y,a1234 C.end,1 bcx D.char_1,i,j (4)已知x=0:5,则x有_____个元素。() A.5 B.6 C.7 D.8 (5)一下运算符中哪个的优先级最高_____。() A./ B.^ C.~= D.& (6)使用检测函数isnumeric(10)的结果是_____。() A.1 B.0 C.false D.true (7)三维图形中默认视角是_____度。() A.方位角=0 俯仰角=90 B.方位角=90 俯仰角=0 C.方位角=37.5 仰俯角=30 D.方位角=0 仰俯角=180 (8)将符号表达式化简为因式分解因式分解因式分解因式分解形式,使用_____函数。() A.collect B.expand C.horner D.factor (9)运行以下命令,则_____描述是正确的。()>>syms a b c d >>A=[a b;c d] A.A占用的内存小于100B B.创建了5个符号变量 C.A占用的内存是a b c d的总和 D.不存在 (10)已知数组a=[1 2 3;4 5 6;7 8 9],则a(:,end)是指_____元素。 (11)运行命令bitor(8,7)的结果是_____。 (12)运行以下命令: >>x=0:10; >>y1=sin(x); >>y2=5*sin(x); >>y3=[10*sin(x );20*sin(x)]; >>plot(x,y1,x,y2,x,y3) 则在一个图形窗口中,可以看到_____条曲线。 (13)符号表达式“g=sym(sin(a*z)+cos(w*v))”中的自由符号变量是_____。 (14)运行以下命令: >>syms t >>f1=1/t >>limitf1_r=limit(f1,'t','0','right'); 则函数limitf1_r趋向0的右极限为_____。 15.在MATLAB的命令窗口中执行______命令,使数值5.3显示为5.300000000000000e+000 A. format long B. format long e C. format short D. format short e 16.下列变量名中______是合法的。A.char_1,i,j B.1_1, a.1 C.x\y,a1234 D.end,1bcx 17.已知x=0:9,则x有_____个元素。 A.12 B.11 C.10 D.9 18.产生对角线上为全1其余为0的2行3列矩阵的命令是______ A. ones(2,3) B. ones(3,2) C. eye(2,3) D. eye(3,2) 19.已知数组a= [1 2 3 4 5 6 7 8 9] ,则运行a(:,1)=[]命令后______ A. a变成行向量 B. a数组为2行2列 C. a 数组为3行2列 D. a数组中没有元素3 20.按含义选出各个函数名:表示4舍5入到整数的是____,表示向最接近0取整的是____,表示向最接近-∞取整的是____,表示向最接近∞取整的是_____ A. round(x) B. fix(x) C. floor(x) D. ceil(x) 21.已知a=0:5,b=1:6,下面的运算表达式出错的为______ A. a+b B. a./b C. a’*b D. a*b 22.已知s=’显示”hello”’,则s的元素个数是______ A. 12 B. 9 C. 7 D.18

MATLAB上机题汇总(基本题,抽3题)合肥学院

1设置matlab 的工作环境,将工作目录设置为d:\work ,添加搜索目录d:\example 2在matlab 的命令窗口里完成如下计算,其中t 的值分别取-1,0,1,表达式如下: 4/3)2 t y e π-= 3自行产生一个5行5列的数组,得到最中间的三行三行矩阵。 4用magic 产生一个5*5的矩阵,将这个矩阵的第二行与第三行互换位置 5求方程组的根 x 1+4x 2-3x 3=2 2x 1+5x 2-x 3=11 x 1+6x 2+x 3=12 6已知:一个多项式的系数向量是p=[1 -6-72 -27],求这个多项式的根。 7已经两个多项式的系数分别是:[1 2 3 4]和[1 4 9 16],请求这两个多项式的乘积,及商和余数。 8给定一个多项式的根是[-5 -3+4i -3-4i],求原来的多项式 9 A=[2 3 4; 1 5 7; 6 2 5] 用什么函数,保证第一列排序的时候,其他列跟着变化。最后的结果是: [1 5 7; 2 3 4; 6 2 5] 10补充题:电路分析 电路分析常常涉及到对方程组的求解,这些方程常常是利用描述电流进入和离开节点的电流方程,或者描述电路中网络回路上的电压的电压方程得出的。下图描述了3个回路电压的方程

方程式如下: 11121222132423432 532()0()()0()0V R I R I I R I I R I R I I R I I R I V -++-=??-++-=??-++=? 假设5个电阻值为已知,2个电压值也为已知,求3个电流值。 11自行产生一个5行5列的数组,用两种方法得到最中间的三行三行矩阵。 12根据a=reshape(-4:4,3,3)做一个矩阵,然后(1)取出所有大于0的元素构成一个向量(可推广到从一个矩阵里筛选出符合条件的元素组成一个向量)(2)将原矩阵中大于0的元素正常显示,而小于等于0的元素全部用0来表示(可推广到将原矩阵中不符合条件的全用0来表示,符合条件的值不变)。(思考:大于0的正常显示,小于等于0的用-10来表示) 13建立如下一个元胞数组,现在要求计算第一个元胞第4行第2列加上第二个元胞+第三个元胞里的第二个元素+最后一个元胞的第二个元素。 a={pascal(4),'hello';17.3500,7:2:100} 14建立一个结构体的数组,包括3个人,字段有姓名,年龄,分数,其中分数由随机函数产生一个3行10列的数据表示了有10门课程,每门课程有三个阶段的分数。问题是: 问题1,如何找到第2个人的分数并显示出来 问题2,如何找到第2个人的每门课程3个阶段的平均分数并显示出来 问题3,全班同学(指这3个学生)的10门课程的每门课程的平均分如何计算出来?要求放到一个数组里。 问题4,找到这个班所有同学的姓名放到一个元胞数组里 15给定一个图像文件,格式是jpg ,通过inportdata 引入这个文件,查看引入后数据保存是一个数组,是100*100*3的一个数组,这是一个三维的数组,表明有100*100个点,每个点有RGB 三个方面决定的。现在,要求将这些点的中间部分30个象素宽度的正方形用黑点表示。 16手动构造一个长宽页是1000*1000*3的图像,每个图像的点有三个0-255之间的随机值构成。然后使用image 函数显示这个图像,再用imwrite 函数保存这个图像,使这个图像用图片浏览器也能够查看。 17给定一个矩阵 a = 1 2 3 4 5 6 编写一个M 函数,要求输入是a ,输出有三个:平均数,标准差,秩。程序运行

河南城建学院MATLAB上机实验答案

一熟悉Matlab工作环境 1、熟悉Matlab的5个基本窗口 思考题: (1)变量如何声明,变量名须遵守什么规则、是否区分大小写。 答:变量一般不需事先对变量的数据类型进行声明,系统会依据变量被赋值的类型自动进行类型识别,也就是说变量可以直接赋值而不用提前声明。变量名要遵守以下几条规则:?变量名必须以字母开头,只能由字母、数字或下划线组成。 ?变量名区分大小写。 ?变量名不能超过63个字符。 ?关键字不能作为变量名。 ?最好不要用特殊常量作为变量名。 (2)试说明分号、逗号、冒号的用法。 分号:分隔不想显示计算结果的各语句;矩阵行与行的分隔符。 逗号:分隔欲显示计算结果的各语句;变量分隔符;矩阵一行中各元素间的分隔符。 冒号:用于生成一维数值数组;表示一维数组的全部元素或多维数组某一维的全部元素。 (3)linspace()称为“线性等分”函数,说明它的用法。 LINSPACE Linearly spaced vector. 线性等分函数 LINSPACE(X1, X2) generates a row vector of 100 linearly equally spaced points between X1 and X2. 以X1为首元素,X2为末元素平均生成100个元素的行向量。 LINSPACE(X1, X2, N) generates N points between X1 and X2. For N < 2, LINSPACE returns X2. 以X1为首元素,X2为末元素平均生成n个元素的行向量。如果n<2,返回X2。 Class support for inputs X1,X2: float: double, single 数据类型:单精度、双精度浮点型。 (4)说明函数ones()、zeros()、eye()的用法。 ones()生成全1矩阵。 zeros()生成全0矩阵。 eye()生成单位矩阵。 2、Matlab的数值显示格式

matlab 上机作业1,中国石油大学

第一次上机实习 1.编写一个程序ex1_1.m,对输入的方阵计算其伴随矩阵。 a)要求第一行帮助行注明这个函数的用途,能在matlab命令窗口可以用help或lookfor 查到该帮助; b)对输入的变量进行检测,如果输入的不是方阵或者矩阵元素不是数,则报错,退出程 序。 function A=ex1_1(X) % 建立函数A=ex1_1(X),求矩阵X的伴随矩阵 [a,b]=size(X); if a~=b||~isnumeric(X) || ~ismatrix(X) error('输入的不是方阵或者矩阵元素不是数!'); end for i=1:a for j=1:b A(i,j)=(-1)^(i+j)*X(i,j)*det(X([1:i-1,i+1:end],[1:j-1,j+1:end])); end end A=A'; 2.已知表达式y=6*x^5+4*x^3+2*x^2-7x+10,x的范围是[0,100],使用三阶拟合和五阶的方法得出多项式的表达式,并编程在图中绘制出原曲线、三阶拟合和五段拟合的曲线。 clc clear all x=linspace(0,100,2000); p1=[6 0 4 2 -7 0]; y=polyval(p1,x); p3=polyfit(x,y,3); p5=polyfit(x,y,5); y1=polyval(p3,x); y2=polyval(p5,x); plot(x,y,'r-o') hold on grid on plot(x,y1,'b-.',x,y2,'y--*'); grid on 三条曲线

放大图(原曲线与五阶拟合完全重合): 3.读如图像5.tif(450*450),做fourier变换, a)将变换之后所得到的矩阵只保留前10行10列,后10行10列的数据,其他位置都 设置为0,然后再作反fourier变换,观察结果; 原图:

上机题汇总(必做)

上机题汇总 1设置matlab 的工作环境,将工作目录设置为d:\work ,添加搜索目录d:\example 2在matlab 的命令窗口里完成如下计算,其中t 的值分别取-1,0,1,表达式如下: 4/3)t y e π-= 3自行产生一个5行5列的数组,得到最中间的三行三列矩阵。 4用magic 产生一个5*5的矩阵,将这个矩阵的第二行与第三行互换位置 5求方程组的根 x 1+4x 2-3x 3=2 2x 1+5x 2-x 3=11 x 1+6x 2+x 3=12 6已知:一个多项式的系数向量是p=[1 -6-72 -27],求这个多项式的根。 7已经两个多项式的系数分别是:[1 2 3 4]和[1 4 9 16],请求这两个多项式的乘积,及商和余数。 8给定一个多项式的根是[-5 -3+4i -3-4i],求原来的多项式 9 A=[2 3 4; 1 5 7; 6 2 5] 用什么函数,保证第一列排序的时候,其他列跟着变化。最后的结果是: [1 5 7; 2 3 4; 6 2 5] 10补充题:电路分析 电路分析常常涉及到对方程组的求解,这些方程常常是利用描述电流进入和离开节点的电流方程,或者描述电路中网络回路上的电压的电压方程得出的。下图描述了3个回路电压的方程

方程式如下: 11121222132423432 532()0()()0()0V R I R I I R I I R I R I I R I I R I V -++-=??-++-=??-++=? 假设5个电阻值为已知,2个电压值也为已知,求3个电流值。 11自行产生一个5行5列的数组,用两种方法得到最中间的三行三列矩阵。 12根据a=reshape(-4:4,3,3)做一个矩阵,然后(1)取出所有大于0的元素构成一个向量(可推广到从一个矩阵里筛选出符合条件的元素组成一个向量)(2)将原矩阵中大于0的元素正常显示,而小于等于0的元素全部用0来表示(可推广到将原矩阵中不符合条件的全用0来表示,符合条件的值不变)。(思考:大于0的正常显示,小于等于0的用-10来表示) 13建立如下一个元胞数组,现在要求计算第一个元胞第4行第2列加上第二个元胞+第三个元胞里的第二个元素+最后一个元胞的第二个元素。 a={pascal(4),'hello';17.3500,7:2:100} 14建立一个结构体的数组,包括3个人,字段有姓名,年龄,分数,其中分数由随机函数产生一个3行10列的数据表示了有10门课程,每门课程有三个阶段的分数。问题是: 问题1,如何找到第2个人的分数并显示出来 问题2,如何找到第2个人的每门课程3个阶段的平均分数并显示出来 问题3,全班同学(指这3个学生)的10门课程的每门课程的平均分如何计算出来?要求放到一个数组里。 问题4,找到这个班所有同学的姓名放到一个元胞数组里 15给定一个图像文件,格式是jpg ,通过inportdata 引入这个文件,查看引入后数据保存是一个数组,是100*100*3的一个数组,这是一个三维的数组,表明有100*100个点,每个点有RGB 三个方面决定的。现在,要求将这些点的中间部分30个象素宽度的正方形用黑点表示。

MATLAB上机实验练习题答案

数学建模 MATLAB上机实验练习题 1、给出一个系数矩阵A[234;541;132],U=[123],求出线性方程组的一个精确解。 2、给出两组数据x=[00.30.81.11.62.3]’y=[0.820.720.630.600.550.50]’,我们可以简单的 认为这组数据在一条衰减的指数函数曲线上,y=C1+C2e-t通过曲线拟合求出这条衰减曲线的表达式,并且在图形窗口画出这条曲线,已知的点用*表示。 3、解线性方程 4、通过测量得到一组数据: 5、已知一组测量值 6、从某一个过程中通过测量得到: 分别采用多项式和指数函数进行曲线拟合。 7、将一个窗口分成四个子窗口,分别用四种方法做出多峰函数的表面图(原始数据法,临近 插值法,双线性插值法,二重三次方插值法) 8、在同一窗口使用函数作图的方法绘出正弦、余弦、双曲正弦、双曲余弦。分别使用不同的 颜色,线形和标识符。 9、下面的矩阵X表示三种产品五年内的销售额,用函数pie显示每种产品在五年内的销售额

占总销售额的比例,并分离第三种产品的切片。 X=19.322.151.6 34.270.382.4 61.482.990.8 50.554.959.1 29.436.347.0 10、对应时间矢量t,测得一组矢量y t00.30.8 1.1 1.6 2.3 y0.50.82 1.14 1.25 1.35 1.40 采用一个带有线性参数的指数函数进行拟合,y=a0+a1e-t+a2te-t,利用回归方法求出拟合函数,并画出拟合曲线,已知点用圆点表示。 11、请创建如图所示的结构数组(9分) 姓名编号指标 江明顺071023身高:176,体重:82 于越忠060134身高:168,体重:74 邓拓050839身高:182,体重:77 12、创建如图所示的元胞数组。(9分) 13、某钢材厂从1990年到2010年的产量如下表所示,请利用三次样条插值的方法计算1999年该钢材厂的产量,并画出曲线,已知数据用‘*’表示。要求写出达到题目要求的MATLAB 操作过程,不要求计算结果。 年份19901992199419961998200020022004200620082010 产量(万吨)75.99591.972105.711123.203131.669150.697179.323203.212226.505249.633256.344 14、在一次化学动力学实验中,在某温度下乙醇溶液中,两种化合物反应的产物浓度与反应时间关系的原始数据如下,请对这组数据进行三次多项式拟合,并画出拟合曲线,已知数据如下。 time=[2.55.07.510.013.017.020.030.040.050.060.070.0] res=[0.290.560.771.051.361.522.002.272.813.053.253.56]

Matlab上机实验答案 (1)

Matlab上机实验答案 实验一MATLAB运算基础 1. 先求下列表达式的值,然后显示MATLAB工作空间的使用情况并保存全部变量。 >> z1=2*sin(85*pi/200)/(1+exp(2)) z1 = 0.2375 >> x=[2 1+2i;-0.45 5]; >> z2=1/2*log(x+sqrt(1+x^2)) z2 = 0.7120 - 0.0253i 0.8968 + 0.3658i 0.2209 + 0.9343i 1.2041 - 0.0044i 2.9,,2.9, 3.0

>> a=-3.0:0.1:3.0; >> z3=(exp(0.3.*a)-exp(-0.3.*a))./2.*sin(a+0.3)+log((0.3+a)./2) (>> z33=(exp(0.3*a)-exp(-0.3*a))/2.*sin(a+0.3)+log((0.3+a)/2)可以验证z3==z33,是否都为1) z3 = Columns 1 through 5 0.7388 + 3.2020i 0.7696 + 3.2020i 0.7871 + 3.2020i 0.7920 + 3.2020i 0.7822 + 3.2020i Columns 6 through 10 0.7602 + 3.2020i 0.7254 + 3.2020i 0.6784 + 3.2020i 0.6206 + 3.2020i 0.5496 + 3.2020i Columns 11 through 20 0.4688 + 3.2020i 0.3780 + 3.2020i 0.2775 + 3.2020i 0.2080 + 3.2020i 0.0497 + 3.2020i

东南大学-数值分析上机题作业-MATLAB版

2015.1.9 上机作业题报告 JONMMX 2000

1.Chapter 1 1.1题目 设S N =∑1j 2?1 N j=2 ,其精确值为 )1 1 123(21+--N N 。 (1)编制按从大到小的顺序1 1 131121222-+ ??+-+-=N S N ,计算S N 的通用程序。 (2)编制按从小到大的顺序1 21 1)1(111222-+ ??+--+-= N N S N ,计算S N 的通用程序。 (3)按两种顺序分别计算64210,10,10S S S ,并指出有效位数。(编制程序时用单精度) (4)通过本次上机题,你明白了什么? 1.2程序 1.3运行结果

1.4结果分析 按从大到小的顺序,有效位数分别为:6,4,3。 按从小到大的顺序,有效位数分别为:5,6,6。 可以看出,不同的算法造成的误差限是不同的,好的算法可以让结果更加精确。当采用从大到小的顺序累加的算法时,误差限随着N 的增大而增大,可见在累加的过程中,误差在放大,造成结果的误差较大。因此,采取从小到大的顺序累加得到的结果更加精确。 2.Chapter 2 2.1题目 (1)给定初值0x 及容许误差ε,编制牛顿法解方程f(x)=0的通用程序。 (2)给定方程03 )(3 =-=x x x f ,易知其有三个根3,0,3321= *=*-=*x x x ○1由牛顿方法的局部收敛性可知存在,0>δ当),(0δδ+-∈x 时,Newton 迭代序列收敛于根x2*。试确定尽可能大的δ。 ○2试取若干初始值,观察当),1(),1,(),,(),,1(),1,(0+∞+-----∞∈δδδδx 时Newton 序列的收敛性以及收敛于哪一个根。 (3)通过本上机题,你明白了什么? 2.2程序

MATLAB上机题汇总(较难题,抽1题)合肥学院

1.根据下面的方程绘制图形,y=cos(x)+x ,x 取值-pi-pi ,然后用多项式拟合函数进行拟合。 2.要求编写一个函数文件,将一个给定图片的所有颜色都变深(变深多少自己斟酌),其中黑色为0,白色为255 3.根据下面的方程绘制图形,y=cos(2x)+sin(2x),然后用5次多项式进行拟合。 4.要求编写一个M 函数,完成下列函数的求解:y =sin (x );y =sin (x +pi );y =sin (x +pi /3);y =sin (x +pi/2)自变量x 的变化范围从-pi 到pi ,要求四个图像画在同一个图形窗体中。 5.M 文件的编写 计算分段函数 ?????≠+=+++=10101)1cos(2x x x x x x x y 6.函数文件的编写 编写函数文件,求半径为r 的圆的周长和面积。

7.题目见教材p85,其中的数据可以给出文本文件或者由下面的式子表达 a=[10*rand(24,1)+15,1*rand(24,1)+30,2*rand(24,1)+45],这是24行3列的一个矩阵,第一列表示温度,第二列表示湿度,第三列表示气压。要求如下: (1) 将温度数据取出 (2) 找出一天中最高温度 (3) 按温度进行从小到大(默认)排序 (4) 求出最高温度的时刻 (5) 按温度进行从大到小排序 8.已知Fibonacci (斐波那)数列由式子??=+=--4,3,21k a a a k k k 可以生成,其中初值为121==a a ,试编写出生成某项Fibonacci 数值的MATLAB 函数,并求20a 的值。 9.编写M 函数,判断给定的三边能够构成一个三角形?并求其周长 10.给定一个声音文件,如1.wav ,引入这段声音,将音量改为2倍之后,再保存成2.wav

Matlab编程与应用习题和一些参考答案

Matlab 上机实验一、二 3.求下列联立方程的解???????=+-+-=-+=++-=--+4 1025695842475412743w z y x w z x w z y x w z y x >> a=[3 4 -7 -12;5 -7 4 2;1 0 8 -5;-6 5 -2 10]; >> b=[4;4;9;4]; >> c=a\b 4.设???? ??????------=81272956313841A ,??????????-----=793183262345B ,求C1=A*B’;C2=A’*B;C3=A.*B,并求上述所有方阵的逆阵。 >> A=[1 4 8 13;-3 6 -5 -9;2 -7 -12 -8]; >> B=[5 4 3 -2;6 -2 3 -8;-1 3 -9 7]; >> C1=A*B' >> C2=A'*B >> C3=A.*B >> inv(C1) >> inv(C2) >> inv(C3) 5.设 ????? ?++=)1(sin 35.0cos 2x x x y ,把x=0~2π间分为101点,画出以x 为横坐标,y 为纵坐标的曲线。 >> x=linspace(0,2*pi,101); >> y=cos(x)*(0.5+(1+x.^2)\3*sin(x)); >> plot(x,y,'r') 6.产生8×6阶的正态分布随机数矩阵R1, 求其各列的平均值和均方差。并求该矩阵全体数的平均值和均方差。 (mean var ) a=randn(8,6) mean(a) var(a) k=mean(a) k1=mean(k) i=ones(8,6) i1=i*k1 i2=a-i1 i3=i2.*i2 g=mean(i3) g2=mean(g) 或者 u=reshape(a,1,48); p1=mean(u)

matlab上机作业

第一次 上机作业 1.写出完成下列操作的命令: 1) 将矩阵A 的第2~5行中的第1,3,5列元素赋给矩阵B B=A(:,1:3:5) 2) 删除矩阵A 的第7号元素 A(7)=[] 3) 将矩阵A 的每个元素值加30 A=A+30 4) 求矩阵A 的大小和维数 Whos size(A) 5) 将含有12个元素的向量x 转换成3×4矩阵 Y=reshape(x,3,4) 2.下列命令执行后,L1、L2、L3、L4的值分别是多少? A=1:9; B=10-A; L1=A= =B; L2=A< =5; L3=A>3&A<7; L4=find(A>3&A<7); L1= 0 0 0 0 1 0 0 L2=1 1 1 1 1 0 0 L3=0 0 0 1 1 1 0 L4=4 5 6 3.已知: A=????? ???????---14.35454.9632053256545410778.01023

完成下列操作: (1)取出A的前3行构成矩阵B,前两列构成矩阵C,右下角3×2子矩阵构成矩 阵D,B与C的乘积构成矩阵E B=A(1:3,:) C=A(:,1:2) D=A(2:4,3:4) E=B*C (2)分别求E=10&A<25)。 1.E=10&A<25) 1 5 4.用结构体矩阵来储存5名学生的基本情况数据,每名学生的数据包括学号、姓名、专业和6门课程的成绩。 例如 a(1).x1=1;a(1).x2=’name’;a(1).x3=’grade’;a(1).x4=’number’;a(1).x5=[XX,XX,X];

MATLAB实验上机易错题汇总

1、完成下列操作:(1) 求[100,999]之间能被21整除的数的个数。(2) 建立一个字符串向 量,删除其中的大写字母。 (1) m=100:999; n=find(mod(m,21)==0); length(n) ans = 43 (2)>> ch='Maybe One Day' p=find(ch>='A'&ch<='Z') ch(p)=[] ch = Maybe One Day 2、自行产生一个5行5列的数组,分别得到最中间的三行三列矩阵、右下角2行2列矩阵, 奇数行矩阵、奇数列矩阵、奇数行奇数列矩阵。 >> t=rand(5)%生成矩阵 A=t(2:4,2:4)%中间三行散列矩阵 B=t(4:5,4:5)%右下角两行两列矩阵 C=t(1:2:end,:)%奇数行矩阵 D=t(:,1:2:end)%奇数列矩阵 E=t(1:2:end,1:2:end)%奇数行列矩阵 3、求方程组的根 syms x y z [X Y Z]=solve('x+4*y-3*z=2','2*x+5*y-z=11','x+6*y+z=12',x,y,z) 4、已知矩阵A=[1 2;3 4],运行指令B1=A.^(0.5), B2=A^(0.5), 可以观察到不同运算方法所得结果不同。(1)请分别写出根据B1, B2恢复原矩阵A的程序。(2)用指令检验所得的两个恢复矩阵是否相等(利用norm(…,’fro’)指令,误差矩阵F-范数,接近eps量级,认为实际相等)。 5、先运行clear,format long,rng('default'),A=rand(3,3),然后根据A写出两个矩阵:一个对角 阵B,其相应元素由A的对角元素构成;另一个矩阵C,其对角元素全为0,而其余元素与对应的A阵元素相同(diag指令的使用)。 >> format long >> rand('twister',1) >> A=rand(3,3) A = 0.417022004702574 0.302332572631840 0.186260211377671

相关文档
最新文档