先指出一个错误:你list1中只有一个元素,应该用list1[0]取出;
这个问题,我也一直在找解决办法,苦搜无果,自己想到了增加方程组变量的方法来解决:新增变量-表达式=0,把这个方程同之前你得到的结果组成三元一次方程组,得出新增变量的解即可。
z=Symbol('z')
result1=solve([z-list1[0],x-result[x],y-result[y]],[x,y,z])
result1[z]就是你要的结果,拿走不谢~~
如果一元方程的解(x)带回表达式,思路一样,只是注意一元方程的解是存放在列表里(假设为result[]),而不是字典,列表中的第一个元素为实数解,所以代码变为:
y=Symbol('y')
result1=solve([y-list1[0],x-result[0],[x,y])
result1[y]即是。
给你串代码,用来求LQR的
import numpy as np
from scipy import c_
def lqr(A,B,Q,R):
dim = Ashape[0]
H1 = nphstack((A,-B@nplinalgsolve(R,BT)))
H2 = nphstack((-Q,-AT))
H = npvstack((H1,H2))
[e,g] = nplinalgeig(H)
i_p = npwhere(e>0)[0]
i = npargsort(e[i_p])
i_p = i_p[i[::-1]]
i_m = npwhere(e<=0)[0]
i = npargsort(e[i_m])
i_m = i_m[i]
i = nphstack((i_m,i_p))
e = e[i]
g = g[:,i]
g11 = g[0:dim,0:dim]
g21 = g[dim:2dim,0:dim]
g12 = g[0:dim,dim:2dim]
g22 = g[dim:2dim,dim:2dim]
P = nplinalgsolve(g11T,g21T)real
K = nplinalgsolve(R,BT)@P
return [K,P]
if __name__ == '__main__':
from scipy import stats
A = statsnormrvs(size = [5,5])
B = statsnormrvs(size = [5,5])
Q = statsnormrvs(size = [10,5])
Q = QT@Q
R = statsnormrvs(size = [10,5])
R = RT@R
[K,P] = lqr(A,B,Q,R)
import scipyoptimize
import sympy
print(scipyoptimizefsolve(lambda x: x2 + 2x + 1, 0))
print(sympysolve('x2 + 2x + 1'))
spicyoptimizefsolve求数值解,需要给定初值,必要时需要选定求解器(不过解个二元一次而已无所谓了)。
sympysolve求解析解。当然还有更细致的玩法。
当然其实一元二次方程这种有求根公式的玩意……直接套求根公式就行……
二次方程,先计算判别式,判别式小于0 的,说明方程有复数根,那么就用Complex类型来表示就行了,Complex类型是python的内置类型。
1+2i 就写成
x=complex(1,2)
有很多大学生问我,学习python有什么用呢?我说:你至少可以用来解微分方程,如下面的例子,就是解决微分方程:
y"+ay'+by=0
代码如下:
[python] view plain copy
#y"+ay'+by=0
from scipyintegrate import odeint
from pylab import
def deriv(y,t): # 返回值是y和y的导数组成的数组
a = -20
b = -01
return array([ y[1], ay[0]+by[1] ])
time = linspace(00,500,1000)
yinit = array([00005,02]) # 初值
y = odeint(deriv,yinit,time)
figure()
plot(time,y[:,0],label='y') #y[:,0]即返回值的第一列,是y的值。label是为了显示legend用的。
plot(time,y[:,1],label="y'") #y[:,1]即返回值的第二列,是y’的值
xlabel('t')
ylabel('y')
legend()
show()
输出结果如下:
以上就是关于哪位可以用python语言写一下这个方程组怎么解全部的内容,包括:哪位可以用python语言写一下这个方程组怎么解、求助,用python解riccati 方程、怎么用python解一元二次方程等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)