一、实验目的(本次实验所涉及并要求掌握的知识点)
二、实验内容与设计思想(设计思路、主要数据结构、主要代码结构、主要代码段分析、电路图)
创建数组
指定元素的数组A=[3 10 1 6 5]
两个等差数组a和b,起始值为2,间距分别为2和3,终值为 10;运用linspace函数创建[2,8]之间,包含8个元素的等差数组c
>> A=[3 10 1 6 5]
A =
3 10 1 6 5
>> a=2:2:10
a =
2 4 6 8 10
>> b=2:3:10
b =
2 5 8
>> c=linspace(2,8,8)
c =
列 1 至 7
2.0000 2.8571 3.7143 4.5714 5.4286 6.2857 7.1429
列 8
8.0000
创建矩阵
矩阵B的第一列和第四列是数组A的转置,第2列为A+1的转置,第3列为A-1的转置。
将矩阵B的第2~5行中的第1、3列元素赋值给矩阵C
>> B=[A' (A+1)' (A-1)' A']
B =
3 4 2 3
10 11 9 10
1 2 0 1
6 7 5 6
5 6 4 5
>> C=B([2,3,4,5],[1,3])
C =
10 9
1 0
6 5
5 4
数组和矩阵的运算
计算A+a、A.*a、A^a
删除矩阵B的第2行
求矩阵B的大小和维数
>> A+a
ans =
5 14 7 14 15
>> A.*a
ans =
6 40 6 48 50
>> A.^a
ans =
9 10000 1 1679616 9765625
>> B([2],:)=[]
B =
3 4 2 3
1 2 0 1
6 7 5 6
5 6 4 5
>> size(B)
ans =
4 4
>> length(size(B))
ans =
2
MATLAB程序设计
编程求
从键盘输入一个4X5的矩阵,编程求出其最大元素和最小元素值及所在位置。
一球从100m高度自由下落,每次落地后反跳回原高度的一半,再落下,求它在第10次落地时,共经过多少m?
//使用for循环语句
>> s=0;
for i=1:20
s=s+sum(factorial(i));
end
disp(s)
2.5613e+18
//或者直接使用symsum函数
>> syms n
>> symsum(sum(factorial(n)),n,1,20)
ans =
2561327494111820313
Symsum函数用于在Matlab 中求和。
语法为:symsum(f,n,a,b),其中:
f是需要求和的表达式;
n是求和符号,如k或i;
a是求和的下限;
b是求和的上限。
>> r=randi(100,4,5)
r =
44 19 71 66 96
39 49 76 17 35
77 45 28 12 59
80 65 68 50 23
>> x=max(max(r))
x =
96
>> y=min(min(r))
y =
12
>> [i,j]=find(x==r)
i =
1
j =
5
>> [i,j]=find(y==r)
i =
3
j =
4
Randi函数用于生成随机的矩阵,第一个数字为范围,max(x),min(y)用于求矩阵中的最大最小值,由于max/min用于矩阵时返回的是提取每行最大/最小元素的数组,所以连续两次套用max/min函数以便直接得到矩阵中的最大/最小元素值。
>> h=100
h =
100
>> x=h
x =
100
>> for i=1:10
h=h/2;
x=x+2*h;
end
>> disp(x);
299.8047
C语言入门题,简单的编程
MATLAB绘图命令
用plot,fplot绘制函数y=cos(tan(πx))的图形。
用ezplot绘制函数exy-sin(x+y)=0在[-3,3]上的图形。
用ezplot绘制摆线x=a(t-sint) y=a(1-cost),t∈[0,2π]的图形。
用surf,mesh绘制曲面z=2x2+y2。
用polar绘制阿基米德螺线r=aθ和三叶玫瑰线r=acos3θ
%plot,fplot函数
>> x=linspace(-0.5,0.5,30)
>> y=cos(tan(pi*x));
>> plot(x,y)
>> fplot(@(x)[cos(tan(pi.*x))],[-0.4,0.4])
%ezplot函数
>> ezplot('exp(x*y)-sin(x+y)=0',[-18,18])
%ezplot绘制摆线
>> a=1;
>> x=a*(t-sin(t));
>> y=a*(1-cos(t));
>> ezplot(x,y,[0,2*pi])
%用surf ,mesh绘制曲面z
>> x = -5:0.5:5;
y = -5:0.5:5;
[X, Y] = meshgrid(x, y);
Z = 2*X.^2 + Y.^2;
subplot(1, 2, 1);
surf(X, Y, Z);
>> subplot(1, 2, 2);
meshc(X, Y, Z);
%使用ploar绘制阿基米德螺线
theta = 0:0.1:6*pi;
a = 6;
r = a*theta;
subplot(1, 2, 1);
polar(theta, r);
%使用ploar绘制三页玫瑰线
theta = 0:0.01:2*pi;
rho = cos(3*theta);
polarplot(theta,rho)
效果图:
左为surf绘制,右为mesh绘制
生成图像可以使用title(titletext)函数来添加标题,不用在word里面给图加题注,这里笔者偷懒了没有用。
结语
刚学数学建模这门课,这篇文章是老师布置的作业,感觉对于代码能力的需求比较低,有些C语言基础就能应对,主要还是对于数学能力的要求更多一些,但是勤查官方文档的好习惯不能丢,有想法多查查文档总能有收获。