gpt4 book ai didi

python - 使用python求解三角非线性方程: what am I doing wrong?

转载 作者:行者123 更新时间:2023-12-01 05:01:02 31 4
gpt4 key购买 nike

我正在尝试求解三角方程组,但我认为 Python 没有生成正确的解。我试图解决的方程:

  • 1 − 2cosθ1 + 2cosθ2 − 2cosθ3 = −0.8

  • 1 − 2cos5θ1 + 2cos5θ2 − 2cos5θ3 = 0

  • 1 − 2cos7θ1 + 2cos7θ2 − 2cos7θ3 = 0

我的Python代码:

from scipy.optimize import fsolve
import math
import numpy as np

def equations(p):
x,y,z = p
f1 = (1 - 2*math.cos(math.radians(x)) + 2*math.cos(math.radians(y)) - 2*math.cos(math.radians(z)) + 0.8)
f2 = (1 - 2*math.cos(math.radians(5*x)) + 2*math.cos(math.radians(5*y)) - 2*math.cos(math.radians(5*z)))
f3 = (1 - 2*math.cos(math.radians(7*x)) + 2*math.cos(math.radians(7*y)) - 2*math.cos(math.radians(7*z)))
return (f1,f2,f3)

x,y,z = fsolve(equations,(0,0,0))

print equations((x,y,z))

这打印:

(-1.9451107391432743e-13, 4.241273998673023e-12, -1.5478729409323932e-12)

这是错误的,因为我使用以下方法检查了它:

print (1 - 2*math.cos(math.radians(5*-1.9451107391432743e-13)) + 
2*math.cos(math.radians(5*4.241273998673023e-12)) -
2*math.cos(math.radians(5*-1.5478729409323932e-12)))

这不会打印0,而是打印-1。谁能告诉我我在这里做错了什么?

另一个问题是fsolve根据初始值生成解决方案。因此,如果我将初始值从 (0,0,0) 更改为 (1,1,1),我可能会得到另一个新的解决方案。有没有办法可以为每个变量定义一个初始值“范围”x,y,z`并获得一系列解决方案?

最佳答案

您的代码看起来没问题。它在最后打印错误,而不是解决方案。事实上,您是通过使用最后两行中 fsolve 找到的答案来调用方程来检查解。如果您想查看变量的值,可以print x, y, z

关于python - 使用python求解三角非线性方程: what am I doing wrong?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26209851/

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