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
更多文章请关注《万象专栏》
转载请注明出处:https://www.wanxiangsucai.com/read/cv14335