《MATLAB编程练习题》小结

"You are more than what you have become now"

非标准答案自编,权当练习熟悉知识点

1.产生 100 到 1 的等差数列,数据点为 20 个,赋值给 x。获取 x 的第 10 个单元的值,赋值给 x1;获取 x 的前 10 个单元的值,赋值给 x2;获取 x 的后 5 个单元的数据,赋值给 x3;将 x 的偶数单元中的数据赋值给 x4;将 x 的数据倒排,赋值给 x5。

x=[1:5:100]
x1=x(10)
x2=x(1:10)
x3=x(end-4:end)
x4=x(2:2:end)
x5=fliplr(x)        %%fliplr - 将数组从左向右翻转

2.创建矩阵 A 和 B,然后执行下列运算:
Y1=A+B Y1=A.+B
Y2=A-B Y2=A.-B
Y3=A*B Y3=A.*B
Y4=A\B Y4=A.\B
Y5=A/B Y5=A./B
Y6=A^2 Y6=A.^2
Y7=3^B Y7=3.^B
Y8=A^B Y8=A.^B

A=[1:3;4:6;7:9];
B=[2 3 4;5 6 7;8 9 1];
Y1=A+B,		%%Y12=A.+B提示运算符使用无效
Y2=A-B,		%%Y22=A-.B提示运算符使用无效
Y3=A*B,Y32=A.*B
Y4=A\B,Y42=A.\B
Y5=A/B,Y52=A./B
Y6=A^2,Y62=A.^2
Y7=3^B,Y72=3.^B
%%Y8=A^B,报错
Y82=A.^B

3.生成相量 A,其元素为区间[1,999]内的整数,然后找出 A 中能被 13 整除且
大于 500 的数。

A=1:999;
j=1;
for i =A
    if A(i)>500
        if rem(A(i),13)==0
            C(j)=A(i);
            j=j+1;
        end
    end
end
disp(["符合要求的数为:",C])

4.求线性方程组的系数矩阵的行列式、迹、秩、逆,并求解线性方程组。

A=[1 -1 1;2 1 1;1 -1 -2];
Det=det(A)
Trace=trace(A)
Rank=rank(A)
Inv=inv(A)
B=[1;2;-4];     %%向量行与列
j1=Inv*B
j2=A\B

5.用红色点画线方式绘制函数y = sin( x) +cos(x)在[−π,π]上的曲线,并以“函数”为标题。

x=-pi:0.1:pi;
y=sin(x)+cos(x);
plot(x,y,'-.r','LineWidth',1.6)
title('函数')

6.用多子图方式分别绘制曲线y1=sin(x+1), y2=e0.5x,y3=y1+y2在[0,5π]上的曲线。

x=0:0.1:5*pi;
y1=sin(x+1);
y2=exp(0.5*x);
y3=y1+y2;
subplot(1,3,1),plot(x,y1);
subplot(1,3,2),plot(x,y2);
subplot(1,3,3),plot(x,y3);

7.采用多图叠绘的方式分别绘制正弦曲线y1=sin(x+1)、余 弦 曲 线y2=cos(x)+1在区间[0,2π]上的曲线,要求两条曲线一条用实线,一条用虚线,一条用红色,一条用绿色,线宽均设置为 2,并为两条曲线添加图例“正弦曲线”和“余弦曲线”。

x=0:0.1:2*pi;
y1=sin(x+1);
y2=cos(x)+1;
[AX,H1,H2]=plotyy(x,y1,x,y2);
set(H1,'linestyle','-','marker','o','color','r','LineWidth',2);
set(H2,'linestyle','-','marker','*','color','g','LineWidth',2);
%% line(x,y1,'Linestyle','-','color','r')
%% line(x,y2,'Linestyle','--','color','g')
legend('正弦曲线','location','southeast','余弦曲线','location','southeast')

8.绘制三维曲线x=3tsin(t),y=3tcos(t) , z=t, ∈ [1,10]。

t=0:0.1:10;
x=3.*t.*sin(t);
y=3.*t.*cos(t);
z=t;
plot3(x,y,z),grid;

9.在 XY 平面内选择区域[0,6]和[0,6]绘制二维高斯函数的三维网格曲面。

x=0:0.1:6;
y=0:0.1:6;      %%二维平面所以会有不同
z=exp(-(x-3).^2+(y'-3).^2);
subplot(1,2,1),mesh(z);
subplot(1,2,2),surf(z);

10.在 XY 平面内选择区域[-6,6]和[-6,6]绘制函数的三维曲面。

x=-6:0.5:6;
y=-6:0.5:6;      %%二维平面所以会有不同
z=sin(sqrt(x.^2+y'.^2))./sqrt(x.^2+y'.^2);		%%注意加“.”
subplot(1,2,1),mesh(z);
subplot(1,2,2),surf(z);

11.利用 while 循环求出 100 到 200 之间第二个能被 31 整除的数。

x=100:200;
n=0;
i=1;
while n<2
    if rem(x(i),31)==0
        n=n+1;
        c(n)=x(i);
    end
    i=i+1;
end
disp(c(2))

12.用 for 循环语句计算求和的程序。

x=0:1000000;
k=0;
for i=x
    k=k+0.2.^i;
end
disp(k)

13.分别用逆矩阵法和除法求解线性方程组

A=[1 4 -2 2;
    2 1 -4 1;
    5 2 -1 -1;
    -1 3 -2 3];
B=[10 5 21 1]';

jie1=inv(A)*B
jie2=A\B

14.求解非线性方程x4-3x3+2x2-2*x+5=0
的根、导数以及 x = 2 时的值。

A=[1 -3 2 -2 5];
Roots=roots(A)
p=polyder(A)
Y=polyval(A,2)

15.给出一组数据 x=[-1,-0.96,-0.62,0.1,0.4,1],y=[-1,-0.1512,0.386,
0.4802,0.8838,1],分别使用 2~5 次多项式对其进行多项式拟合,绘制出拟合
曲线。

x=[-1,-0.96,-0.62,0.1,0.4,1]
y=[-1,-0.1512,0.386,0.4802,0.8838,1]
subplot(2,3,1),plot(x,y,'o','LineWidth',1)%%原始数据

a1=polyfit(x,y,2);		
xi=linspace(-1,1);
yi1=polyval(a1,xi);
subplot(2,3,2),plot(x,y,'o',xi,yi1,'y','LineWidth',1)

a1=polyfit(x,y,3);	
xi=linspace(-1,1);
yi1=polyval(a1,xi);
subplot(2,3,3),plot(x,y,'o',xi,yi1,'c','LineWidth',1)

a1=polyfit(x,y,4);	
xi=linspace(-1,1);
yi1=polyval(a1,xi);
subplot(2,3,4),plot(x,y,'o',xi,yi1,'g','LineWidth',1)

a1=polyfit(x,y,5);	
xi=linspace(-1,1);
yi1=polyval(a1,xi);
subplot(2,3,5),plot(x,y,'o',xi,yi1,'b','LineWidth',1)

%%linspace(X1, X2) generates a row vector of 100 linearly equally spaced points between X1 and X2.

啊啊啊啊,用时太多了,想想还是不如直接去刷代码,,,,,写blog有点得不偿失啊,,,而且有点太基础了。。。

在这里插入图片描述

你可能感兴趣的:(MATLAB学习笔记,matlab)