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

SymPy求导TypeError问题:NoneType与float无法减法运算的修复

问题修复方案

错误原因

你的f_derivative函数仅执行打印操作,没有返回导数值,调用f_derivative(1)时会返回None。assert语句中尝试用None和浮点数做减法,因此触发TypeError。

修正步骤

  1. 让函数返回计算得到的导数值,而非仅打印
  2. 替换**0.5为sympy.sqrt(),符号运算精度更高
  3. 移除函数参数里的x(原参数被内部的SymPy符号变量覆盖,未实际使用,移除后避免混淆)

修正后的代码

import sympy

def f_derivative():
    x = sympy.Symbol('x')
    # 用sympy.sqrt替代**0.5,保持符号运算的准确性
    f = x - 5 + sympy.sqrt(4 - x**2)
    derivative_f = f.diff(x)
    derivative_f = sympy.lambdify(x, derivative_f)
    result = derivative_f(1)
    print(result)
    # 返回计算结果,供assert校验调用
    return result

# 调用查看结果
f_derivative()
# 用返回值做断言校验,加abs避免微小正负差导致失败
assert abs(f_derivative() - 0.42264973) < 1e-5

额外说明

  • 用abs()包裹差值是为了兼容计算结果的微小正负偏差,比如实际计算结果为0.4226497308103742,和给定的0.42264973的差值在1e-5范围内,但直接相减可能为正或负,绝对值判断更稳妥。

内容的提问来源于stack exchange,提问作者Phung Doan

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.08 20:50:27