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