% 定义并绘制一个椭圆,a为椭圆的长轴,b为椭圆的短轴
clc;clear;close all
a=5;      % 椭圆的长轴
b=2;      % 椭圆的短轴
f=@(x,y) x.^2/a^2+y.^2/b^2-1;  % 椭圆的隐函数方程
fimplicit(f,'LineWidth',2);    % 使用隐函数绘图命令绘制椭圆

set(gcf,'units','normalized','position',[0.2 0.2 0.6 0.6]);     % 设置 figure 窗口的位置和尺寸
grid on
axis equal
axis([-(a+0.5),(a+0.5),-(b+0.5),(b+0.5)])                       % 设置坐标轴刻度范围
pause(2)
hold on

% 绘制椭圆的包络矩形
rectangle('Position',[-a,-b,2*a,2*b],'EdgeColor','r','LineWidth',2) % 绘制椭圆的包络矩形
A=4*a*b;     % 计算包络矩形的面积
pause(2)
% 往矩形区域里, 投放 N 个均匀分布的随机点,N的值越大求得的椭圆的近似面积精度越高
N=20000;
xk=-a+(a+a)*rand(1,N);    % 随机点的 x 坐标
yk=-b+(b+b)*rand(1,N);    % 随机点的 y 坐标
scatter(xk,yk,'g.');

% 统计落在椭圆里面的, 随机点的个数, 近似求椭圆面积
r=xk.^2/a^2+yk.^2/b^2;    % 随机点是否落在椭圆里的判据
m=find(r<=1);             % 找到落在椭圆里面的随机点
n=length(m);              % 统计落在椭圆里面的, 随机点的个数
S=(n/N)*A                 % 蒙特卡洛法, 近似求椭圆面积

声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。