matlab上机作业

合集下载

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编程分别求解上述优化问题的最优解。

数学建模作业题+答案

数学建模作业题+答案

数学建模MATLAB 语言及应用上机作业11. 在matlab 中建立一个矩阵135792468101234501234A ⎡⎤⎢⎥⎢⎥=⎢⎥-----⎢⎥⎣⎦答案:A = [1,3,5,7,9;2,4,6,8,10;-1,-2,-3,-4,-5;0,1,2,3,4]2. 试着利用matlab 求解出下列方程的解(线性代数22页例14)123412423412342583692254760x x x x x x x x x x x x x x +-+=⎧⎪--=⎪⎨-+=-⎪⎪+-+=⎩ 答案:A=[2 ,1,-5,1;1,-3,0,-6;0,2,-1,2;1,4,-7,6]; B=[8;9;-5;0]; X=A\B 或A=[2,1,-5,1;1,-3,0,-6;0,2,-1,2;1,4,-7,6] b=[8,9,-5,0]' X=inv(A)*b3. 生成一个5阶服从标准正态分布的随机方阵,并计算出其行列式的值,逆矩阵以及转置矩阵。

答案:A=randn(5) det(A) inv(A) A'4. 利用matlab 求解出110430002A -⎡⎤⎢⎥=-⎢⎥⎢⎥⎣⎦的特征值和特征向量。

答案:A=[-1,1,0;-4,3,0;0,0,2] [V,D]=eig(A)5.画出衰减振荡曲线3sin3t y et -=在[0,4]π上的图像。

要求,画线颜色调整为黑色,画布底面为白色。

(在实际中,很多打印机时黑白的,因此大多数作图要考虑黑白打印机的效果。

) 给出恰当的x ,y 坐标轴标题,图像x 轴的最大值为4π。

6. 生成一个0-1分布的具有10个元素的随机向量,试着编写程序挑选出向量中大于0.5的元素。

数学建模和Matlab 上机作业2(2016-9-20)跟老师做(不用整合进作业中):上机演示讲解:函数,递归的两个例子的写法。

附:1. Fibonacci Sequence (斐波那契数列)在数学上,费波那西数列是以递归的方法来定义: F1= 1;F2= 1;F (n )=F (n-1)+F (n-2) 2. 阶乘举例:数学描述:n!=1×2×……×n ;计算机描述:n!=n*(n-1)!自己做(需要整合进作业中,提交到系统中):1. 写一个m 文件完成分值百分制到5分制的转换(即输入一个百分制,转换后输出一个5级对应的得分,联系条件控制语句)。

MATLAB期末上机试题带答案

MATLAB期末上机试题带答案

MATLAB 期末上机考试试题带答案版姓名:学号:成绩:1.请实现下图:50100150200250x y x=linspace(0,8*pi,250);y=sin(x);plot(x,y)area(y,-1)xlabel('x')ylabel('y')title('y=sin(x)')2.请实现下图:x=linspace(0,2*pi,100);y1=sin(x);subplot(2,2,1)plot(x,y1,'k--')grid onxlabel('x')ylabel('y')title('sin(x)')legend('y=sin(x)')y2=cos(x);subplot(2,2,2)plot(x,y2,'r--')grid onxlabel('x')ylabel('y')title('cos(x)')legend('y=cos(x)')y3=tan(x);subplot(2,2,3)plot(x,y3,'k-')grid onxlabel('x')ylabel('y')title('tan(x)')legend('y=tan(x)')y4=cot(x);subplot(2,2,4)plot(x,y4)grid onxlabel('x')ylabel('y')title('cot(x)')legend('y=cot(x)')3.解方程组:a=[321;1-13;24-4];b=[7;6;-2];x=a\b4.请实现下图:x y x=linspace(0,4*pi,1000);y1=sin(x);y2=sin(2*x);plot(x,y1,'--',x,y2,'b*')grid onxlabel('x');ylabel('y');title('耿蒙蒙')legend('sin(x)','sin(2*x)')5.请在x ,y 在(-2,2)内的z=xexp (-x 2-y 2)绘制网格图[x,y]=meshgrid(-2:0.1:2);z=x.*exp (-x.^2-y.^2);mesh(x,y,z)6.请实现peaks 函数:-33x Peaksy [x,y]=meshgrid(-3:1/8:3);z=peaks(x,y);mesh(x,y,z)surf(x,y,z)shading flataxis([-33-33-88])xlabel('x');ylabel('y');title('Peaks')7.请在x=[0,2],y=[-0.5*pi,7.5*pi],绘制光栅的振幅为0.4的三维正弦光栅。

