V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
nealot
V2EX  ›  程序员

请教一个数值积分问题

  •  
  •   nealot · 2020-06-08 20:12:31 +08:00 · 1079 次点击
    这是一个创建于 1432 天前的主题,其中的信息可能已经有所发展或是发生改变。

    有两个实数空间函数

    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 值呢?

    1 条回复    2020-06-09 02:59:01 +08:00
    Tony042
        1
    Tony042  
       2020-06-09 02:59:01 +08:00
    ode 和简单的 pde 直接上 matlab 吧,自己写 solver 难度比较大
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   5767 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 39ms · UTC 03:00 · PVG 11:00 · LAX 20:00 · JFK 23:00
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.