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
浙公网安备 33010602011771号