数学实验作业汇总

  • 格式:docx
  • 大小:42.53 KB
  • 文档页数:12

(1)产生一个5阶魔方矩阵M:M=magic(5)

(2)将矩阵M的第3行4列元素赋值给变量t:t=M(3,4)

(3)将由矩阵M第2,3,4行第2,5列构成的子矩阵赋给变N:N=M(2:4,2:3:5)

(4)将由矩阵M的前3行赋给变量N:?N=M(1:3,:)

(5)将由矩阵M的后3列赋给变量N:?N=M(:,end:-1:end-2)

(6)提取M的主对角线元素,并以这些对角线元素构成对角矩阵N:?N=diag(diag(M))或N=tril(triu(M))

(7)随机产生1000个100以内的整数赋值给变量t:?t=round(rand(1,1000)*100)

(8)随机产生100*5个100以内的实数赋值给变量M:M=rand(100,5)*100

(1)删除矩阵M的第7个元素??M(7)=[]

(2)将含有12个元素的向量t转换成3*4的矩阵:reshape(t,3,4)

(3)产生和M同样大小的单位矩阵:?eye(size(M))

(4)寻找向量t中非零元素的下标:find(t)

(5)逆序显示向量t中的元素:t(end:-1:1)

(6)显示向量t偶数位置上的元素:?t(2:2:end)

(7)利用find函数,将向量t中小于10的整数置为0:t(find(t<10&rem(t,1)==0))=0

(8)不用find函数,将向量t中小于10的整数置为0:?t(t<10&rem(t,1)==0)=0

(9)将向量t中的0元素用机器0(realmin)来代替:?t(find(t=0))=realmin

(10)将矩阵M中小于10的整数置为0:?M(find(M<10)&rem(M,1)==0)=0

2、写出完成下列操作的命令及结果。

(1)将1~50这50个整数按行优先存放到5*10的矩阵中,求该矩阵四周元素的和;

>> t=[1:10];

?>>??M=[t;t+10;t+20;t+30;t+40]

M =

1???? 2??? 3??? 4????5??? 6????7???? 8??? 9? 10

?? 11??? 12??? 13??? 14??? 15??? 16??? 17??? 18??? 19??? 20

?? 21??? 22??? 23??? 24??? 25??? 26??? 27??? 28??? 29??? 30

?? 31??? 32??? 33??? 34??? 35??? 36??? 37??? 38??? 39??? 40

?? 41??? 42??? 43??? 44??? 45??? 46??? 47??? 48??? 49??? 50

>>??N=M(2:4,2:9)

N?=

12??? 13??? 14??? 15??? 16??? 17??? 18??? 19

? 22??? 23??? 24??? 25??? 26??? 27??? 28??? 29

??32??? 33??? 34??? 35??? 36??? 37??? 38??? 39

??>> sum(sum(M))-sum(sum(n))

ans =

?? 663?

2)n取100、1000、10000,求序列1、1/2、1/3……1/n的和。

>> n=100; >> t=[1:n];

>> format rat

>> M=t.^-1;

>> S=sum(M)

S =

2630/507

>>?n=1000;

>> t=[1:n];

>> format rat

>> M=t.^-1;

>> S=sum(M)

S =

1804/241

>>?n=10000;

>> t=[1:n];

>> format rat

>> M=t.^-1;

>> S=sum(M)

S =

1106/113

1. 在同一坐标系下绘制y1=sin(t),y2=sin(2t),y3=sin(3t),其中y1的数据点用星号,线形为黑色虚线,y2的数据点用方块,线形为红色实线,y3的数据点用小圆圈,线形为蓝色点线。(要求采用一次绘出和逐次填加两种方式完成绘图)

>> t=linspace(0,2*pi,100);

>> y1=sin(t);

>> y2=sin(2*t);

>> y3=sin(3*t);

>> plot(t,y1,’*k:’,t,y2,’sr-’,t,y3,’ob-.’)

>> t=linspace(0,2*pi,100);

>> y1=sin(t);

>> plot(t,y1,’*k:’)

>> hold on

>> y2=sin(2*t);

>> plot(t,y2,’sr-’)

>> hold on

>> y3=sin(3*t);

>> plot(t,y3,’ob-.’)

>> hold off

2. 分别用plot和fplot函数绘制y=sin(1/x)的曲线,分析两曲线的差别

>> x=linspace(0,1/(2*pi),100);

>> y=sin(x.^-1);

>> plot(x,y,’*-’)

>> fplot(’sin(x.^-1)’,[0,1/(2*pi)],’o-’)

