Python中如何用sympy等库解方程式?
请定义一个函数 quadratic(a, b, c),接收 3 个参数,返回一元二次方程:
ax2 + bx + c = 0
的两个解。
这是让我们求 X 的解的意思吗
这个要怎么写,求解
Python中如何用sympy等库解方程式?
用sympy解方程主要用solve()函数,处理符号计算很方便。下面是个具体例子:
from sympy import symbols, solve, Eq
# 定义符号变量
x, y = symbols('x y')
# 解单个方程:x^2 - 4 = 0
equation1 = x**2 - 4
solution1 = solve(equation1, x)
print(f"方程 x^2 - 4 = 0 的解: {solution1}") # 输出: [-2, 2]
# 解方程组
equation2 = Eq(x + y, 5) # x + y = 5
equation3 = Eq(x - y, 1) # x - y = 1
solution2 = solve((equation2, equation3), (x, y))
print(f"方程组的解: {solution2}") # 输出: {x: 3, y: 2}
# 解带参数的方程
a, b = symbols('a b')
equation4 = a*x + b - 0
solution3 = solve(equation4, x)
print(f"方程 a*x + b = 0 的解: {solution3}") # 输出: [-b/a]
solve()第一个参数放方程(或方程组),第二个参数指定要解的变量。用Eq()创建等式更直观,当然直接写表达式x**2 - 4也行,默认等于0。
对于更复杂的方程,比如涉及三角函数、指数函数的,sympy也能处理:
from sympy import sin, exp
equation5 = sin(x) - 0.5
solution4 = solve(equation5, x)
print(f"sin(x) = 0.5 的解: {solution4}")
如果方程有多个解,solve会返回列表。解方程组时,变量和方程要匹配,不然会报错。
总结:用sympy的solve函数,配Eq创建等式。
tensorflow 了解一下?
一元二次你就求根公式吧
sympy 了解一下
#2 这也上 TF ? 
不是有求 x 的公式嘛, #1 的连接里也有
这种还是 wolfram 方便些
#2 解放程都要上 tf 吗……门槛有点高
scipy 了解下
当然可以 还可以符号运算
numpy 了解下
牛顿迭代法了解一下
相关内容看大学数值计算方法
看了下 说的 sympy,感觉挺方便的,比如解 5x2 + 3x = 1:
>>> from sympy import
>>> x = symbols(‘x’)
>>> solveset(Eq(5x**2 + 3*x, 1), x)
{-3/10 + sqrt(29)/10, -sqrt(29)/10 - 3/10}
>>> float(a.args[0])
0.2385164807134504
>>> float(a.args[1])
-0.8385164807134504
我很奇怪啊,楼上这些人把初中数学都忘记了吗?python<br>import math<br>x1 = (-b + math.sqrt(b ** 2 - 4 * a * c)) / 2 / a<br>x2 = (-b - math.sqrt(b ** 2 - 4 * a * c)) / 2 / a<br>
首推 sympy,如果想不调包,就了解一下牛顿迭代法
给楼主两个建议:
① 换个入门教程
② 善用搜索
def quadratic(a,b,c):
if a == 0:
print(“二次项系数不能为:0”)
else:
i = b2-4ac
if i > 0:
x1 = (-b+i0.5)/(2a)
x2 = (-b-i**0.5)/(2a)
print(“x1 的值为:{0},x2 的值为:{1}”.format(x1,x2))
elif i == 0:
x1 = (-b+math.sqrt(i))/2
print(“x1,x2 的值均为:{0}”.format(x1))
elif i < 0:
print(“该方程无实数根”)
In [17]: import sympy as sy
…:
…: def quadratic(a, b, c):
…: Eq = sy.Eq(ax**2+bx+c, 0)
…: return sy.solve(Eq, x)
…:
In [18]: quadratic(1, 2, 1)
Out[18]: [-1]
这不是大一 C 语言的课后作业吗?
这是楼主看到廖雪峰 Python 教程里定义函数那一节最后的练习题问的,那边评论里都是答案,不懂可以搜索……
按那个教程看到那里,那个练习题对新手来说,确实问的有点懵……
楼上的人也都挺有意思的……
这个 66666。
有没有解一元 n 次的包
用 sympy 可以,常见的方程式都能解。
线性代数了解一下
sympy 吧…不过感觉开个 MATLAB 或者 Mathematica 更方便😂
z3 也不错
这个不是有解析解么,直接代公式啊,o(1)的复杂度。。。。
没有解析解的上牛顿迭代法啊,微分方程上龙格库塔啊,pde 的话,就当我没说。。。。。
先做个判断,if b ** 2 - 4 * a * c > 0
是的。
数值计算了解一下,用任何语言解方程
这个应该只能解一次方程。
这个用 sympy 应该很方便吧。
一元二次方程不是有标准的求根公式吗?
x = (-b ∓ √(b^2 - 4ac)) / 2a
且可以通过根的判别式∆ = b^2 -4ac 来判断方程有几个解,∆ > 0 有两个解,∆ = 0 有一个解,∆ < 0 无解。
为什么楼上讲的都好复杂?
是也乎 ╮(╯▽╰)╭
py 一样可调 wolframe 的~
我看到上面的回复更是一脸懵逼
我不明白廖雪锋的问题是什么,它是要我们求解 X 吗?我试了下评论里面的答案,没有一个是对的啊


