gpt4 book ai didi

python - 解决 `math` 模块中涉及弧度的程序时出现问题

转载 作者:太空宇宙 更新时间:2023-11-03 20:54:50 25 4
gpt4 key购买 nike

我发现了一个Python问题,但在正确解决它时遇到了麻烦。

问题如下。

在此问题中,您将使用该类来计算 list 的净力。力量。

编写一个名为 find_net_force 的函数。 find_net_force应该有一个参数:a list Force 的实例数。该函数应返回 Force 的新实例将总净星等和净角度作为其星等和角度属性的值。

提醒一下:

  • 要找到合力的大小,请将所有水平分量和所有垂直分量相加。净力是水平力和垂直力的平方和的平方根(即 (total_horizontal<sup>2</sup> + total_vertical<sup>2</sup>)<sup>0.5</sup> )
  • 要查找合力的角度,请调用 atan2有两个参数:总垂直力和总水平力(按顺序)。请记住将大小和方向四舍五入到小数点后一位。这可以使用 round(magnitude, 1) 和 round(angle, 1) 来完成。
  • Force类具有三个方法:get_horizontal返回单个力的水平分量。 get_vertical返回单个力的垂直分量。 get_angle返回单个力的角度(以度为单位)(如果调用 get_angle(use_degrees=False),则以弧度为单位)。
  • 提示:不要让事情变得过于复杂。 Force 类执行许多功能,除了 atan2 , degree s,和radians .

我尝试使用以下代码来解决该问题,但得到了不同的结果 get_angle 。我尝试用弧度、度数更改内容,但没有正确的结果。

from math import atan2, degrees, radians, sin, cos

class Force:

def __init__(self, magnitude, angle):
self.magnitude = magnitude
self.angle = radians(angle)

def get_horizontal(self):
return self.magnitude * cos(self.angle)

def get_vertical(self):
return self.magnitude * sin(self.angle)

def get_angle(self, use_degrees = True):
if use_degrees:
return degrees(self.angle)
else:
return self.angle

def find_net_force(force_instances):
total_horizontal = 0
total_vertical = 0
for instance in force_instances:
total_horizontal += float(instance.get_horizontal())
total_vertical += float(instance.get_vertical())
net_force = round((total_horizontal ** 2 + total_vertical ** 2) ** 0.5, 1)
net_angle = round(atan2(total_vertical, total_horizontal), 1)
total_force = Force(net_force, net_angle)
return total_force

force_1 = Force(50, 90)
force_2 = Force(75, -90)
force_3 = Force(100, 0)
forces = [force_1, force_2, force_3]
net_force = find_net_force(forces)
print(net_force.magnitude)
print(net_force.get_angle())

预期输出是:

103.1
-14.0

我得到的实际结果是:

103.1
-0.2

更新:

感谢 Michael O。类(class)期待学位和功能 find_net_force正在发送以弧度为单位的角度。我尝试在 find_net_force 中使用度数转换它起作用了。

net_angle = round(degrees(atan2(total_vertical, total_horizontal)), 1)

最佳答案

感谢 Michael O 在评论中提供帮助。该类需要度数,而函数 find_net_force 正在发送以弧度为单位的角度。我尝试在 find_net_force 中使用度数转换,结果成功了。

net_angle = round(degrees(atan2(total_vertical, total_horizontal)), 1)

关于python - 解决 `math` 模块中涉及弧度的程序时出现问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56087200/

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