【问题标题】:Python-Calculating the roots of a simple non-linear equation systemPython-计算简单非线性方程组的根
【发布时间】:2017-04-22 05:02:59
【问题描述】:

正如标题所说,这是我的系统:

[;Acos(\phi)=1;]

[;-0.5Asin(\phi)=0;]

显而易见的解决方案是

A=1 and [;\phi=n\pi , n\in \mathbb{Z};],

我尝试使用 sympy..nsolve(不起作用)和 scipy..fsolve(给出错误“函数调用的结果不是正确的浮点数组”)

【问题讨论】:

  • 'scipy..fsolve(给出错误“函数调用的结果不是正确的浮点数组”)'你用过,任何人都很难帮助你。创建minimal, complete, verifiable example 会让别人更容易帮助你解决这个问题。

标签: python-3.x numpy scipy sympy


【解决方案1】:

三角函数的存在使系统难以求解,尽管它看起来是一个“简单”的系统。

轻松找到包含cos(x) 和/或sin(x) 形式项的系统解的一种方法是执行替换u=cos(x)v=sin(x),引入附加方程u**2 + v**2 == 1,然后求解uv。然后可以从u 的值中获得变量x

import sympy as sp

A, u, v, phi = sp.symbols('A, u, v, phi', real = True)

eqs = [sp.Eq(A * u, 1), sp.Eq(-A * v/2, 0), sp.Eq(u**2 + v**2, 1)]
sol = sp.solve(eqs, [A, u, v])
print (sol)

[(-1, -1, 0), (1, 1, 0)]

因此A 可以取两个值(-11)。对于A=-1,它必须持有u==-1,对应于phi的无限个值,如下所示

sp.solveset(sp.Eq(sp.cos(phi),-1), phi)

ImageSet(Lambda(_n, 2*_n*pi + pi), Integers())

A=1 的过程与此类似。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-10-14
    • 2014-03-17
    • 2021-10-18
    • 2022-08-04
    • 1970-01-01
    • 2023-01-05
    相关资源
    最近更新 更多