Matlab练习2

9.稀疏矩阵

求下列三对角线性方程组的解。

clc,clear
B1=[0;3;1;4;2];
B2=[2;4;6;6;1];
B3=[1;1;2;1;0];
B=[B1 B2 B3];
d=[1;0;-1];
A=spdiags(B,d,5,5)%开始是A=spdiags(B,d)
b=[0;3;2;1;5];%开始写成行向量了 提示维度必须一样
x=inv(A)*b

批注:①注意行向量与列向量,B存储时斜的要按列向量存储,b常数也是列向量。②主对角线以上为+1,+2等等,主对角线以下为-1,-2等。③spdiags(B,d,m,n)m和n是产生m行n列的稀疏矩阵。

10.输入一个字符,如果是大写就转换为小写,小写转换为大写,数字转换为数字的平方,其他保持。

clear,clc
c=input('输入一个字符:','s');
%input的用法 不加第二个选项's'是输入表达式
%加了‘s'是理解为字符串
if (c>='a'&&c<='z') %if中要用两个&
    c=c-('a'-'A');%开始写的是'A'-'a'
    c=char(c);%否则输出为字母的ASCII码
%     c=upper(c);%例子中的
elseif (c>='A'&&c<='Z')
    c=c+('a'-'A');
    c=char(c);%否则输出为字母的ASCII码
%     c=lower(c);%例子中的
elseif (c>='0'&&c<='9')
    c=str2num(c);%提示说用str2double提高性能
    c=c^2;
else
    c=c;
end
disp(c)

批注:①input的用法:不加第二个选项's'理解为输入表达式,加了‘s'是理解为输入字符串,第二个选项只能为's';②lower(str) :将字符串中的字母转换成小写,upper(str): 将字符串中的字母转换成大写。可以直接输出为字母。③char()可以将ASCII码值转换为输出字母。

11.(1)输入一个英文单词,判断是否以元音字母开头。

clear,clc
c=input('输入一个英文单词:','s');
switch c(1)
    case {'a','e','i','o','u','A','E','I','O','U'}
        disp([c,'以元音开头'])
    otherwise
        disp([c,'以辅音开头'])
end

(2)输入PM2.5数值,输出空气质量等级。

clear,clc
c=input('输入一个PM2.5数值:');
switch c
    case num2cell(0:34)
        disp('空气质量优');
    case num2cell(35:74)
        disp('空气质量良好');
    otherwise
        disp('空气质量严重污染')
end

12.用三种方法求Pi

(1)利用无穷级数展开式求Pi的近似值。

利用for 循环

clear,clc
n=input('输入迭代次数');
s=0;
g=-1;
for i=1:n
    g=-g;
    s=s+g*(1/(2*i-1));
end
pi=4*s

利用向量求和

clear,clc
n=input('输入n?')
x=1:2:(2*n-1);
y=(-1).^(2:n+1)./x;%开始写成n-1 笨死(~ ̄(OO) ̄)ブ
pi=4*sum(y)

用向量计算方法写出的程序更简洁,也更加具有MATLAB的特点。

(2)利用定积分的近似值求Pi的近似值。

clear,clc
b=1;a=0;
n=input('n=?');
h=(b-a)/n;
x=0:h:1;
y=sqrt(1-x.^2);
s=[];
for k=1:n
    s1=(y(k)+y(k+1))/2*h;
    s=[s,s1];
end
4*sum(s)

(3)利用蒙特卡洛法求Pi的近似值。

 pi=4P;P=落在圆内的点数/所投点的总数

所投的点落在圆内的充要条件是x^2+y^2<=1

clear,clc
s=0;
n=input('n=?');
for i=1:n
    x=rand(1);
    y=rand(1);
    if x^2+y^2<=1
        s=s+1;
    end
end
pi=4*s/n

 

原文地址:https://www.cnblogs.com/amberwang2018/p/10492706.html