You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

基于泰勒级数的五点中心有限差分一阶导数权重计算结果异常排查

基于泰勒级数的五点中心有限差分一阶导数权重计算结果异常排查

哈哈,我一眼就揪出问题所在了——你的代码里的矩阵A写错了关键一行,直接导致方程组解完全偏离预期!咱们一步步理清楚:

1. 直接Bug:矩阵第四行的符号错误

你在理论推导里的第四个方程是:

系数 of $f^{(3)}(x)$: $8a + b - d - 8e = 0$
但你的代码里把矩阵A的第四行写成了:

[8, 1, 0, -1, 8]  # 这里最后一个元素是+8,应该是-8!

正确的第四行应该是:

[8, 1, 0, -1, -8]

就是这个不起眼的符号错误,让你的方程组解出来完全不是想要的结果。

2. 验证修正后的结果

把矩阵A的第四行改对后运行代码,你会得到:

[-0.08333333  0.66666667  0.         -0.66666667  0.08333333]

对应的分数形式就是你预期的 [-1/12, 2/3, 0, -2/3, 1/12],完美匹配理论结果!

3. 额外补充:泰勒展开的细节说明

虽然这次的直接问题是符号写错,但我还是提一下泰勒展开的隐藏逻辑:你在推导方程组时,其实是把Δx和泰勒展开阶乘的倒数都合并到了权重a,b,c,d,e中,这本身是没问题的。对应标准的五点一阶导数公式:
$$
f'(x) \approx \frac{-f(x+2\Delta x) + 8f(x+\Delta x) - 8f(x-\Delta x) + f(x-2\Delta x)}{12\Delta x}
$$
你的权重a,b,c,d,e其实就是公式里分子部分除以$\Delta x$的结果,当$\Delta x=1$时,权重就等于分子的分数值,和修正后代码的输出完全一致。

修正后的完整代码

import numpy as np

A = np.array([
    [1, 1, 1, 1, 1],      # Coefficients of f(x)
    [2, 1, 0, -1, -2],    # Coefficients of f'(x)
    [4, 1, 0, 1, 4],      # Coefficients of f''(x)
    [8, 1, 0, -1, -8],    # 修正这里的符号错误
    [16, 1, 0, 1, 16]     # Coefficients of f''''(x)
])

b = np.array([0, 1, 0, 0, 0])  # Targeting the first derivative

z = np.linalg.solve(A, b)
print(z)

备注:内容来源于stack exchange,提问作者Bhavninder Singh Virdi

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.14 14:20:31