matlab系列文章: 目录
一、题目
- (1) 建立函数,其中输入变量为按年月日排序的 8 位整数(如 20220530),输出变量为该日期在年度的日序数
- (2) 已知 2022 年 1 月 1 日为星期六,建立函数,其中输入变量为按年月日排序的 8 位整数(如 20220530),输出该日是星期几
- (3) 定义 10 行 8 列的 Hilbert 矩阵(
a
i
j
=
1
i
+
j
−
1
a_{ij = frac{1}{i+j-1}}
- (4) 生成100000 以内的斐波那契数列各项,
a
1
=
1
,
a
2
=
2
,
a
n
=
a
n
−
1
+
a
n
−
2
,
n
=
3
,
4
,
5
,
.
.
.
a_{1}=1,a_{2}=2,a_{n}=a_{n-1}+a_{n-2},n=3,4,5,…
- (5) 求满足条件
n
!
>
1
0
15
n! gt 10^{15}
- (6) 输出全部的五位五角星数(例如 54748,
5
5
+
4
5
+
7
5
+
4
5
+
8
5
=
54748
5^5+4^5+7^5+4^5+8^5=54748
- (7) 交互式输入三个实数,若以此三数为边长能构成三角形,求其面积
- (8) 编程计算鸡兔同笼(三十五头,九十四足)
- (9) 绘制分段函数
f
(
x
)
=
{
−
x
,
−
5
< x < 0 x 2 2 , 0 ≤ x ≤ 2 2 s i n ( π x ) , 2 < x < 5 f(x)=left{ begin{aligned} &-x,qquad&-5text{textless}xtext{textless}0\\ &frac{x^2}{2},qquad&0 le{x}le{2}\\ &2sin(frac{pi}{x}),qquad&2text{textless}xtext{textless}5 end{aligned} right .
f(x)=⎩⎪⎪⎪⎪⎪⎪⎪⎪⎪⎨⎪⎪⎪⎪⎪⎪⎪⎪⎪⎧−x,2x2,2sin(xπ),−5<x<00≤x≤22<x<5 - (10) 读取数据
sd.xlsx
,对 1,2 列每行计算其和,和大于 6 在第 3 列相应行输入字母 A,否则输入字母 B,对 4,5 列每行计算其差,差大于 2 在第 6 列相应行输入字母 AB,否则输入字母 BA,并将操作以后的数据填回sd.xlsx
二、解答
题一
① 建立函数,其中输入变量为按年月日排序的 8 位整数(如 20220530),输出变量为该日期在年度的日序数
function out = getNum(date)
date_str = num2str(date);
d = [strcat(date_str(1:4),'-',date_str(5:6),'-',date_str(7:8))];
d_new = [strcat(date_str(1:4),'-01-01')];
out = daysact(d_new,d);
end
题二
① 已知 2022 年 1 月 1 日为星期六,建立函数,其中输入变量为按年月日排序的 8 位整数(如 20220530),输出该日是星期几
function out = getNum(date)
date_str = num2str(date);
d = [strcat(date_str(1:4),'-',date_str(5:6),'-',date_str(7:8))];
out = weekday(d);
end
题三
① 定义 10 行 8 列的 Hilbert 矩阵(
a
i
j
=
1
i
+
j
−
1
a_{ij = frac{1}{i+j-1}}
aij=i+j−11)
function m = Hilber()
for i=1:10
for j=1:8
a(i,j) = 1/(i+j-1);
end
end
m = a;
end
题四
① 生成100000 以内的斐波那契数列各项,
a
1
=
1
,
a
2
=
2
,
a
n
=
a
n
−
1
+
a
n
−
2
,
n
=
3
,
4
,
5
,
.
.
.
a_{1}=1,a_{2}=2,a_{n}=a_{n-1}+a_{n-2},n=3,4,5,…
a1=1,a2=2,an=an−1+an−2,n=3,4,5,...
function fib_arr = fib(k)
num(1) = 1;
num(2) = 1;
for i=3:k
num(i) = num(i-1) + num(i-2);
if num(i) >= k
break
end
fib_arr = num(1:end-1);
end
题五
① 求满足条件
n
!
>
1
0
15
n! gt 10^{15}
n!>1015 的最小整数
function out = getNum()
num(1) = 1;
for i = 1:1000000
if(num(i) > 10^15)
break
end
num(i+1) = num(i)*i
end
out = num(end-1);
end
题六
① 输出全部的五位五角星数(例如 54748,
5
5
+
4
5
+
7
5
+
4
5
+
8
5
=
54748
5^5+4^5+7^5+4^5+8^5=54748
55+45+75+45+85=54748)
function out = getNum()
count = 0;
for i=10000:99999
a = fix(i/10000);
b = fix(rem(i,10000)/1000);
c = fix(rem(i,1000)/100);
d = fix(rem(i,100)/10);
e = fix(rem(i,10)/1);
if(a^5+b^5+c^5+d^5+e^5==i)
count = count + 1;
num(count) = i;
end
end
out = num;
end
题七
① 交互式输入三个实数,若以此三数为边长能构成三角形,求其面积
function out = getNum(a,b,c)
if(a+b>c && a-b<c)
p = (a+b+c)/2;
s = (p*(p-a)*(p-b)*(p-c))^(1/2);
end
out = s;
end
题八
① 编程计算鸡兔同笼(三十五头,九十四足)
function out = getNum()
syms x y;
enq1 = x + y == 35;
enq2 = 2*x + 4*y == 94;
A = solve(enq1,enq2,x,y);
out = A;
end
题九
① 绘制分段函数
x=-5:.1:5;
f=zeros(size(x));
for i=1:length(x)
if (x(i)>-5) & (x(i)<0)
f = -x
end
if (x(i)>=0) & (x(i)<=2)
f = x.^2/2
end
if (x(i)>2) & (x(i)<5)
f = 2*sin(pi./x)
end
end
plot(f,x)
题十
① 读取数据 sd.xlsx,并将操作以后的数据填回 sd.xlsx
- 程序1
data1=xlsread('F:sd.xlsx',1,'A1:B191')
for i = 1:length(data1)
if data1(i,1)+data1(i,2)>6
xlswrite('F:sd.xlsx','A',1,strcat('C',num2str(i)))
else
xlswrite('F:sd.xlsx','B',1,strcat('C',num2str(i)))
end
end
- 程序二
data2=xlsread('F:sd.xlsx',1,'D1:E191')
for i = 1:length(data2)
if abs(data2(i,1)-data2(i,2))>2
xlswrite('F:sd.xlsx',{'AB'},1,strcat('F',num2str(i)))
else
xlswrite('F:sd.xlsx',{'BA'},1,strcat('F',num2str(i)))
end
end
暂无评论内容