首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >具有多重方程的枕方程组

具有多重方程的枕方程组
EN

Stack Overflow用户
提问于 2018-11-19 05:52:54
回答 1查看 908关注 0票数 1

你好,当我有一个方程组时,我在使用fsolve函数时遇到了问题。

我的代码只让我有和我的系统中的方程一样多的变量,但是我们都知道,在实践中,你可以拥有比变量更多的方程,特别是当解不是一个具体的数字而是一系列的数字时,一个附加的方程可以帮助缩小“干草堆”的范围。

如何插入比变量更多的方程是我的问题?

假设我有以下非线性系统:

代码语言:javascript
复制
A/B=0.4583(3)
A/C=0.25
A/D=0.72(2)
B/C=0.54(54)

因此,我有以下代码:

代码语言:javascript
复制
from scipy.optimize import *
from numpy  import *

def FUNC(arg):

    A,B,C,D=arg
    UNK=empty((4))  

    UNK[0]= A/B-0.458333333333333
    UNK[1]= A/C-0.25
    UNK[2]= A/D-0.722222222222222
    UNK[3]= B/C-0.545454545454546

    return UNK


SOLVED= fsolve(FUNC, [1.0]*4)

print (SOLVED)

问题是,我也知道以下资料:

代码语言:javascript
复制
B/D=1.57(57)
C/D=2.8(8)

如何将这两个附加方程插入到我的方程组中?

另外,如何显示解决方案的范围而不是仅显示一个解决方案,似乎fsolve只显示它遇到的第一个解决方案,而不是所有可能的解决方案。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-11-19 10:25:32

请注意,the的fsolve只是MINPACK的海布例程的包装器:

HYBRD的目的是通过对Powell混合方法的改进,在N个变量中寻找N个非线性函数系统的零点。用户必须提供一个计算函数的子程序。然后用正向差分近似计算雅可比。

如果您想要求解一个由6个方程组成的系统,您的函数FUNC需要是一个由6个变量组成的函数。我们可以这样做:

代码语言:javascript
复制
import numpy as np
from scipy.optimize import fsolve

def FUNC(arg):
    A, B, C, D, E, F = arg
    UNK=np.empty((6))  

    UNK[0]= A/B-0.458333333333333
    UNK[1]= A/C-0.25
    UNK[2]= A/D-0.722222222222222
    UNK[3]= B/C-0.545454545454546
    UNK[4]= B/D-1.575757575757575
    UNK[5]= C/D-2.888888888888888
    return UNK

fsolve(FUNC, x0=[1.0]*6)

这是不可能得到所有的解决方案与解决方案。但是你可以尝试不同的初始点x0,希望得到不同的解决方案。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/53369005

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档