Python 解方程

一·求解线性方程组Numpy
假设我们有以下方程组:形如A * x = b
{ x + y = 4 2 ∗ x + 3 ∗ y = 5 \left\{\begin{matrix} x + y = 4 \\ 2*x + 3*y = 5 \end{matrix}\right. {x+y=42x+3y=5

import numpy as np
A = np.mat('1,1; 2,3')
b = np.mat('4;5')
r = np.linalg.solve(A,b)
print (r)

二·求解非线性方程组SciPy(它同样适用于求解线性方程组。)

句法:scipy.optimize.fsolve(func, x0, args=(), fprime=None, full_output=0, col_deriv=0, xtol=1.49012e-08, maxfev=0, band=None, epsfcn=None, factor=100, diag=None)
一般我们只需要使用前两个参数,分别是写有方程的函数,和初始值。
详细介绍
例:
{ 2 ∗ x − y = 2 x 2 + y 2 = 8 \left\{\begin{matrix} 2*x - y =2 \\ x^2+y^2=8 \end{matrix}\right. {2xy=2x2+y2=8
函数图像:
函数图像
代码:

from scipy.optimize import fsolve
def func(i):
    x, y, = i[0], i[1]
    return [
            2 * x - y - 2,
            x ** 2 + y ** 2 -8
            ]
r = fsolve(func,[0, 0])
print (r)
由于fsolve采用迭代的数值算法,只输出结果(-0.4,-2.8),但由函数图像可知有两解。所以初值的设置尤为重要。

三·SymPy寻找全部结果

from sympy import solve,Symbol
x = Symbol('x')
y = Symbol('y')
r = solve([2 * x - y - 2,x ** 2 + y ** 2 -8],[x, y])
print(r)

返回结果: [(-2/5, -14/5), (2, 2)]

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值