python蒙特卡洛求二重积分

img


怎么确定撒点的范围 二重积分的范围是什么傻点,需要在哪个范围之内 想知道代码怎么写

不用谢
亲爱的上海lx的同学



import numpy as np
import math
import  matplotlib.pyplot as plt
from mpl_toolkits.mplot3d import Axes3D

def second():
    face_num = 10000
    t = np.random.random(size=face_num)
    t1 = np.random.random(size=face_num)
    x = t
    y = t1
    z = np.zeros(t.shape)
    zr = np.zeros(t.shape)
    i_set = np.arange(0,face_num,1)
    for i in i_set:
        #len = np.sqrt(np.random.random())
        x[i] = x[i] * 1
        y[i] = y[i] * 1
        z[i] = np.exp(np.square(x[i]+y[i]))
        zr[i] = np.random.random(1)*81
    fig = plt.figure()
    ax = Axes3D(fig)
    ax.scatter(x,y,z,c = 'r', marker = '.')
    ax.scatter(x,y,zr,c = 'b', marker = '.')
    plt.xlim(0,1.1)
    plt.ylim(0,1.1)
    plt.xlabel('x')
    plt.ylabel('y')
    plt.title('Random Scatter')

    n = 0
    for i in range(face_num):
        if zr[i]<z[i]:
            n +=1
    ratio = n/face_num
    value = ratio * 81
    print(ratio, value)

    plt.show()
    return value


if __name__  == '__main__':
    N = 10  # 实验重复N次
    second_value_list = []
    for i in range(N):
        second_value_list.append(second())
    print(second_value_list)

    # 计算估计均方差
    means = sum(second_value_list) / N
    mse = sum([(np.square(second_value_list[i] - means)) / N for i in range(N)])
    print(means)
    print(mse)

```****


```