请问可以用 Python 解方程式吗?

2018-04-17 12:31:35 +08:00
 lukeshawn
请定义一个函数 quadratic(a, b, c),接收 3 个参数,返回一元二次方程:

ax2 + bx + c = 0

的两个解。

这是让我们求 X 的解的意思吗

这个要怎么写,求解
6412 次点击
所在节点    Python
37 条回复
SingeeKing
2018-04-17 12:35:49 +08:00
yongzhong
2018-04-17 12:36:27 +08:00
tensorflow 了解一下?
EricXuu
2018-04-17 12:42:05 +08:00
一元二次你就求根公式吧
sympy 了解一下
projectzoo
2018-04-17 12:45:56 +08:00
@yongzhong #2 这也上 TF ?
ranleng
2018-04-17 12:46:25 +08:00
不是有求 x 的公式嘛, #1 的连接里也有
dacapoday
2018-04-17 12:47:52 +08:00
这种还是 wolfram 方便些
Zzde
2018-04-17 12:49:22 +08:00
@yongzhong #2 解放程都要上 tf 吗……门槛有点高
Shaikh
2018-04-17 12:51:39 +08:00
sagemath 可以,不知道算不算 Python
wlwood
2018-04-17 12:51:49 +08:00
scipy 了解下
ericls
2018-04-17 12:52:31 +08:00
当然可以 还可以符号运算
wlwood
2018-04-17 12:52:56 +08:00
numpy 了解下
wplct
2018-04-17 12:56:08 +08:00
xd314697475
2018-04-17 13:06:07 +08:00
牛顿迭代法了解一下

相关内容看大学数值计算方法
goreliu
2018-04-17 13:12:46 +08:00
看了下 @EricXuu 说的 sympy,感觉挺方便的,比如解 5x2 + 3x = 1:

>>> from sympy import *
>>> x = symbols('x')
>>> solveset(Eq(5*x**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
locktionc
2018-04-17 13:28:07 +08:00
我很奇怪啊,楼上这些人把初中数学都忘记了吗?

```python
import math
x1 = (-b + math.sqrt(b ** 2 - 4 * a * c)) / 2 / a
x2 = (-b - math.sqrt(b ** 2 - 4 * a * c)) / 2 / a
```
XIVN1987
2018-04-17 13:37:22 +08:00
符号计算,推荐 sympy
wnma3mz
2018-04-17 13:39:57 +08:00
首推 sympy,如果想不调包,就了解一下牛顿迭代法
Xiaobaixiao
2018-04-17 13:43:52 +08:00
给楼主两个建议:
① 换个入门教程
② 善用搜索

def quadratic(a,b,c):
if a == 0:
print("二次项系数不能为:0")
else:
i = b**2-4*a*c
if i > 0:
x1 = (-b+i**0.5)/(2*a)
x2 = (-b-i**0.5)/(2*a)
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("该方程无实数根")
XIVN1987
2018-04-17 13:54:12 +08:00
In [17]: import sympy as sy
...:
...: def quadratic(a, b, c):
...: Eq = sy.Eq(a*x**2+b*x+c, 0)
...: return sy.solve(Eq, x)
...:

In [18]: quadratic(1, 2, 1)
Out[18]: [-1]
Jackeriss
2018-04-17 14:23:40 +08:00
这不是大一 C 语言的课后作业吗?

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/447455

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX