zoukankan      html  css  js  c++  java
  • 数学软件实训1-MATLAB程序设计及应用初步

    数学软件实训任务一

    一 题目:MATLAB程序设计及应用初步

    二 目的:掌握MATLAB程序设计的基本方法,会利用MATLAB程序设计思想编程处理一些简单问题。

    三 要求:

                1 掌握控制流的基本语法结构。

                2 会应用for循环,while循环及分支语句if …else和switch…case等进行编程。

                3 结合实际应用,会用基本语句进行简单的交叉编程。

    四 实训内容:

                1 MATLAB控制流语法结构及其意义

        (1) 循环语句

          for循环语句结构

            for 循环变量=数组

                指令组;

            end

            对于循环变量依次取数组中的值,循环指令组直到循环变量遍历数组。数组最常用的形式是:初值:增量:终值。

             while循环语句结构

                while  条件式

                       指令组

                End

               当条件式满足,指令组一直执行,循环指令组直到条件式不满足。使用while语句要注意避免出现死循环。

        (2)分支语句

              if …else分支语句结构

                if 条件式1,

                   指令组 1;

                elseif 条件式2

              指令组 2;

            ………

            else

               指令组 k;

                 End

            如果条件式1满足,则执行指令组1.且结束该语句;否则检查条件式2,如果条件式2满足,且结束该语句;……,若所有条件式都不满足,则执行指令组k并结束该语句。

          switch分支语句结构

            switch  分支变量,

                  case值1,

                      指令组1 ;

                  case值2,

                      指令组2 ;

              ………

               otherwise

               指令组k;

                  end

               若分支变量取值1,则执行指令组1,且结束该语句;若分支变量取值2,则执行指令组2,且结束该语句;……;若分支变量不取所列的值,则执行指令组k并结束该语句。

        (3)中断语句

          pause 中断语句

          暂停执行,直到击键盘。pause(n)暂停n秒后再继续。

          pause 中断语句

          break中断执行,用在循环语句内表示跳出循环。

          return中断执行该程序,回到主调函数或指令窗口

          error 提示错误并显示字符串说明

    2 编程计算

    (1)  计算$sum_{n=1}^{100}frac{1}{n^{2}}$

    代码:

    >> s=0;
    >> for i=1:1:100
    s=s+1./(i*i);
    end
    >> s
    
    s =
    
        1.6350

    (2)已知矩阵$a_{m*n}$的元素$a_{ij}=i+j$,使求当m=3,n=4时,$a_{ij}$的全部元素。

    clear
    A=zeros(3,4);
    for i=1:3
    for j=1:4
    A(i,j)=i+j;
    end
    end
    >> A
    
    A =
    
         2     3     4     5
         3     4     5     6
         4     5     6     7

    (3)利用while循环语句来计算1!+2!+3!+...+50!

    >> ans=0;s=1;i=1;
    >> while(i<=50)
    s=s*i;
    ans=ans+s;
    i=i+1;
    end
    >> ans
    
    ans =
    
       3.1035e+64

    (4)试用条件分支语句编程计算函数

    $f(x)=left{egin{matrix}
    x & x<1\
    2x-1& 1leq xleq 10\
    3x-11& 10leq xleq 30\
    sinx+cosx &x>30
    end{matrix} ight.$

    %m文件
    function y=fenduan(x)
    if x<1
        y=x;
    elseif x>=1&&x<=10
        y=2*x-1;
    elseif x>=10&&x<=30
        y=3*x-11;
    else
        y=sin(x)+log(x);
    end
    
    %调用
    g=fenduan(1)
    
    g =
    
         1

    (5)试用if语句描述符号函数

    $g(x)=left{egin{matrix}
    1 &x>0 \
    0&x=0 \
    -1 &x<0
    end{matrix} ight.$

    %m文件
    function y=fenduan(x)
    if x>0
        y=1;
    elseif x==0
        y=0;
    elseif x<0
        y=-1;
    end
    
    %调用
    g=fenduan(-12)
    
    g =
    
        -1

    (6)编写一个转换成绩等级的函数文件,其中成绩等级转换标准为考试成绩分数在[90,100]分显示优秀,在[80,89]显示良好,[60,79]显示及格,在[0,59]显示不及格。

    %m文件
    function y=score(x)
    switch fix(x/10)
        case {10,9}
            fprintf('优秀
    ')
        case 8
            fprintf('良好
    ')
        case {6,7}
            fprintf('及格
    ')
        otherwise
            fprintf('不及格
    ')
    end
    
    %调用
    score(90)
    优秀

    (7)公元前五世纪我国古代数学家张丘建在《算经》一书中提出了“百鸡问题”。鸡翁一值钱五,鸡母一值钱三,鸡雏三值钱一,百钱买百鸡,问鸡翁、鸡母、鸡雏各几何?

    for i=0:100
    for j=0:100-i
        if(i*15+9*j+(100-i-j)==300)
            [i,j,100-i-j]
        end
    end
    end

    (8)设是一长度为n的数组

        编程计算 

    $s=sqrt{frac{1}{n-1}egin{bmatrix}
    sum_{i=1}^{n}{x_{i}}^{2}-noverline{x}
    end{bmatrix}^{2}}$

      ,$n>1,overline{x}=frac{1}{n}sum_{i=1}^{n}x_{i}$

    计算出当x=[3,4,7,8,12]时的$overline{x}$及s的值。

    %m文件
    function [s1,s]=fc1(x)
    s1=0;s2=0;s3=0; %s1是平均数,s2是平方累加,s3是根号内方程的值,s是最终结果;¹û£»
    n=length(x);
    for i=1:n
        s1=s1+x(i);
        s2=s2+x(i)*x(i);
    end
    s1=s1/n;
    s3=(s2-n*s1)*(s2-n*s1)/(n-1);
    s=sqrt(s3);
     
    %调用
    x=[3 4 7 8 12];
    [a,b]=fc1(x)
    
    a =
    
        6.8000
    
    
    b =
    
       124

    (9)求满足$sum_{n=0}^{m}ln(1+n)>100$的最小的m值

    >> s=0;
    >> i=0;
    >> while(s<100)
    s=s+log(1+i);
    i=i+1;
    end
    >> i-1
    
    ans =
    
        37
  • 相关阅读:
    ICE框架之Slice2CSharp映射---接口的映射
    ICE框架之Sclice2CSharp映射---结构的映射
    ICE框架之Sclice2CSharp映射---异常的处理
    ICE框架之Slice2CSharp映射---标识符、模块、内置类型的映射
    关于clientHeight、offsetHeight、scrollHeight[转]
    GridView中设置日期格式不起作用的解决方法
    提供 ice分布式程序设计中文版
    更换网卡后给网卡分配IP不成功的解决方法
    ICE框架之Slice2CSharp映射---字典的映射
    ICE框架之Slice2CSharp映射---异常的映射
  • 原文地址:https://www.cnblogs.com/jiaxinwei/p/8151195.html
Copyright © 2011-2022 走看看