练习1 基础练习
一、矩阵及数组操作:
1.利用基本矩阵产生3×3和15×8的单位矩阵、全1矩阵、全0矩阵、均匀分布随机矩阵([-1,1]之间)、正态分布矩阵(均值为1,方差为4)。
解eye(3)  eye(15,8)  ones(3)  ones(15,8)  zeros(3)  zeros(15,8)
X1=(1+(1-(-1))*rand(3))
X2=(1+(1-(-1))*rand(15,8))
Y1=1+sqrt(4)*randn(3)
Y2=1+sqrt(4)*randn(15,8)
2.利用fix及rand函数生成[0,10]上的均匀分布的10×10的整数随机矩阵a,然后统计a中大于等于5的元素个数。
解:a=fix((10-0+1)*rand(10)+0)
    x=5
i=find(a>=x)
n=length(i)
3.在给定的矩阵中删除含有整行内容全为0的行,删除整列内容全为0的列。
解:A=[1 2 2 3 4;0 0 0 0 0;4 5 6 2 3;0 0 0 0 0;]
A([2,4],:)=[]
B=A'
B(:,[2,4])=[]
二、绘图:
4.在同一图形窗口画出下列两条曲线图像:
              y1=2x+5; y2=x^2-3x+1,
并且用legend标注。
解:x=0:0.01:10;
y1=2*x+5;
y2=x.^2-3*x+1;
plot(x,y1,x,y2)
legend('y1', 'y2')
5.画出下列函数的曲面及等高线:
z=x^2+y^2+sin(xy).
解:[x,y]=meshgrid(0:0.25:4*pi);
z=x.^2+y.^2+sin(x.*y);
contour3(x,y,z);
meshc(x,y,z)
三、程序设计:
6.编写程序计算(x在[-3,3],间隔0.01)
解:x=input('ÇëÊäÈëxµÄÖµ:');
if x>=-3&x<-1
y=(-x.^2-4*x-3)/2;
elseif x>=-1&x<1
y=-x.^2+1;
elseif x>=1&x<=3
y=(-x.^2+4*x-3)/2;
else
y='error'
end
y
7.有一列分数序列:
求前15项的和。
解:a=1;
b=2;
sum=0;
for k=1:15
    c=b/a;
    sum=sum+c;
    t=b;
    b=a+b;
    a=t;
end
sum
8.用至少三种方法编写函数实现求任意整数n的阶乘。
解:法一:s=factorial(n)
法二:gamma(n)    求出的是(n-1)!
法三:n=input('please input n:');
x=1:n;
prod(x)
9.将任意大于6的偶数m写成两个素数p1、p2的和(试着写出所有的m=p1+p2的可能形式)。
解:function y=f(n);
n=input('ÇëÊäÈënµÄÖµ:');
if mod(n,2);
    error('n²»ÊÇËØÊý.ÇëÖØÐÂÔËÐгÌÐò.')
elseif n<=6;
    error('n±ØÐë´óÓÚ6.ÇëÖØÐÂÔËÐгÌÐò.')
else
    for m=1:n;
        for k=m:n;
            if (isprime(m))&(isprime(k))&(m+k==n);
            disp([num2str(n),'=',num2str(m),'+',num2str(k)]);
            break;
            end;
        end;
    end;
end;
10.是否任意3的倍数m可以写成两个素数p1、p2、p3的和(试着写出所有的m=p1+p2+p3
的可能形式)?
解:function y=fg(n);
n=input('请输入n的值:');
if mod(n,3);
    error('n不是3的倍数.请重新运行.')
elseif n<6;
    error('n必须不小于6.')
else
    for m=1:n;
        for k=m:n;
            for p=k:n
            if(isprime(m))&(isprime(k))&(isprime(p))&(m+k+p==n);
            disp([num2str(n),'=',num2str(m),'+',num2str(k),'+',num2str(p)]);
            break;
            end;
          end;
        end;
    end;
end
四、数据处理与拟合初步:
11.通过测量得到一组数据:
t
1
2
3
4
5
6
7
8
9
10
y
4.842
4.362
3.754
3.368
matlab等高线间隔
3.169
3.038
3.034
3.016
3.012
3.005
分别采用y=c1+c2e^(-t)和y=d1+d2te^(-t)进行拟合,并画出拟合曲线进行对比。
解:t=1:10;
y=[4.842,4.362,3.754,3.368, 3.169,3.038,3.034,3.016,3.012,3.005];
x1=exp(-t)
x2=t.*exp(-t)
y1=polyfit(x1,y,1)
可以写出:
y1=5.2165*exp(-t)+3.1564
y2=polyfit(x2,y,1)
可以写出:

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。