目录
第四题:构建一个求均值和平均值的函数,之后分别生成4组值,来运行求解
文章前言
今天刚刚考完期末考试,其中有一些题目确实有些意思,将题目与参考的代码分享。
注:题目可能只有一些重点,并且答案只用做参考,有疑问留言评论。
第一题:计算矩阵
本题与期中考试的第二问相同,但是题目顺序有些许偏差,不可直接引用。
上图是期中试题,期末为编程计算(1)、矩阵C^3;(2)、数组C^3;(3)、3^C
故而参考代码如下:
%期末考试第一题,计算矩阵
C=[1 4 7;8 5 2;3 6 0]; %输入矩阵
y1=C.^3 %矩阵C^3
y2=C^3 %数组C^3
y3=3.^C %3^C
% 进行对应的向量运算,使用y1_y3来保存数据
运行结果如下:
第二题:求解方程组,要求需要两种解法
题目所需求解的线性方程如上!
我这里提供参考两种方法,一种是矩阵分解求解线性方程组,另一种是使用左除运算符的直接解法
当然还包括线性方程组的迭代解法等等
第一种解法参考代码如下:
% 期末考试第二题求解方程组第一种解法
%利用矩阵分解求解线性方程组
A=[2 -3 1 2; 1 3 0 1; 7 1 -2 2; 1 -1 1 8];
b=[8 6 5 1]'; %取向量的逆向量
B=[A b];
n=4; %方程中的未知数的个数
rA=rank(A) %求秩
rB=rank(B)
format rat %取有理数的形式
if rA==rB&rA==n
X=A\b
elseif rA==rB&rA<n
X0=A\b %求方程的通解
Z=null(A,'r') %求方程的基础解系
else X='Equation has no solves'%意思是无解
end
运行结果为:
第二种解法参考代码如下:
%期末考试第二题的第二种解法
%利用左除运算符的直接解法
A=[2 -3 1 2; 1 3 0 1; 7 1 -2 2; 1 -1 1 8]; %系数矩阵A
b=[8 6 5 1]'; %常数项b
X=A\b
运行结果如下:
第三题:按照需求画图象
这道题相对于期中题目相较于简单化,应为对于一些所需要的标准减少了很多。
期中题目参考:matlab8.5的期中测试参考代码与分析_赵玄月的博客-CSDN博客
这次题目区别在于分为四部分,右上部分画一个周期的正弦函数图像,右下画一个余弦函数图像。
之后更多的一些标准使用默认即可。
本题参考参考代码如下:
%期末考试第三题
subplot(2,2,2); %对于正弦曲线绘图
x1=0:pi/20:2*pi; %规定自变量的范围
y1=sin(x1); %规定自变量因变量的变化关系与范围
plot(x1,y1,' -.r*','linewidth',2) %按照题目要求进行设置
xlabel('时间');ylabel('幅值') %设置轴标签
title('绘图示例') %设置标题
subplot(2,2,4); %对于余弦曲线绘图
x2=0:pi/10:4*pi
y2=cos(x2);
plot(x2,y2,'-b^','markersize',10)
xlabel('时间');ylabel('幅值')
title('绘图示例')
运行结果如下:
第四题:构建一个求均值和平均值的函数,之后分别生成4组值,来运行求解
先写一个函数.m文件,用于计算一组数据的平均值和中值,参考代码如下:
%建立主函数
function[A,M]=amfun(X)
%该函数调用内部子函数计算均值和中位数
n=length(X);
A=mean(X,n);
M=median(X,n);
%建立求均值子函数
function avg = mean(Y,n)
avg=sum(Y)/n;
end
%建立求中位数子函数
function med=median(Y,n)
Z=sort(Y);
if rem(n,2)==1
med=Z((n+1)/2);
else
med=(Z(n/2)+Z(n/2+1))/2;
end
end
end
建立函数.m文件方法如下:
首先选择file,之后new,之后选择function,界面如下
不要用正常的script建立.m文件,否则函数无法运行。
之后运行函数.m文件:
正常情况,它会报错,这个是很正常的,让我们看一下报错原因:
报错的原因是没有足够的输入变量,你需要输入变量,才可以运行的
例如输入一为,使用‘:’进行输入 ,即:
输入二要求使用linspace函数进行输入,即:
输入三为随机获得10个变量,这一问存在疑问,参考为:
输入四要求在【20,50】中均匀取10个数之后求解,即:
这就是第四问的所有问题求解。
分界线哈,开始简单化
第五问:求解方程右边含有变量的方程组
题目如下:
参考代码如下:
syms a b c x y z %定义变量
a=1,b=2,c=3, %代入已知数据
[x,y,z]=solve(y^2-z^2==x^2,y+z==a,x^2-b*x==c) %对于方程组进行求解
运行结果如下:
第六题、按要求创建数组
现给出2020级学生机械班第一学期考试课程和学生信息,图下表所示
表1 2020级机械班学生信息
|学号(number) | 姓名(name) |学习课程(course)| 成绩(score)
|20200103001 |赵凯| 高等数学、大学英语、计算机基础、机械制图|86 80 92 79|
|20200103002 | 王菲 |高等数学、大学英语、计算机基础、机械制图|78 85 90 82|
|20200103003|刘洋|高等数学、大学英语、计算机基础、机械制图|88 80 95 90|
表2 2020级机械班任课教师信息
|姓名(name)|孙天宇、刘梅芳、王海涛、杨一帆|
|开设课程(course)|高等数学、大学英语、计算机基础 、机械制图|
求:
1. 建立任课教师和学生的结构数组teacher和student。
2. 以建立的结构数组teacher和student为基础,创建班级的细胞数组,并显示教师和学生的信息。
3. 查询第一个学生的姓名、学习课程、成绩。
4. 查询所有开课教师的姓名。
这道题目说实话除了费时间其他没有任何难度,参考代码如下:
%期末考试第六题
student(1).number='20200103001';
student(1).name='赵凯';
student(1).couse={'高等数学','大学英语','计算机基础','机械制图'};
student(1).score='86 80 92 79';
student(2).number='20200103002';
student(2).name='王菲';
student(2).couse={'高等数学' '大学英语' '计算机基础' '机械制图'};
student(2).score='78 85 90 82';
student(3).number='20200103003';
student(3).name='刘洋';
student(3).couse={'高等数学' '大学英语' '计算机基础' '机械制图'};
student(3).score='88 80 95 90';
student %显示学生的结构数组
teacher=struct('name',{'孙天宇','刘美芳','王海涛','杨一凡'},'course',{'高等数学' '大学英语' '计算机基础' '机械制图'})
%显示老师的结构数组
class=cell(1,2);
class{1,1}=student;
class{1,2}=teacher;
celldisp(class)
%班级细胞数组
class{1}
class{2}
%分别显示学生和老师的信息
class{1}(1).name
class{1}(1).couse
class{1}(1).score
%查询第一个学生的姓名,学习课程,成绩
class{2}.name
%查询所有开课老师的姓名
运行结果如下:
结果截图一多,开始水帖,哈哈哈
期末考试结束,matlab其实真的需要去仔细学习,这些说实话有些真的很浅显,学会之后会觉得很简单,之后matlab画图是真的好看,给大家看几个书上的范例:
最后还有一些我们当时美赛画的图,真的超好看:
最后大家有问题请指正提问,学习冲冲冲。
执着追梦,勇攀高峰!!!