请教一个数值积分问题

2020-06-08 20:12:31 +08:00
 nealot

有两个实数空间函数

dz/dx = f(x, y) dy/dx = g(x, y)

假设每次函数计算都能在 O(1) 下高效完成

初始状态 x = 0,此时 y = 0,z = 0 我们要计算 x = x' 时的 z 值


这个问题看起来是一个典型的数值积分问题,我们取一个比较小的 dx 值 (比如 0.001),然后一小段一小段计算,计算每一小段的 dy 和 dz

其中 dy 会造成点在 XOY 平面上偏移,dz 则用来累加起来计算最后的 z


但是这看起来不是很高效,而且可能还会有累计误差 (不知道会有多大的误差)

假定我们可能要处理三种类型的曲面 f(x,y) 和 g(x,y)

  1. 值连续且导数也连续的光滑曲面 (类似正态分布曲线)
  2. 值连续,但是导数不连续的曲面 (很多三角形拼成的山坡)
  3. 值不连续,导数也不连续的曲面 (阶梯式平面)

请教下是否能有个什么方法能够既快速又准确地积分计算出 z 值呢?

1086 次点击
所在节点    程序员
1 条回复
Tony042
2020-06-09 02:59:01 +08:00
ode 和简单的 pde 直接上 matlab 吧,自己写 solver 难度比较大

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/679827

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX