Matlab基础练习题
- 设可逆方阵为A,编写同时求 ∣ A ∣ \left|A\right| ∣A∣ , A 2 A^2 A2 , A − 1 A^-1 A−1 , A’ 的M函数文件。
function [a, b, c, d] = fun(m)
if nargin < 1
error('请输入输入参数m');
elseif size(m, 1) ~= size(m, 2)
error('您输入的不是可逆方阵');
else
a = det(m)
b = m ^ 2
c = inv(m)
d = m'
end
end
2.编写一函数的M文件,此函数表达式为 f ( x ) = { x x < 1 2 x − 1 1 ⩽ x ⩽ 10 3 x − 11 10 < x ⩽ 30 s i n ( x ) + l n ( x ) x > 30 f(x)=\begin{cases}x&x<1\\2x-1&1\leqslant x\leqslant10\\3x-11&10<x\leqslant30\\sin(x)+ln(x)&x>30\end{cases} f(x)=⎩ ⎨ ⎧x2x−13x−11sin(x)+ln(x)x<11⩽x⩽1010<x⩽30x>30
function y = fun(x)
if x<1
y=x
elseif (1<=x)&(x<=10)
y=2*x-1
elseif (10<x)&(x<=30)
y=3*x-11
else
y=sin(x)+log(x)
end
3.分别用for和while语句编写一M文件,计算1!+2!++50!的值
s=0
for i=1:50
s=s+prod(1:i)
end
4.在同一个图中画出衰减振荡曲线及它的包络线
t的取值范围是,给出标题,两坐标轴及曲线说明。
t=0:pi/50:4*pi;
y0=exp(-t/3);
y=exp(-t/3).*sin(3*t);
plot(t,y,'r',t,y0,':b',t,-y0,':b')
5.产生一个10*10矩阵,编程找出其最大元素,并指明其所在行数和列数
a=magic(10);
max(a);
max(max(a));
[X,Y]=find(a==max(max(a)))
6.随机产生100个平面点,编程找出距离某个点最近的前5个点,
并画图表示
% 生成随机平面点
rng(0); % 设置随机数种子以保证结果可重复
num_points = 100;
x = rand(num_points, 1);
y = rand(num_points, 1);
% 随机选择一个点作为参考点
idx_ref = randi(num_points);
x_ref = x(idx_ref);
y_ref = y(idx_ref);
% 计算所有点到参考点的距离
distances = sqrt((x - x_ref).^2 + (y - y_ref).^2);
% 找出距离最近的前5个点的索引
[~, idx_nearest] = mink(distances, 5);
% 绘制所有点的散点图,并在指示点处标出红色圆圈
scatter(x, y);
hold on;
scatter(x_ref, y_ref, 'r', 'filled', 'MarkerEdgeColor', 'k', 'LineWidth', 2);
scatter(x(idx_nearest), y(idx_nearest), 'g', 'filled', 'MarkerEdgeColor', 'k', 'LineWidth', 2);
hold off;
title('100个平面点及距离最近的前5个点');
legend({'所有点', '参考点', '距离最近的前5个点'});
% 输出所有点到参考点的距离
fprintf('所有点到参考点的距离:\n');
disp(distances);
7.找出所有的三位数中的水仙花数
m=100:999;
m1=rem(m,10);
m2=rem(fix(m/10),10);
m3=fix(m/100);
k=find(m==m1.^3+m2.^3+m3.^3)
s=m(k)