Python 怎么解方程啊?

用的 sympy 中的 solve,这个库是不是只能解有解的方程?

p1 = 0.8
p2 = 1
r1 = 500
r2 = 3500
x = symbols('x')
print('in')
s=solve(p1*exp(-x*r2)-p2*exp(-x*r1)+p2-p1, x)
print(s)

一直输出不了 s。。。 像这种方程用 python 怎么解?


Python 怎么解方程啊?
18 回复

又来一个廖学峰课后作业系列?


Python里解方程最直接的就是用sympy库。给你个例子,比如解 x^2 - 4 = 0

from sympy import symbols, Eq, solve

# 定义符号变量
x = symbols('x')
# 建立方程
equation = Eq(x**2 - 4, 0)
# 解方程
solution = solve(equation, x)
print(solution)  # 输出: [-2, 2]

对于线性方程组,比如:

2x + y = 5
x - y = 1

可以这样解:

from sympy import symbols, Eq, solve

x, y = symbols('x y')
eq1 = Eq(2*x + y, 5)
eq2 = Eq(x - y, 1)

solution = solve((eq1, eq2), (x, y))
print(solution)  # 输出: {x: 2, y: 1}

如果只是数值计算,用numpyroots解多项式方程更方便:

import numpy as np

# 解 x^2 - 4 = 0,系数按降幂排列
coefficients = [1, 0, -4]  # 对应 x^2 + 0*x - 4
roots = np.roots(coefficients)
print(roots)  # 输出: [ 2. -2.]

简单来说,符号方程用sympy.solve,数值多项式用numpy.roots

。。不是 = = 要算个方程

WolframAlpha 了解一下?

谢谢 算出来了

前两天不是刚问完,sympy

我用了那个 没解算不出来好像 换一个 x-2 很快算出来

自己写个二分法?知道导数可以用牛顿。这种方程自己写一个很快的。

这样行不行?

import random

while True:
x = random.random()
然后将 x 带入方程两边如果相等就 break

哈哈猴子算法

😂😂😂 用了那个 wolframalpha

sympy 啊。。。

我就用的这个库啊……你看我代码 卡在 solve 算不出来

sympy 是给解析解,你这个方程没有解析解啊。

嗯。。所以我来问应该用什么

numpy 和 scipy.optimize.fsolve 就行

这种需求用 Mathematica 啊

不是我说,这种最好用 tensorflow,做个 variable 然后用模型能帮你算出系数

回到顶部