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

如何用Python绘制f(x)=x^(2/3)的负数区间图像?

问题:绘制函数f(x)=x^(2/3)时无法显示负x区间图像

我想要使用Python绘制函数f(x) = x^(2/3)的图像,但目前仅能成功绘制x取正值的部分,运行代码时还出现警告,请问哪里出错了?

我的代码

import numpy as np
import matplotlib.pyplot as plt

# 定义函数
def f(x):
    return x ** (2/3)

# 生成正负x的取值
x_positive = np.linspace(0, 10, 200)
x_negative = np.linspace(-10, 0, 200)

# 计算对应的y值
y_positive = f(x_positive)
y_negative = f(x_negative)

# 绘图
plt.figure(figsize=(8, 6))

# 绘制正x区间曲线
plt.plot(x_positive, y_positive, label=r'$f(x) = x^{2/3}$', color='blue')

# 绘制负x区间曲线
plt.plot(x_negative, y_negative, linestyle='dashed', color='blue')

plt.title('f(x) = x^(2/3)')
plt.xlabel('x')
plt.ylabel('f(x)')
plt.grid(True)
plt.legend()
plt.ylim(-10, 10)  
plt.xlim(-10, 10)  
plt.axhline(y=0, color='black', linewidth=0.8)  # 绘制x轴
plt.axvline(x=0, color='black', linewidth=0.8)  # 绘制y轴
plt.show()  

运行警告

C:\Users\...\AppData\Local\Temp\ipykernel_35264\1241025677.py:3: RuntimeWarning: invalid value encountered in power
  return x ** (2/3)

问题原因

在NumPy中,直接对负数使用浮点数次幂(比如2/3)会触发计算异常:x ** (2/3)等价于x^0.666...,NumPy会尝试按复数规则计算,但默认不会返回复数结果,最终生成nan(无效值),导致负x区间的图像无法绘制。

实际上x^(2/3)在实数域的定义是先对x取平方,再开三次方,结果始终为非负数,和x的正负无关。

解决方案

修改函数的实现方式,按照实数域的定义来计算:

方法1:先平方再开三次方

利用np.cbrt()函数(计算三次方根),先对x平方再开三次方:

def f(x):
    return np.cbrt(x ** 2)

方法2:取绝对值后计算幂次

因为x^(2/3) = |x|^(2/3),也可以这样写:

def f(x):
    return np.abs(x) ** (2/3)

修改后的完整代码

import numpy as np
import matplotlib.pyplot as plt

# 修正后的函数
def f(x):
    return np.cbrt(x ** 2)

# 直接生成包含正负的x数组
x = np.linspace(-10, 10, 400)
y = f(x)

# 绘图
plt.figure(figsize=(8, 6))
plt.plot(x, y, label=r'$f(x) = x^{2/3}$', color='blue')

plt.title('f(x) = x^(2/3)')
plt.xlabel('x')
plt.ylabel('f(x)')
plt.grid(True)
plt.legend()
plt.ylim(0, 5)  # 函数值非负,调整y轴范围更合理
plt.xlim(-10, 10)  
plt.axhline(y=0, color='black', linewidth=0.8)
plt.axvline(x=0, color='black', linewidth=0.8)
plt.show()

这样修改后,就能正常显示x负区间的图像,也不会出现警告了。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.12 03:51:28