数学软件实训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\{\begin{matrix}

x & x<1\\

2x-1& 1\leq x\leq 10\\

3x-11& 10\leq x\leq 30\\

sinx+cosx &x>30

\end{matrix}\right.$

%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\{\begin{matrix}

1 &x>0 \\

0&x=0 \\

-1 &x<0

\end{matrix}\right.$

%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(\'优秀\n\')
    case 8
        fprintf(\'良好\n\')
    case {6,7}
        fprintf(\'及格\n\')
    otherwise
        fprintf(\'不及格\n\')
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}\begin{bmatrix}

\sum_{i=1}^{n}{x_{i}}^{2}-n\overline{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