zoukankan      html  css  js  c++  java
  • 正方形和球体,利用蒙特卡洛计算pi值

    clc;
    clear all;
    close all;
    
    
    R = 3;
    time = 10000;
    origin = [0,0,0];
    %%======绘制球体======
    t=linspace(0,pi,25);
    p=linspace(0,2*pi,25);
    [theta,phi]=meshgrid(t,p);
    x=R * sin(theta).*sin(phi) + origin(1);
    y=R *sin(theta).*cos(phi) + origin(2);
    z=R *cos(theta) + origin(3);
    surf(x,y,z);
    alpha(0.9)
    hold on
    xlabel('x')
    ylabel('y')
    zlabel('z')
    axis equal;
    %%============绘制正方体================
    x=([0 1 1 0 0 0;1 1 0 0 1 1;1 1 0 0 1 1;0 1 1 0 0 0]-0.5)*2 * R+origin(1);
    y=([0 0 1 1 0 0;0 1 1 0 0 0;0 1 1 0 1 1;0 0 1 1 1 1]-0.5)*2 * R+origin(2);
    z=([0 0 0 0 0 1;0 0 0 0 0 1;1 1 1 1 0 1;1 1 1 1 0 1]-0.5)*2 * R+origin(3);
    surf(x,y,z);
    alpha(0.1)
    %%============================
    XYZ = unifrnd(-R, R, 3, time);%随机生成正方体内的随机数;
    D = pdist([origin;XYZ'],'euclidean');
    D = D(1:size(XYZ,2));
    Ctime =length(D(D<R));
    for ii = 1: time
        if D(ii) < R
             plot3(XYZ(1,ii),XYZ(2,ii),XYZ(3,ii),'r*')
        else
            plot3(XYZ(1,ii),XYZ(2,ii),XYZ(3,ii),'b*')
        end
        hold on
    %     pause(0.1)
    end
    % plot3(XYZ(1,Aindex),XYZ(2,Aindex),XYZ(3,Aindex),'b*')
    text(2,2,4.2,'pi')
    disp(length(D(D<R))/time * 6)
  • 相关阅读:
    蠢货之对闭包表的扩展
    蠢货之TaskCompletionSource 带事件的同步调用
    SQLSERVER新建存储过程模板
    缓存更新
    写给”源码爱好者“
    区块链-一个不神秘却总能骗人的东西
    graceful-upgrades-in-go
    谁也逃不过C++
    Go的问题
    面试
  • 原文地址:https://www.cnblogs.com/Kermit-Li/p/6024589.html
Copyright © 2011-2022 走看看