day02-MATLAB的循环和条件语句

循环控制语句

for/end和while/end

一、for/end
1.格式:
for 变量= 起点:增量 :终点 (增量默认为1)
程序语句
end

2.例题:
(1)计算8阶Pascal矩阵的所有元素的和

>> A=pascal(8);          %设矩阵A为Pascal 8阶矩阵
>> s=0;
>> for i=1:8             %设置i为8次循环
    s=s+sum(A(i,:));   %计算A矩阵的第i列元素的和,sum为对矩阵A(i,:)的i行元素求和的命令
end,s               %循环结束后显示总和


更简便的方法如下:

>> sum(sum(pascal(8)))

ans =

       12869

(2)用高斯法将5阶魔方矩阵变换为上三角矩阵

>> A=magic(5)

A =

    17    24     1     8    15
    23     5     7    14    16
     4     6    13    20    22
    10    12    19    21     3
    11    18    25     2     9

>> for j=1:4        %列向操作次数,1-4for i=j+1:5
      

A(i,:)=A(i,:)-A(i,j)/A(j,j)*A(j,:);  %对矩阵A下三角进行消元操作
       end
end,A

A =

   17.0000   24.0000    1.0000    8.0000   15.0000
         0  -27.4706    5.6471    3.1765   -4.2941
         0         0   12.8373   18.1585   18.4154
         0         0         0   -9.3786  -31.2802
         0         0         0         0   90.1734

n阶魔方矩阵是:矩阵由1–n2组成,
每行、每列及对角线之和被称为魔术常量或魔法总和,M。
M=n*(n2+1)/2 ;
其中,n为阶数。

<数学思想>线性代数
<编程思想>高斯法化为三角矩阵

A(i,:)=A(i,:)-A(i,j)/A(j,j)*A(j,:); 

二、while/end
1.格式:
while 条件表达式
程序语句

end
2.例题
(1)用迭代法求解多项式的实根

x0=3;r=1;n=0;   %设置初值,r为计算误差初值,n为迭代次数
while  r> 1e-5   %当迭代误差小于设定误差1e-5时,结束循环
  x1=x0;        %上次的计算值代入下一次
  x0=3+5/x1^2;   %迭代运算  (这里也可以用.^2,我还不知道是为什么)
  r=abs(x0-x1);   %误差计算
  n=n+1;          %迭代次数加1
end,x0,n     

多项式的解法可以直接用roots()

>> roots([1 -3 0 -5])

ans =

   3.4260 + 0.0000i
  -0.2130 + 1.1891i
  -0.2130 - 1.1891i

(2)用迭代

条件语句

if/end 和if/elseif/……/else/end

一、if/end
1.例题
(1)输入一个整数,若能被2除尽,则显示它为偶数并显示除2后的商,否则显示此数为奇数

x=input('input a integer\n')
if rem(x,2)==0
disp('x is even')
b=x/2
 fprintf('%d\n',b)
else disp('x is odd')
end

(2)用二分法求多项式的根,已知多项式
f(x)=x3-3x2+5x-7=0
它在区间[0,4]有一实根,且f(0)<0,f(4)>0求此实根,允许误差为1E-5
解:
函数m文件如下:

function y=fun_101(x)
y=x.^3-3*x.^2+5*x-7;

文本m文件如下:

while abs(b-a) > tol    %设值初值[a,b]及容许误差tol
    x=(a+b)/2;          %用二分法作试算差
    fx=fun_101(x);      %调用代数方程式的函数文件,fun_101为函数名
    if fx<0             %若fx小于0,则缩小负值搜索区
        a=x;
    else b=x;           %否则缩小正值搜索区
    end
end,x

命令行窗口调用:

>>  a=0;b=4;tol=1e-5;
examp3_9

x =

    2.1795

>> 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

凭栏听雨客

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值