如何使用Sympy绘制4*sin(2*x)/cos(2*x)**3函数图像?
解决Sympy绘制
4*sin(2*x)/cos³(2*x)图像不符合预期的问题 问题根源
你的表达式4*sin(2*x)/cos³(2*x)可化简为4*tan(2*x)*sec²(2*x),它和**水平压缩的正切函数tan(2x)**形状并不完全一致:后者是基础正切函数水平压缩为原来的1/2,而你的表达式是tan(2x)乘以恒大于等于1的sec²(2x),因此图像会更陡峭,趋近渐近线时增长速度远快于正切函数。另外,Sympy默认绘图范围(-10,10)包含大量渐近线(当cos(2x)=0时,即x=π/4 + kπ/2,k为整数),会导致图像显示混乱,这是你看到不符合预期图像的主要原因。
修正步骤
1. 指定精准的绘图范围
手动设置x的范围,避开渐近线,聚焦函数的一个周期区间,就能看到正确的趋势:
from sympy import * from sympy.plotting import plot x = symbols('x') expr = 4*sin(2*x)/cos(2*x)**3 # 选取(-π/4 + 0.1, π/4 - 0.1)区间,避开x=±π/4处的渐近线 plot(expr, (x, -pi/4 + 0.1, pi/4 - 0.1), ylabel='y')
2. 对比正切函数验证差异
如果想直观对比和tan(2x)的区别,可以同时绘制两个函数:
plot(expr, tan(2*x), (x, -pi/4 + 0.1, pi/4 - 0.1), legend=True, ylabel='y')
你会看到:零点附近两者趋势相似,但你的表达式增长速度更快,远离零点时取值会远超正切函数。
3. 化简表达式理解函数性质
先化简表达式,能更清晰函数的构成:
simplify(expr) # 输出:4*tan(2*x)*(tan(2*x)**2 + 1)
利用三角恒等式sec²θ = 1 + tan²θ,表达式可展开为4*tan(2x) + 4*tan³(2x),三次项的存在正是它和纯正切函数图像差异的核心原因。
内容的提问来源于stack exchange,提问作者user1446642
相关产品推荐
相关产品推荐

