数学实验作业汇总
余年寄山水
973次浏览
2021年01月30日 00:36
最佳经验
本文由作者推荐
党员申请书-鼓励自己的话
(
1
)产生一个
5
阶魔方矩阵
M
:
M=m agic(5)
(
2
)将矩阵
M
的第
3
行
4
列元素赋值给变量
t
:
t=M(3,4)
(
3
)将由矩阵
M
第
2
,
3
,
4< br>行第
2,5
列构成的子矩阵赋给变
N
:
N=M(2:4,2: 3:5)
(
4
)将由矩阵
M
的前
3
行赋给变量< br>N
:
N=M(1:3,:)
(
5
)将由矩阵M
的后
3
列赋给变量
N
:
N=M(:,end:-1:end-2)
(
6
)
提取< br>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< br>中的
0
元素用机器
0
(
realmin
)来代替:< br>
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
11
12
13
14
15
16
17
18
19
21
22
23
24
25
26
27
28
29
31
32
33
34
35
36
37
38
39
41
42
43
44
45
46
47
48
49
>>
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< br>、
10000
,求序列
1
、
1/2
、
1/3
……
1/n
的和。
20
30
40
50
10
>> 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< br>-
’,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
)
=
sin(
x
2
y
2
)
1
x< br>
y
2
2
,x
[-1.5
< br>,
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
编写函数,用来求 下列函数的和,并给出
n
分别为
100,1000,10000
时,下列各式 的值。
2
2
4
4< br>
6
6
2n
2n
…
=
…< br>
1
3
3
5
5< br>
7
2n-1
2n-1
2
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); < br>disp('max=');disp(max(t));disp('min=');disp(min (t));
end
3.
求下列函数的一阶和二阶导数
cos
x
2
y=
tan
x
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.
求积分
e
x
+1
dx
>> 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
)将图片上、下翻转再次显示图片。
先找到一个
.b mp
的文件,把它放入工作目录下,并修改名称为
‘’,
执行下列操作。
i
ma_data=imread(’’);
(1)imshow(ima_data);
(2)a=ima_data(101:end,:);imshow(a);
(3)imshow(flipud(ima_data));
3.
下表所示是
0~90
度内某些数的正弦近似值
x
度
Sinx
0
0
15
0.2588
30
0.5
45
0.7071
60
0.866
75
0.9659
90
1
利用线性、 样条差值求
x=20
、
40
、
80
度时正弦值,这两种方法 哪个好?为什么
实验步骤:利用
inerp1
函数先分别求出线性插值和三 次样条插值所得到的
y11
和
y12
,再利用
sin
(x
)
函数得到准确的
y1
,比较
y11
和
y1
,
y12
和
y12
,不难得出结论。
所用语句
clear;clc;
x=[0 15 30 45 60 75 90]./180.*pi;
y=sin(x);
x1=[20 40 80]./180.*pi;
y11=interp1(x,y,x1,’linear’);
y12=interp1(x,y,x1,’spline’);
y1=sin(x1);
主要结果
y11= 0.3392
0.6381
0.9773;
y12=0.3420
0.6428
0.9849;
y1=0.3420
0.6428
0.9848;
4.
已知某次实验测得数据如下:
x
y
x
y
1
0.87
5.4
1.4
0.52
5.8
1.8
5.21
6.2
2.2
3.51
6.6
2.6
14.29
7
3
19.43
7.4
3.4
14.13
7.8
3.8
41.53
8.2
4.2
13.91
8.6
4.6
58.56
9
5
14.99
9.4
130.47
44.82
21.25
43.15
281.25
200.09
177.93
344.53
509.84
531.07
260.49
(
1
)请用
3
次多项式进行拟合,并给出拟合函数在
0
、
0.5
、1
、
1.5^9
、
9.5
处的值
(
2
)估计用几阶多项式拟合的效果较好,并说明理由。
4.(1)clear;clc;
x=1:0.4:9.4;
y=[0.87 0.52 5.21 3.51 14.29 19.43 14.13 41.53 13.91 58.56 14.99 130.47 44.82 21.25 43.15 281.25
200.09 177.93 344.53 509.84 531.07 260.49];
x1=0:0.5:9.5;
p=polyfit(x,y,3);
y1=polyval(p,x1);
主要结果
:y1=[50.55 33.03 18.91 8.38 1.61 -1.23 0.05 5.62 15.65 30.32 49.80 74.28 103.92
138.91 179.41 225.61 277.67 335.79 400.12 470.85]
(2) 19
阶拟合效果最好。理由通过编写 差方和函数
(
基于最小二乘原理)
f(n)
f(n)
函数如下:
function tz=f(n)
t=[];
x=1:0.4:9.4;
y=[0.87 0.52 5.21 3.51 14.29 19.43 14.13 41.53 13.91 58.56 14.99 130.47 44.82 21.25 43.15 281.25
200.09 177.93 344.53 509.84 531.07 260.49];
for i=1:n
p=polyfit(x,y,i);
y1=polyval(p,x);
c=sum((y-y1).^2,2);
t=[t c];
end
tz=find(t==min(t));
令
n=22< br>(一共
22
组数据)
f
函数值最小时是
19
阶时
所以得出结论
19
阶多项式拟合效果最好。
再用拟合图像(
p=polyfit(x,y,19)
,
plot(x,y,’:o’,x,poly val(p,x),’
-
*’)
)也可以看出
19
阶多项式拟合效果 最
好。
2
、自行练习题。下列填空题是期中考试出错比较多的题目,请认真考虑并上机调试。
(
6
)逆序显示向量
t
中的元素:
(
7
)显示向量
t
偶数位置上的元素
:
(
9
)删除向量
t
中最小的
5
个数:
< br>(
17
)将
1~50
按列优先存放到
5*10
的矩阵
M
中:
(
18
)求矩阵
M
最大值所在的位置:
(
19
)统计字符串
S
中小写字母的个数:
(< br>20
)设
A
是
n
阶
0
、
1
方阵,
A
边界上
1
的个数:
(6).t(end:-1:1)
(7).t(2:2:end)
(9).M=sort(t)
a=find(t
t(a)=[]
(17).t=[1:5:46]
M=[t;t+1;t+2;t+3;t+4]
(18).[i,j]=find(M==max(max(M)))
(19).a=find(s>=’a’&s<=’z’)
num=length(a)
(20).B=A(2:end-1,2:end-1)
num=sum(sum(A))-sum(sum(B))
1.
分别用矩阵求逆、矩阵除法以及矩阵分解求线性方程组的解
2
x
1
2
x
2
x
3
x
4
4
4
x
3
x
x
2
x
6
1
2
3
4
8
x
1
3
x
2
3
x
3
4
x
4
12
3
x
1
3
x
2
2
x
3
2
x
4
6
矩阵求逆
>> A=[2,2,-1,1;4,3,-1,2;8,3,-3,4;3,3,-2,-2];
>> b=[4,6,12,6]’;
>> inv(A)*b
运用左除运算符
>> A=[2,2,-1,1;4,3,-1,2;8,3,-3,4;3,3,-2,-2];
>> b=[4,6,12,6]’;
>> x=Ab
运用矩阵分解
>> A=[2,2,-1,1;4,3,-1,2;8,3,-3,4;3,3,-2,-2];
>> b=[4,6,12,6]’;
>> [Q,R]=qr(A);
>> x=R(Qb)
4.
在区间
[30,50]
内,求
f
(< br>x
)
5sin(
x
)
2log
3
x
1.8
的零点
。
>> f=’5*sin(x)
-
2*(log(x)/log(3))+1.8’;
>> ezplot(f,30,50)
>> fzero(f,33)
ans =
32.5547
>> fzero(f,34)
ans =
33.3960
>> fzero(f,38)
ans =
39.0426
>> fzero(f,[39.4
,
39.5])
ans =
39.4785
则方程有四个零点
6.
给出实验数据如下: