推荐学习书目
› 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 · 7729 views
    This topic created in 3129 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
    yongzhong
    Apr 17, 2018❤️1
    2
    tensorflow 了解一下?
    EricXuu
    EricXuu
    Apr 17, 2018 via Android❤️1
    3
    一元二次你就求根公式吧
    sympy 了解一下
    projectzoo
    projectzoo
    Apr 17, 2018
    4
    @yongzhong #2 这也上 TF ?
    ranleng
    ranleng
    Apr 17, 2018 via Android
    5
    不是有求 x 的公式嘛, #1 的连接里也有
    dacapoday
    dacapoday
    Apr 17, 2018
    6
    这种还是 wolfram 方便些
    Zzde
    Zzde
    Apr 17, 2018 via iPhone
    7
    @yongzhong #2 解放程都要上 tf 吗……门槛有点高
    Shaikh
    Shaikh
    Apr 17, 2018 via Android
    8
    sagemath 可以,不知道算不算 Python
    wlwood
    wlwood
    Apr 17, 2018 via Android
    9
    scipy 了解下
    ericls
    ericls
    Apr 17, 2018 via iPhone
    10
    当然可以 还可以符号运算
    wlwood
    wlwood
    Apr 17, 2018 via Android
    11
    numpy 了解下
    xd314697475
    xd314697475
    Apr 17, 2018❤️1
    13
    牛顿迭代法了解一下

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

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

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

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

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

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

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