gpt4 book ai didi

python - 属性错误 : 'BooleanFalse' object has no attribute 'evalf' (piecewise plotting using sympy)

转载 作者:行者123 更新时间:2023-11-28 19:13:44 28 4
gpt4 key购买 nike

我想绘制一个分段函数,例如:

import sympy as sym
x = sym.symbols("x")
f = sym.Piecewise((-1, x < -1),
(x, sym.And(-1 <= x, x < 0)),
(x**2, sym.And(0 <= x, x < 1)),
(x**3, x >= 1))
sym.plotting.plot(f, (x, -3, 3))

但是,当运行这段代码时,出现了异常......

AttributeError: 'BooleanFalse' object has no attribute 'evalf'

我觉得问题可能出在这两种情况

sym.And(-1 <= x, x < 0)

sym.And(0 <= x, x < 1)

这里假定一个 python 类型 'bool',而函数 'evalf' 不能将 'sympy' 类型 'BooleanFalse' 转换为 python 类型 'bool'。

我想知道如何处理这个问题,是否可以在不使用“matplotlib”模块的情况下绘制分段函数?

最佳答案

您的函数定义过度,sympy 按顺序计算条件并返回条件为 True 的第一个表达式。

我不明白你的定义到底哪里出了问题,但一个更简单的定义对我有用

In [19]: f = sym.Piecewise(
(-1, x < -1),
(x, x < 0),
(x**2, x < 1),
(x**3, True))
....:

In [20]: sym.plotting.plot(f, (x, -3, 3))
Out[20]: <sympy.plotting.plot.Plot at 0x7f90cb9ec6d8>

enter image description here

In [21]: 

PS 我明白为什么你的情节失败了,这是因为 plot 试图评估为 x 提供值的条件,但是条件是常量 BooleanFalse,它是 sym.And() 定义时分段函数的计算结果。

关于python - 属性错误 : 'BooleanFalse' object has no attribute 'evalf' (piecewise plotting using sympy),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36258692/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com