回复 30 楼, 数值计算 三棱锥 体积 比如 有 两种方法, 第一种 方法 是 单纯 的 模拟, 就是 把 三棱锥 看作是 许多 很薄 的 三角形块 叠成, 把 这些 三角形块 的 体积 加起来 就是 近似 的 三棱锥 体积 。 三角形块 的 体积 = 三角形面积 * 高 。 三角形面积 也是 用 模拟 的 方法 计算, 把 三角形 看作 许多 很窄 的 小长方形 组成, 把 这些 长方形 的 面积 加起来 就是 近似 的 三角形 面积 。 这种方法 (第一种方法) 的 时间复杂度 是 m * n, m 就是 三角形块 的 个数, n 是 长方形 的 个数 。 一般 用 n 个 很窄 的 小长方形 模拟 函数曲线 和 x 轴 围成 的 曲边形面积 来 计算 数值积分 会 把 n 取得 比较大, n 很大 精度 才高 。 以前 (2020 年 ?) 我 帮 左老师
@◎粒子宇宙观察者25 做过一次 这种 模拟 的 数值积分, 印象中, n 取 100 万 时, 积分结果 和
@☞达瓦里希☜ 用 数学软件 计算 的 结果 比较 相似, 但 还是 相差 比较大, n 取 1000 万 时, 和 数学软件 的 结果 就 比较 接近, 但 还是 有 一定差距, 我估计 数学软件 的 n 取到 1 亿 以上 。
但 注意, 这里 计算 三棱锥 体积 是 m * n , 如果 m 和 n 都取 1000 万 或 1 亿, 那 1000 万 * 1000 万 或 1 亿 * 1 亿 这个 时间复杂度 就 太大 了 。
第一种 方法 中 可以说 全部 是 线性计算, 因为 根据 高度(位置) 计算 三角形块 的 三角形 的 三个顶点 坐标, 根据 三个 顶点 求 每一个 小长方形 的 顶点坐标 进而 求 长方形面积, 这些 全部 是 直线投影 和 直线相交 问题, 都是 线性方程(组) 。
第二种 方法 也是 把 三棱锥 看作是 许多 很薄 的 三角形块 叠成, 但 三角形 的 面积 用 数值方法 求解, 这里 的 数值方法 不是 用 许多 小长方形 模拟, (我认为 模拟 也是 数值方法 的 一种, 所以 这样说明), 而是 用 一些 算法 。 23 楼 已经说了 “已知 三角形 三个顶点 求 三角形 面积, 这 又 涉及 到 四次方程 或 高次方程”, 实际上 这个 代数方程 就是 要求 三角形 的 高, 也就是 这个 代数方程 的 一个 根 是 三角形 的 高 。
数值方法 求解 高次方程 (n 次方程), 首先 要 分析 方程 有 几个 根, 这里只 讨论 实根 。 把 n 次方程 看作 n 次函数, 有 几个 实根 就是 函数曲线 和 x 轴 有 几个 交点 。 可以 对 n 次函数 求导数, 一阶导数, 二阶导数, 三阶导数 …… 一直 求到 二次函数, 根据 这个 导数关系 可以知道 n 次函数 最多 有 n 个 实根, 但 这 也只是 一个 范围 “最多”, 并不能 知道 一个 n 次方程 确切 的 有 几个 实根 。
在 “已知 三角形 三个顶点 求 三角形 面积” 问题 中, 要求 的 是 高, 从 几何 上 应该可以 知道, 方程 的 正根 只有一个, 就是 高 。 而且 可以知道 0 <= 高 <= 底边以外的两条边中较小的一条边 , 知道了 高 的 取值范围, 用 跨越步进法 很容易 从 方程 中 求得 高 。
要 知道 n 次函数 和 x 轴 有 几个交点, 还可以 取 一些 样本点, 逐点绘制 出 函数曲线(当然 是 近似的), 来 看 函数曲线 的 大致趋势 。 这 算是 “数学规划” 吧 ? 这 也是 数值方法 (数值算法) 的 一种 。