Jack315 发表于 2026-5-4 13:47:24

修改 8# 中获取仿真数据代码:
data = Block[{a1, a2, a3, arng, r1, r2, r3, rrng},
   arng = {0, 2 \}; rrng = {0, 1};
   Table[
    NExpectation[
   sTriangle[{a1, a2, a3}, {Sqrt, Sqrt, Sqrt}],
      {a1 \ UniformDistribution,
      a2 \ UniformDistribution,
      a3 \ UniformDistribution,
      r1 \ UniformDistribution,
      r2 \ UniformDistribution,
      r3 \ UniformDistribution},
   Method -> "MonteCarlo"],
    1000](*运算 1000 次仿真*)
   ];
结果为:\(\mu=0.232106\) 、\(\sigma=0.000198953\) 。
单位圆内任意三角形面积的期望值估计为 0.232106。

wayne 发表于 2026-5-4 15:51:50

https://math.stackexchange.com/questions/1243160/expected-area-of-triangle-formed-by-three-random-points-inside-unit-circle

majer 发表于 2026-5-4 16:05:19

从单位面积的正m边形内部独立、随机地选出三个点,则三点形成的三角形的面积的期望有以下公式

Jack315 发表于 2026-5-4 16:35:18

majer 发表于 2026-5-4 16:05
从单位面积的正m边形内部独立、随机地选出三个点,则三点形成的三角形的面积的期望有以下公式

\(\lim_{m \to \infty} \frac{9\cos^2\omega+52\cos\omega+44}{36m^2\sin^2\omega}=\frac{35}{48\pi^2}\)
乘上单位圆面积 \(\pi\) 得 \(\frac{35}{48\pi}\)

chyanog 发表于 7 天前

快一些的蒙特卡洛方法:
n=10^7;
0.5 Abs[(#1-#3)(#4-#6)-(#2-#4)(#3-#5)]&@@Transpose,{n,3}],{n,6}]]//Mean//AbsoluteTiming
0.23215
耗时1秒左右

王守恩 发表于 7 天前

majer 发表于 2026-5-4 16:05
从单位面积的正m边形内部独立、随机地选出三个点,则三点形成的三角形的面积的期望有以下公式
学习学习!!!

\(\D\lim_{m\to\infty}\frac{9\cos^2(2\pi/m)+52\cos(2\pi/m)+44}{36m^2\sin^2(2\pi/m)}=\lim_{m\to\infty}\frac{9*1^2+52*1+44}{36m^2(2\pi/m)^2}=\frac{9+52+44}{36(2\pi)^2}=\frac{105}{144\pi^2}=\frac{35}{48\pi^2}\)

王守恩 发表于 5 天前

我们有
单位圆内任取3个点构成三角形面积=0.232
可以往前走吗???
单位圆内任取4个点构成凸包的面积=0.296
单位圆内任取5个点构成凸包的面积=0.338——???
单位圆内任取6个点构成凸包的面积=0.369——???
单位圆内任取7个点构成凸包的面积=0.393——???
单位圆内任取8个点构成凸包的面积=0.413——???
单位圆内任取9个点构成凸包的面积= ?? ——???

单位圆内任取无限多个点构成凸包面积=1.0——???

王守恩 发表于 4 天前

各位!这代码错在那里??谢谢各位!!!

{{3, 0.225045}, {4, 0.462183}, {5, 0.66083}, {6, 0.826997}, {7, 0.97415}, {8, 1.09881}, {9, 1.22222}, {10, 1.3246}, {11, 1.3999}, {12, 1.49023}, {13, 1.54949}, {14, 1.61062}, {15, 1.65932},
{16, 1.71313}, {17, 1.76778}, {18, 1.80131}, {19, 1.83594}, {20, 1.87825}, {21, 1.92483}, {22, 1.94676}, {23, 1.97752}, {24, 2.00061}, {25, 2.03386}, {26, 2.05089}, {27, 2.08}, {28, 2.10234}}
generatePoint := RandomPoint, n]; hullPolygon := MeshPrimitives, 2][]; hullArea := Area];
expectedArea := Mean], {samples}]]; Table[{n, expectedArea}, {n, 3, 28}]
提速一下。——代码没变。
generatePoint := RandomPoint, n]; hullPolygon := MeshPrimitives, 2][]; hullArea := Area];
expectedArea := Mean], {samples}]]; Table[{3^n, expectedArea}, {n, 12}]
{{3, 0.220445}, {9, 1.22915}, {27, 2.07739}, {81, 2.60394}, {243, 2.87862}, {729, 3.0119}, {2187, 3.07887}, {6561, 3.11126}, {19683, 3.12706}, {59049, 3.13456}, {177147, 3.13821}, {531441, 3.13997}}
特别地,n=1000000。——代码没变。
generatePoint := RandomPoint, n]; hullPolygon := MeshPrimitives, 2][]; hullArea := Area];
expectedArea := Mean], {samples}]]; Table[{n, expectedArea}, {n, 1000000, 1000000}]
{{1000000, 3.14052}}

(*1. 生成圆内均匀随机点*)generatePoint := RandomPoint, n];
(*2. 获取凸包多边形*)hullPolygon := MeshPrimitives, 2][];
(*3. 计算凸包面积*)hullArea := Area];
(*4. 蒙特卡洛期望*)expectedArea := Mean], {samples}]];
(*5. 计算 n=3 到 28,全部模拟*)Table[{n, expectedArea}, {n, 3, 28}]

DeepSeek——说上面的代码是错的。下面的代码才是正确的——会出来正确数据。——我这个Mathematica12.1不能用。——我就想看看这些数据!谢谢各位!!谢谢!!!
python
import numpy as np
from scipy.spatial import ConvexHull
def expected_area(n, samples=200000):
    total = 0.0
    for _ in range(samples):
      # 单位圆内均匀取点
      theta = np.random.uniform(0, 2*np.pi, n)
      r = np.sqrt(np.random.uniform(0, 1, n))
      pts = np.column_stack()
      if n == 3:
            area = 0.5 * abs(np.cross(pts-pts, pts-pts))
      else:
            hull = ConvexHull(pts)
            area = hull.volume# 在2D中volume指面积
      total += area
    return total / samples
for n in range(3, 11):
    print(f"n={n}: {expected_area(n):.4f}")

王守恩 发表于 前天 16:04

单位圆内任取4个点构成的面积=0.296——来点资料——我的搜索功能不行——谢谢各位!!!!
页: 1 [2]
查看完整版本: 单位圆内任取三个点的构成的三角形的面积是多少