matlab上机习题答案

matlab上机习题答案

matlab上机习题答案Matlab上机习题答案在现代科学和工程领域中,计算机编程和数值计算已经成为必不可少的技能。

而Matlab作为一种强大的数值计算软件,被广泛应用于各种领域。

为了帮助学习者更好地掌握Matlab的基本操作和数值计算方法,老师们经常会布置一些上机习题,让学生通过实际操作来加深对Matlab的理解。

下面我们来看一些常见的Matlab上机习题答案:1. 编写一个Matlab程序,计算并输出1到100之间所有奇数的和。

答案:```matlabsum = 0;for i = 1:2:100sum = sum + i;enddisp(sum);```2. 编写一个Matlab程序,计算并输出斐波那契数列的前20个数字。

答案:```matlabfib = zeros(1,20);fib(1) = 1;fib(2) = 1;for i = 3:20fib(i) = fib(i-1) + fib(i-2);enddisp(fib);```3. 编写一个Matlab程序,求解一元二次方程ax^2 + bx + c = 0的根。

答案:```matlaba = 1;b = -3;c = 2;delta = b^2 - 4*a*c;if delta < 0disp('无实根');elseif delta == 0x = -b / (2*a);disp(x);elsex1 = (-b + sqrt(delta)) / (2*a);x2 = (-b - sqrt(delta)) / (2*a);disp(x1);disp(x2);end```通过以上几个例子,我们可以看到,Matlab的语法简洁明了,功能强大。

通过编写程序来解决实际问题,不仅加深了对Matlab的理解,也提高了计算机编程和数值计算的能力。

希望大家在学习Matlab的过程中能够多多练习,不断提高自己的编程水平。

MATLAB上机练习及作业

MATLAB上机练习及作业

MATLAB上机练习及作业第一章1. 熟悉MATLAB环境,练习第一章的命令;2. 练习显示格式(P13)1利用Help命令,搞清楚MATLAB的所有主题,利用help signal和help control 搞清楚这两个工具箱2练习whos,who,disp,clear,which,ver等命令第二章3练习矩阵操作,书上P34~404练习逻辑和关系运算,书上P40~435练习随机数产生,书上P506练习时间和日期函数,P56~577矩阵操作diag,reshape,rot90,fliplr,flipud,tril,triu等8练习MATLAB基本函数P669上交:第二章习题中的No.3, No.6第3章1. 练习产生图3.1~3.5, 3.9~3.12, 3.14, 3.18,3.21,3.22, 3.24~3.312. 第3章习题: (P122) 2, 5--93. 交程序:5;74. 并练习图形旋转、标注、复制等功能5. 交结果:与习题7类似,只是画出你自己上个月的消费饼图第4章1. 上机前好好复习这章内容,练习P137页的两段程序,并将终值扩大到500,体会两者的速度差异。

2. 熟悉MATLAB的调试技术。

3. 第4章习题: (P158)4. 1,3,5,8,95. 交结果:3;5,8(分别求出当I=54,I=105时的结果);9第5章习题(p.222)1, 2, 3, 7, 8, 9, 13, 15, 16, 20交结果: 1, 2, 8, 9, 13, 16第6章P.251 看懂综合设计示例, 设计程序计算每个班的平均成绩, 计算教师的实际学时数。

(交结果)P.269 2, 3第7章1. 在[-1,1]区间上绘制出y=-2x^2+4的曲线, 并在图中标注出最大值点的坐标.2. 任意给定一句英文句子, 请提取其每个单词, 并设计一结构, 其域有Name、No、Length、Value,分别用于存储每个单词的名称、句中序号、单词长度、单词各个字符的ASCII 码。

MATLAB上机实验1答案

MATLAB上机实验1答案

