推荐学习书目
Learn Python the Hard Way
Python Sites
PyPI - Python Package Index
http://diveintopython.org/toc/index.html
Pocoo
值得关注的项目
PyPy
Celery
Jinja2
Read the Docs
gevent
pyenv
virtualenv
Stackless Python
Beautiful Soup
结巴中文分词
Green Unicorn
Sentry
Shovel
Pyflakes
pytest
Python 编程
pep8 Checker
Styles
PEP 8
Google Python Style Guide
Code Style from The Hitchhiker's Guide
lukeshawn
V2EX  ›  Python

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

  •  
  •   lukeshawn · Apr 17, 2018 · 7203 views
    This topic created in 2947 days ago, the information mentioned may be changed or developed.
    请定义一个函数 quadratic(a, b, c),接收 3 个参数,返回一元二次方程:

    ax2 + bx + c = 0

    的两个解。

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

    这个要怎么写,求解
    37 replies    2018-04-18 11:59:28 +08:00
    yongzhong
        2
    yongzhong  
       Apr 17, 2018   ❤️ 1
    tensorflow 了解一下?
    EricXuu
        3
    EricXuu  
       Apr 17, 2018 via Android   ❤️ 1
    一元二次你就求根公式吧
    sympy 了解一下
    projectzoo
        4
    projectzoo  
       Apr 17, 2018
    @yongzhong #2 这也上 TF ?
    ranleng
        5
    ranleng  
       Apr 17, 2018 via Android
    不是有求 x 的公式嘛, #1 的连接里也有
    dacapoday
        6
    dacapoday  
       Apr 17, 2018
    这种还是 wolfram 方便些
    Zzde
        7
    Zzde  
       Apr 17, 2018 via iPhone
    @yongzhong #2 解放程都要上 tf 吗……门槛有点高
    Shaikh
        8
    Shaikh  
       Apr 17, 2018 via Android
    sagemath 可以,不知道算不算 Python
    wlwood
        9
    wlwood  
       Apr 17, 2018 via Android
    scipy 了解下
    ericls
        10
    ericls  
       Apr 17, 2018 via iPhone
    当然可以 还可以符号运算
    wlwood
        11
    wlwood  
       Apr 17, 2018 via Android
    numpy 了解下
    xd314697475
        13
    xd314697475  
       Apr 17, 2018   ❤️ 1
    牛顿迭代法了解一下

    相关内容看大学数值计算方法
    goreliu
        14
    goreliu  
       Apr 17, 2018
    看了下 @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
        15
    locktionc  
       Apr 17, 2018   ❤️ 1
    我很奇怪啊,楼上这些人把初中数学都忘记了吗?

    ```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
        16
    XIVN1987  
       Apr 17, 2018
    符号计算,推荐 sympy
    wnma3mz
        17
    wnma3mz  
       Apr 17, 2018 via Android
    首推 sympy,如果想不调包,就了解一下牛顿迭代法
    Xiaobaixiao
        18
    Xiaobaixiao  
       Apr 17, 2018   ❤️ 1
    给楼主两个建议:
    ① 换个入门教程
    ② 善用搜索

    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
        19
    XIVN1987  
       Apr 17, 2018
    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
        20
    Jackeriss  
       Apr 17, 2018
    这不是大一 C 语言的课后作业吗?
    anyclue
        21
    anyclue  
       Apr 17, 2018   ❤️ 1
    这是楼主看到廖雪峰 Python 教程里定义函数那一节最后的练习题问的,那边评论里都是答案,不懂可以搜索……
    按那个教程看到那里,那个练习题对新手来说,确实问的有点懵……
    楼上的人也都挺有意思的……
    est
        22
    est  
       Apr 17, 2018
    @anyclue 这个 66666。
    Joshua999
        23
    Joshua999  
       Apr 17, 2018
    有没有解一元 n 次的包
    goreliu
        24
    goreliu  
       Apr 17, 2018
    @Joshua999 用 sympy 可以,常见的方程式都能解。
    DevRoss
        25
    DevRoss  
       Apr 17, 2018 via Android
    线性代数了解一下
    zst
        26
    zst  
       Apr 17, 2018 via Android
    sympy 吧....不过感觉开个 MATLAB 或者 Mathematica 更方便😂
    virusdefender
        27
    virusdefender  
       Apr 17, 2018
    z3 也不错
    wcsjtu
        28
    wcsjtu  
       Apr 17, 2018
    这个不是有解析解么,直接代公式啊,o(1)的复杂度。。。。
    没有解析解的上牛顿迭代法啊,微分方程上龙格库塔啊,pde 的话,就当我没说。。。。。
    bwangel
        29
    bwangel  
       Apr 17, 2018
    jerry033
        30
    jerry033  
       Apr 17, 2018
    @locktionc 先做个判断,if b ** 2 - 4 * a * c > 0
    locktionc
        31
    locktionc  
       Apr 17, 2018
    @jerry033 是的。
    Len1133
        32
    Len1133  
       Apr 17, 2018
    数值计算了解一下,用任何语言解方程
    goreliu
        33
    goreliu  
       Apr 17, 2018
    @bwangel 这个应该只能解一次方程。
    guoli100
        34
    guoli100  
       Apr 18, 2018 via iPhone
    这个用 sympy 应该很方便吧。

    一元二次方程不是有标准的求根公式吗?
    x = (-b ∓ √(b^2 - 4ac)) / 2a

    且可以通过根的判别式∆ = b^2 -4ac 来判断方程有几个解,∆ > 0 有两个解,∆ = 0 有一个解,∆ < 0 无解。

    为什么楼上讲的都好复杂?
    ZoomQuiet
        35
    ZoomQuiet  
       Apr 18, 2018 via iPhone
    @dacapoday 是也乎 ╮(╯▽╰)╭

    py 一样可调 wolframe 的~
    lukeshawn
        36
    lukeshawn  
    OP
       Apr 18, 2018
    @anyclue 我看到上面的回复更是一脸懵逼
    lukeshawn
        37
    lukeshawn  
    OP
       Apr 18, 2018
    我不明白廖雪锋的问题是什么,它是要我们求解 X 吗?我试了下评论里面的答案,没有一个是对的啊
    @anyclue
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   961 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 154ms · UTC 20:01 · PVG 04:01 · LAX 13:01 · JFK 16:01
    ♥ Do have faith in what you're doing.