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

如何判断f(x)与g(x)取值相等时的x值并调试现有Python代码

现有代码问题排查
  • 语法错误:f(x)函数里的减号用了非标准的Unicode特殊减号−,不是Python可识别的半角减号-,运行会直接触发语法报错。
  • 逻辑错误:g(x)函数没有写return返回语句,Python中无显式返回的函数默认返回None,永远无法得到x+5的计算结果。
  • 缺失核心逻辑:仅定义了两个基础函数,没有实现复合函数相等的求解、结果输出的代码。
正确实现方式

首先明确求解的等式要求:将对应参数代入两个函数后返回值相等,即 f(x**2 + 4*x -7) = g(x+5),代入修正后的函数展开后为一元四次方程,可以直接通过符号计算库求解精确解,也可以通过多项式求根工具计算数值解。

方式1:符号计算求精确解(推荐)

需要先安装sympy库,执行pip install sympy即可,代码如下:

import sympy as sp

# 修正后的基础函数
def f(x):
    return x**2 + 4*x - 7

def g(x):
    return x + 5

# 定义符号变量并列等式
x = sp.symbols('x')
equal_equation = sp.Eq(f(x**2 + 4*x -7), g(x+5))
# 求解所有根
result = sp.solve(equal_equation, x)

print("满足条件的x取值:")
for i, sol in enumerate(result, 1):
    print(f"解{i}:精确表达式为{sol},浮点近似值为{round(float(sol.evalf()), 6)}")

运行后会输出4个解,包含2个实根、2个复根,如果只需要实根,加一层虚部判断过滤即可。

方式2:numpy数值求解

把等式整理为标准多项式形式x⁴ + 8x³ + 6x² - 41x + 9 = 0,用numpy的多项式求根工具计算即可,安装numpy执行pip install numpy:

import numpy as np

# 多项式系数按x次数从高到低排列
poly_coeff = [1, 8, 6, -41, 9]
all_roots = np.roots(poly_coeff)

print("满足条件的实根:")
for root in all_roots:
    # 过滤浮点计算产生的虚部误差,仅保留实根
    if abs(root.imag) < 1e-6:
        print(round(root.real, 6))

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.01 02:42:28