zoukankan      html  css  js  c++  java
  • 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
    

     

  • 相关阅读:
    Android消息队列模型——Thread,Handler,Looper,Massage Queue
    源代码管理十诫
    他们怎样读书和选书(汇总篇)
    Android消息处理机制
    互联网上的免费服务都是怎么赚钱的
    编程是一种对你的身体健康十分有害的工作
    ERROR/AndroidRuntime(716): java.lang.SecurityException: Binder invocation to an incorrect interface
    什么是 MIME Type?
    TCP/IP:网络因此互联
    Eclipse上GIT插件EGIT使用手册
  • 原文地址:https://www.cnblogs.com/amberwang2018/p/10492706.html
Copyright © 2011-2022 走看看