实验1 Matlab 初步一、问题已知矩阵A 、B 、b 如下:⎥⎥⎥⎥⎥⎥⎥⎦⎤⎢⎢⎢⎢⎢⎢⎢⎣⎡-------------=031948118763812654286174116470561091143A ⎥⎥⎥⎥⎥⎥⎥⎦⎤⎢⎢⎢⎢⎢⎢⎢⎣⎡------=503642237253619129113281510551201187851697236421B []1187531=b应用Matlab 软件进行矩阵输入及各种基本运算。

二、实验目的学会使用Matlab 软件构作已知矩阵对应的行(列)向量组、子矩阵及扩展矩阵,实施矩阵的初等变换及线性无关向量组的正交规范化,确定线性相关相关向量组的一个极大线性无关向量组,且将其余向量用极大线性无关向量组线性表示,并能编辑M 文件来完成所有的实验目的。

三、预备知识1、 线性代数中的矩阵及其初等变换、向量组的线性相关性等知识。

2、 Matlab 软件的相关命令提示如下;(1) 选择A 的第i 行做一个行向量:ai=A(i,:);(2) 选择A 的第j 行做一个列向量:ai=A(j,:);(3) 选择A 的某几行、某几列上的交叉元素做A 的子矩阵:A([行号],[列号]);(4) n 阶单位阵:eye(n);n 阶零矩阵:zeros(n);(5) 做一个n 维以0或1为元素的索引向量L ,然后取A(:,L),L 中值为1的对应的列将被取到。

(6) 将非奇异矩阵A 正交规范化,orth(A) ;验证矩阵A 是否为正交阵,只需做A*A'看是否得到单位阵E 。

(7) 两个行向量a1和a2的内积:a1*a2'。

(8) 让A 的第i 行与第j 列互换可用赋值语句:A([i,j],:)=A([j,i],:);(9)让K乘以A的第i行可用赋值语句:A(i,:)=K*A(i,:);(10)让A的第i行加上第j行的K倍可用赋值语句:A(i,:)=A(i,:)+K*A(j,:);(11)求列向量组的A的一个极大线性无关向量组可用命令:rref(A)将A化成阶梯形行的最简形式,其中单位向量对应的列向量即为极大线性无关向量组所含的向量,其它列向量的坐标即为其对应向量用极大线性无关组线性表示的系数。

Matlab上机实验答案

Matlab上机实验答案

0.2000 0.1667 0.1429 0.1250 0.1111
1 1 1 1 1
1 2 3 4 5
1 3 6 10 15
1 4 10 20 35
1 5 15 35 70
>> Hh=det(H) Hh =
3.7493e-12 >> Hp=det(P) Hp =
1
>> Th=cond(H) Th =
0 0 1.0000 0 0
0.8147 0.9058 0.1270 1.0000 0
0.9134 0.6324 0.0975 0 2.0000
>> A^2
ans =
1.0000 0 0 0 0 >> [E,R+R*S;O,S^2]
0 1.0000 0 0 0
0 0 1.0000 0 0
1.6294 1.8116 0.2540 1.0000 0
阵和对角阵,试通过数值计算验证 A >> E=eye(3); >> R=rand(3,2); >> O=zeros(2,3); >> S=diag(1:2); >> A=[E,R;O,S]
E O
R RS 。 S2
A=
1.0000 0 0 0 0
0 1.0000 0 0 0
3. 建立一个 5×5 矩阵,求它的行列式值、迹、秩和范数。 >> A=rand(5) A= 0.2785 0.5469 0.9575 0.9649 0.1576 >> det(A) ans = -0.1322 >> trace(A) ans = 3.4127 >> rank(A) ans = 0.9706 0.9572 0.4854 0.8003 0.1419 0.4218 0.9157 0.7922 0.9595 0.6557 0.0357 0.8491 0.9340 0.6787 0.7577 0.7431 0.3922 0.6555 0.1712 0.7060

Matlab上机练习题及答案

Matlab上机练习题及答案

