加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Python > 正文

在python中确定线性方程组的求解

发布时间:2020-12-16 21:31:31 所属栏目:Python 来源:网络整理
导读:考虑以下问题: Find: x_1,x_2,x_3 0 such that 67.5=60*x_1+90*x_2+120*x_3 and 60=30*x_1+120*x_2+90*x_3 有没有办法在Python中解决这个等式? (类似的问题已经被要求用于MATLAB) 任何人都可以举例说明如何在python中使用scipy.nnls()来获得任何未确定的方
考虑以下问题:

Find: x_1,x_2,x_3 > 0
such that 67.5=60*x_1+90*x_2+120*x_3
and 60=30*x_1+120*x_2+90*x_3

有没有办法在Python中解决这个等式?
(类似的问题已经被要求用于MATLAB)

任何人都可以举例说明如何在python中使用scipy.nnls()来获得任何未确定的方程组

解决方法

用sympy象征性地解决方程组
from sympy import * 

x_1,x_3 = symbols('x_1 x_2 x_3')

res = solve([Eq(60*x_1+90*x_2+120*x_3,67.5),Eq(30*x_1+120*x_2+90*x_3,60)],[x_1,x_3])
print res
#{x_1: -1.4*x_3 + 0.6,x_2: -0.4*x_3 + 0.35}

使用scipy.optimize.nnls

import numpy as np
import matplotlib.pyplot as plt
from scipy.optimize import nnls 

A = np.array([[60,90,120],[30,120,90]])

b = np.array([67.5,60])

x,rnorm = nnls(A,b)

print x
#[ 0.          0.17857143  0.42857143]
print rnorm
#0.0

尽管如此,这只承诺一个解决方案,其中参数是x> = 0,因此您可以获得零,就像您在此示例中所做的那样.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读