diff --git a/姚安欣/Mengtkl.m b/姚安欣/Mengtkl.m new file mode 100644 index 0000000..6ad088b --- /dev/null +++ b/姚安欣/Mengtkl.m @@ -0,0 +1,61 @@ + +%27页例题 +clc; clear; close all; +n = 10000; % 使用较小的 n 值以便更容易可视化 +x = unifrnd(0, 12, [1, n]); +y = unifrnd(0, 9, [1, n]); +ans=sum(y < x.^2 & x <= 3)+sum(y < 12 - x & x >= 3); +ans=ans/n; +% 找出满足条件的点 +condition1 = y < x.^2 & x <= 3; +condition2 = y < 12 - x & x >= 3; +condition_met = condition1 | condition2; % 满足任一条件的点 +condition_not_met = ~condition_met; % 不满足任何条件的点 + +% 创建图形窗口 +figure; +hold on;%在同一张图上绘图 + +% 绘制不满足任何条件的点 +scatter(x(condition_not_met), y(condition_not_met), 'k.'); % k----黑色 .----绘制样式 +%scatter绘制散点图 +%x(condition_not_met) 会返回一个新的向量,其中只包含 x 中对应 condition_not_met 为 true 的元素。 + +% 绘制满足第一个条件的点 +scatter(x(condition1), y(condition1), 'r.'); % 红色 + +% 绘制满足第二个条件的点 +scatter(x(condition2), y(condition2), 'b.'); % 蓝色 + +% 添加图例和标签 +legend('不满足任何条件的点', '满足 y < x^2 且 x <= 3 的点', '满足 y < 12 - x 且 x >= 3 的点'); +xlabel('x'); +ylabel('y'); +title('随机生成的点和满足条件的点'); +hold off; + + +%蒙特卡洛法求圆周率qw +clc;clear;close all; + +n=10^5; +x=unifrnd(-1,1,[1,n]); +y=unifrnd(-1,1,[1,n]); +con1=x.^2+y.^2<=1; +con2=~con1; +ans=sum(x.^2+y.^2<=1); +ans=ans/n*4; + +figure ; +hold on; + +scatter(x(con1),y(con1),'r.'); +scatter(x(con2),y(con2),'k.'); + +hold off; + + + + + +