慕课matlab学习 第三章-015

02-用if语句实现选择结构




% 第三节 程序流程控制
% 02-用for语句实现循环结构


%for语句格式
%  for 循环变量=表达式1 :表达式 2: 表达式3
%    循环体语句
%  end

%说明 for语句针对向量的每一个元素执行一次循环体
% 退出循环之后,循环变量的值就是向量中最后的元素值。
%eg
for k=[1,3,2,5]
    k
end

% 当向量为空时,循环体一次也不执行。
% eg:
for k=1:2:9
    k;
end


%举例应用 求圆周率 Π
% 1;  pi/4=1-1/3+1/5+1/7+....+(-1)^n+1 (1/(2n-1))'
%   这是求n个数之和的累加问题,可用以下递推式来描述:
%     Yi=Yi-1+fi (Yo=0)

% 方法1
y=0
g=-1;
n=input('n=?')
for i=1:n
    g=-g;
    y=y+g*1/(2*i-1);
end
pai=4*y


%利用向量求和的方法实现程序
 n=input('n=?')
 x=1:2:(2*n-1);         % 生成一个X的向量
 y=(-1).^(2:n+1)./x;    % 计算各个累加项的值
 pai=sum(y)*4           % 累加项求和*4=pai
 
 % 利用定积分求解 Π 的值
 % f(x)=(1-x^2)^1/2   Π/4=积分0-1 的f(x) 求解
 % 本次使用梯形法求解曲面面积
 % eg
 a=0; % 起始点
 b=1; % 终止点
 n=input('n=?')     % 分成的梯形数
 h=(b-a)/n;         % 在(a,b)区间之间分成n个等分,每个等分(间距)的大小是(b-a)/n
 x=a:h:b            % 创建向量 x, 起始为 a=0 终止为b=1 ,中间的的间距是 h (等价创建了一个长为n的间距) 
 f=sqrt(1-x.*x);    % 计算创建的x变量构成的fx 向量的值 的向量 用的是点乘,因为x是向量
 s=[];              % 用于存储每个值的距离
 for k=1:n          % 一共有分为了n个区间,每个计算出来的值是 f(1) f(2) ... f(n)
     s1=(f(k)+f(k+1))*h/2; % 求解每个小的梯形的面积=上底+下底的和 * 高 /2
     s=[s,s1] ;      %计算每个梯形后的面积,追加的形式放到 s 向量中取
 end
 pai=4*sum(s)       %对s向量进行求和,也就是说,对各个小梯形的面积进行求和计算得到整个的面积
 
 
 % 利用蒙特卡罗法求解 Π 的值
 s=0 ;
 n=input('投递次数 n=? ') ;
 for i=1:n    %设置投递的循环次数 
     x=rand(1); %均匀随机投递 0-1 的数值给x
     y=rand(1); %均匀随机投递 0-1 的数值给y
     if (x*x+y*y<=1)  %判断
         s=s+1;
     end
 end
 pai=s/n *4 
 
% 按照MATLAB的定,义,for语 句的循环变量也可以是一个列向量,其格式为:
% for循环变量=矩阵表达式
% 循环体语句
% end
% eg
for k1=[1,2,3,4] % 循环四次
end
for k2=[1;2;3;4] % 循环一次
end 
 
 
 
 
 
 





更多文章请关注《万象专栏》