Sympy nsolve函数和多种解决方案 [英] Sympy nsolve function and multiple solutions

查看:768
本文介绍了Sympy nsolve函数和多种解决方案的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我在python中做了这个小测试程序,以查看 solve nsolve 的工作方式.

I did this little test program in python to see how solve and nsolve work.

from sympy import *

theta = Symbol('theta')
phi = Symbol('phi')

def F(theta,phi):
    return sin(theta)*cos(phi)+cos(phi)**2
def G(phi):
    return ((1 + sqrt(3))*sin(phi) - 4*pi*sin(2*phi)*cos(2*phi))
solution1 = solve(F(pi/2,phi),phi)
solution2 = solve(G(phi),phi)
solution3 = nsolve(G(phi),0)
solution4 = nsolve(G(phi),1)
solution5 = nsolve(G(phi),2)
solution6 = nsolve(G(phi),3)
print solution1, solution2, solution3, solution4, solution5, solution6

我得到以下输出:

[pi/2, pi] [] 0.0 -0.713274788952698 2.27148961717279 3.14159265358979

solve的第一次调用给了我对应函数的两​​个解.但不是第二个.我想知道为什么? nsolve 似乎可以用于初始测试值,但是根据该值,它可以提供不同的数值解.有没有办法在一行中用 nsolve 或另一个函数来获取所有数值解的列表?

The first call of solve gave me two solutions of the corresponding function. But not the second one. I wonder why? nsolve seems to work with an initial test value, but depending on that value, it gives different numerical solutions. Is there a way to get the list all numerical solutions with nsolve or with another function, in just one line?

推荐答案

第一个调用solve给了我相应功能的两个解决方案.但不是第二个.我想知道为什么吗?

The first call of solve gave me two solutions of the corresponding function. But not the second one. I wonder why?

通常,您不能象征性地求解 ,显然, solve 确实可以做到这一点.换句话说:如果 solve 能解决您的方程式,那么典型的技术应用程序就没有解析解决方案,也就是说,无法用符号表示解决方案.

In general, you cannot solve an equation symbolically and apparently solve does exactly that. In other words: Consider yourself lucky if solve can solve your equation, the typical technical applications don't have analytic solutions, that is, cannot be solved symbolically.

因此,后备选项是数值求解方程,该方程从起始点开始.在一般情况下,即使存在,也不保证 nsolve 会找到解决方案.

So the fall-back option is to solve the equation numerically, which starts from an initial point. In the general case, there is no guarantee that nsolve will find a solution even if exists one.

是否有一种方法可以在一行中使用nsolve或另一个函数来获取所有数值解的列表?

Is there a way to get the list all numerical solutions with nsolve or with another function, in just one line?

通常,不会.不过,您可以从许多初步猜测开始 nsolve ,并跟踪找到的解决方案.您可能希望在感兴趣的时间间隔内均匀分布初始猜测.这称为多次启动方法.

In general, no. Nevertheless, you can start nsolve from a number of initial guesses and keep track of the solutions found. You might want to distribute your initial guesses uniformly in the interval of interest. This is called multi-start method.

这篇关于Sympy nsolve函数和多种解决方案的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