假设我有以下四个方程式:
-
cos(x)/ x = a
-
cos(y)/ y = b
-
a b = 1
-
c sinc(x)= d sinc(y)
对于未知变量 x, y, a
和 b
. 请注意 cos(x)/x=a
有多个解决方案 . 类似于变量 y
. 我只对 x
和 y
值感兴趣,这是第一个正面的根(如果重要的话) .
您可以安全地假设 a, b, c
和 d
是已知的实常数,都是正数 .
在Mathematica中,解决此问题的代码如下所示:
FindRoot[{Cos[x]/x == 0.2 a + 0.1,
Cos[y]/y == 0.2 b + 0.1,
a + b == 1.0,
1.03*Sinc[x] == Sinc[y]*1.02},
{{x, .1}, {y, .1}, {a, .3}, {b, .1}}]
因此返回
{x -> 1.31636, y -> 1.29664, a -> 0.456034, b -> 0.543966}
虽然这很容易,但我不知道如何在python中做这样的事情 . 所以,如果有人可以指导我(或只是告诉我如何)来解决这个问题,我将非常感激 .
1 回答
你可以使用root:
那将打印
您的函数必须以它们求值为0的方式定义,例如
a + b - 1
而不是a + b = 1
.快速检查:
给
所以,解决方案应该没问题(请注意
e-11
基本上是0) .或者,您也可以使用fsolve:
这给你相同的结果:
您可以使用
args
参数传递其他参数:它给你“旧”输出:
如果你跑
然后你收到: