使用Python math库编写公式计算代码 输入数值结果错误求助
问题描述

我参照上图中的数学公式编写了如下计算代码,输入对应测试数值后代码输出的计算结果存在错误,求助排查问题原因:
import math as m x = int(input()) r=m.ceil(m.pow(x,(5/3))+m.tan(x)) y = m.floor(m.pow(m.pi, 2+m.atan(m.pow(m.sin(m.radians(x)), 2)))) print(m.gcd(r,y))
错误排查
代码存在两处明确问题:
- 三角函数参数单位不统一
math模块所有三角函数默认接收弧度值作为入参,计算sin(x)时做了角度转弧度的m.radians(x)处理,但计算tan(x)时漏掉了这一步,直接传入了角度值的x,结果必然出错。 - 负数非整数次幂计算异常
m.pow对负数做非整数次幂运算时会直接返回NaN(非数值),当输入x为负整数时,m.pow(x, 5/3)无法返回正确的实数计算结果,会导致后续整条计算链路失效。要正确计算负数的5/3次幂,可以先取绝对值算幂,再补回符号:m.copysign(1, x) * m.pow(abs(x), 5/3)。
修正后的可运行代码:
import math as m x = int(input()) x_rad = m.radians(x) r = m.ceil(m.copysign(1, x) * m.pow(abs(x), 5/3) + m.tan(x_rad)) sin_term = m.pow(m.sin(x_rad), 2) y = m.floor(m.pow(m.pi, 2 + m.atan(sin_term))) print(m.gcd(r, y))
内容的提问来源于stack exchange,提问作者MiladKoohi
相关产品推荐
相关产品推荐