Matlab 上机练习题及答案---------------------------------------------------------------------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<d ,c&d, c|d ,~c|~d解:命令为:a=[-1,0,-6,8;-9,4,0,;0,0,,-2;0,-23,0,-7] b=a(:,[1 2]) c=a([1 2],:) d=b ’ e=a*b f=c<d g=c&d h=c|d i=~c|~d---------------------------------------------------------------------5、求!201∑=n n解:命令文件为 sum=0; s=1;for n=1:20 s=n*s; sum=sum+s; end sum---------------------------------------------------------------------6、求a aa aaa aa a S n ++++=得值,其中a 是一个数字,由键盘输入,表达式中位数最多项a 的个数,也由键盘输入。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

第四次 上机作业
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<x1);
Disp([‘小于平均值的偶数是:’,num2str(x(n))]);
4、 输入20个数,求其中最大数和最小数。

要求分别用循环结构和调用Matlab
的max 函数、min 函数来实现。

Clear all ;close all ;clc;
A=input(‘请输入20个数的一个行向量:’); a=A(1); b=A(1); For m=A Ifa>=m a=m; Else if b<=m b=m; End End
Disp([‘最小的数是:’,num2str(a)]) Disp([‘最大的数是:’,num2str(a)])
5、 已知:633222221+++++= s 分别用循环结构和调用Matlab 的sum 函数
求s 的值。

Clear all ;close all ;clc; S=0; For a=0:63 C=2^a S=s+c; End
Disp([‘2的0次方到63次方的和是:’,num2str(s)])
6、 当n 分别取100、1000、10000时,求下列各式的值。

(1) )2ln (1)1(41312111=+-++-+-
+ n n (2) )4(7151311π=+-+-
(3) )31(4
164116141=+++++ n
要求分别用循环结构和向量运算(使用sum 或prod 函数)来实现。

Clear all ;close all ;clc; Sum1=0;%当n 取100时 For n= 1:100 X=(-1)^(n+1)*(1/n); Sum1=sum1+x; End
Disp([‘当n 取1000时:sum=’,num2str(sum2)] Sum2=0;%当n 取1000时 For n= 1:1000 X=(-1)^(n+1)*(1/n); Sum2=sum2+x; End
Disp([‘当n 取10000时:sum=’,num3str(sum3)] Sum2=0;%当n 取10000时 For n= 1:10000 X=(-1)^(n+1)*(1/n); Sum3=sum3+x; End
7、 编写一个函数文件,求小于任意自然数n 的Fibnacci 数列各项。

Fibnacci 数
列定义如下:
⎪⎩⎪
⎨⎧>+=====--2
,
2,
11,12121n f f f n f n f n n n
Function f=func_fibnacci(n)
%FIBNACCI 斐波那契(Finacci )数列 %f=func_fibnacci(n),
%Written by wangchngyou@shandongUniversity at wcihai,2011 If n==1 n==2 F=1; Else
F=func_fibnacci(n-1)+func_fibnacci(n-2); end
8、 编写一个函数文件,用于求两个矩阵的乘积和点乘,然后在命令文件中调用
该函数。

Clear all ;close all ;clc; A=input(‘请输入一个矩阵:’) B=input(‘请输入一个矩阵:’) [f1,f2]=func_Matrixprod(a,b); Disp(‘两矩阵乘积运算结果为:’) Disp(fi)
Disp(‘两矩阵点积运算结果为:’) Disp(f2)
9、 先用函数的递归调用定义一个函数文件求∑=n
i m i 1,然后调用该函数求

∑∑===++10
150
1
2
1001
1k k k k
k
k 。

Function sum=func_Sigmasum(n,m) %SIGAMASUM 西格玛求和 %sum=func_SigmaSuum(n,m)
%written by wangchenyou@shangdong University at weihai 2011 Ifn<=1 Sum=0; Else
Sum=n^m+func_sigmasum(n-1,m); end
10、 写出下列程序的输出结果。

(1) s=0;
a=[12,13,14;15,16,17;18,19,20;21,22,23]; for k=a for j=1:4 if rem(k(j),2)~=0 s=s+k(j); end end end s
(2)命令文件exe.m: global x x=1:2:5;y=2:2:6;
exsub(y);
x
y
函数文件sub.m: function fun=sub(z) global x
z=3*x;
x=x+z;
答: 1.s=108
2. X= 4 12 20
Y=2 4 6。

相关文档
最新文档