两曲线的差别:plot曲线在确定自变量x的取值间隔时采用平均间隔,图像不是十分准确;fplot曲线自动取值,在函数值变化平稳时,它的数值点会自动相对稀疏一点,在函数值变化剧烈处,所取点会自动密集一点,所以曲线更加光滑准确。

6.已知曲面方程f(x,y)= 2222sin()1xyxy,x [-1.5,1.5],y [-2.5,2.5],用建立子窗口的方法在同一图形窗口绘制出三维线图,网线图,曲面图。

>> x=-1.5*pi:pi/50:1.5*pi;

>> y=-2.5*pi:pi/50:2.5*pi;

>> [X,Y]=meshgrid(x,y);

>> Z=sin(sqrt(X.^2+Y.^2))./sqrt(1+X.^2+Y.^2);

>> subplot(1,3,1);plot3(X,Y,Z);

>> subplot(1,3,2);mesh(X,Y,Z);

>> subplot(1,3,3);surf(X,Y,Z);

8.将peaks函数生成的最高峰削去,并用色图矩阵“cool”修饰。

>> [x,y,z]=peaks(30);

>> x1=x(1,:);y1=y(:,1);

>> i=find(y1>1&y1<3);

>> j=find(x1>-1&x1<1);

>> z(i,j)=NaN*z(i,j);

>> surf(x,y,z)

>> colormap(cool)

3. 定义一个函数,函数的自变量为整数n,函数的功能是:随机产生n个三位整数,将其中小于平均值的数用0代替。

function [mean,x]=ff (n)

x=floor (100+899*rand (1,n));

m=length (x);

mean=sum (x)/m;

x (x

4. 编写函数,用来求下列函数的和,并给出n分别为100,1000,10000时,下列各式的值。

function y=s(n)

y=1;

for i=1:1:n

x=4*i^2/(4*i^2-1);

y=y*x;

end

disp(y)

s(100)=1.5669

s(1000)=1.5704

s(10000)=1.5708

5. 通过命令文件实现:随机产生20个数,输出其中的最大数和最小数。通过函数文件实现:随机产生n个数,输出其中的最大最小数。

命令文件

>> t=rand(1,20);

>> disp('max=');disp(max(t))

max=

0.7942

>> disp('min=');disp(min(t))

min=

0.0503

函数文件

function f3(n)

t=rand(1,n);

disp('max=');disp(max(t));disp('min=');disp(min(t)); end

3.求下列函数的一阶和二阶导数

>> syms x

>> diff(2/tan(x)+cos(x)/3,’x’,1)

ans =

- sin(x)/3 - (2*(tan(x)^2 + 1))/tan(x)^2

>> syms x

diff(2/tan(x)+cos(x)/3,’x’,2)

4.求积分

>> syms x

int(sqrt(exp(x)+1),x)

ans =

2*(exp(x) + 1)^(1/2) + 2*atan((exp(x) + 1)^(1/2)*i)*i

5.求下列级数的和

>> syms n

>> s=symsum((-1)^(n+1)*1/n,1,inf)

s =

log(2)

6.求函数在x=0处的泰勒展开式

>> syms x

>> taylor((exp(x)+exp(-x))/2,x,5,0)

ans =

x^4/24 + x^2/2 + 1

1. 利用randn函数声称符合正态分布的10*5随机矩阵A,进行以下操作:

(1).A的各列元素的均值和标准方差

(2).A的最大元素及其所在位置

(3).A的每行元素的和以及全部元素之和

(4).分别对A的每行元素按升序排序

(5).将A中的每行元素的总和按从大到小的顺序存入line_sum中,相应的行号存入line_num中

>> A=randn(10,5);

>> a1=mean(A)

>> a2=std(A)

>> AA=max(max(A))

>> [i j]=find(A==AA)

>> a3=sum(A,2)

>> a4=sum(sum(A))

>> a5=sort(A,2)

>> [line_sum,line_num]=sort(sum(A,2),'descend')

2、补充题:

利用导入向导(或借助函数imread)导入一幅单色图片存入变量ima_data中,然后依次完成下列操作:(1)用imshow函数显示图片;(2)删除图片前若干行(例如前100行)再次显示该图片。

(3)将图片上、下翻转再次显示图片。

先找到一个.bmp的文件,把它放入工作目录下,并修改名称为‘1.bmp’,执行下列操作。

ima_data=imread(’1.bmp’);

(1)imshow(ima_data);

(2)a=ima_data(101:end,:);imshow(a);

(3)imshow(flipud(ima_data));