文档章节

一元二次方程求根

希尔瓦娜斯风行者
 希尔瓦娜斯风行者
发布于 2017/08/30 10:21
字数 281
阅读 2
收藏 0
"""
用求根公式法解一元二次方程的一般步骤为:
①把方程化成一般形式ax²+bx+c=0(a≠0),确定a,b,c的值(注意符号);
②求出判别式△=b²-4ac的值,判断根的情况;
③在△>=0注:此处△读“德尔塔”)的前提下,把a、b、c的值代入公式进行计算,求出方程的根。
"""
import cmath
import math
import sys


def get_float(msg, allow_zero):
    x = None
    while x is None:
        try:
            x = float(input(msg))
            if not allow_zero and abs(x) < sys.float_info.epsilon:
                print('zero is not allowed')
                x = None
        except ValueError as err:
            print(err)
    return x

print('ax\N{SUPERSCRIPT TWO} + bx + c = 0')
a = get_float('enter a: ', False)
b = get_float('enter b: ', True)
c = get_float('enter c:', True)
x1 = None
x2 = None
discriminant = (b**2) - (4*a*c)
if discriminant == 0:
    x1 = -(b/(2*a))
else:
    if discriminant > 0:
        root = math.sqrt(discriminant)
    else:
        root = cmath.sqrt(discriminant)
    x1 = (-b + root) / (2*a)
    x2 = (-b - root) / (2*a)
    # equation = '{0}x\N{SUPERSCRIPT TWO} + {1}X + {2} = 0 \N{RIGHTWARDS ARROW} x = {3}'.format(a, b, c, x1)
    equation = '{a}x\N{SUPERSCRIPT TWO} + {b}X + {c} = 0 \N{RIGHTWARDS ARROW} x = {x1}'.format(**locals())
    if x2 is not None:
        equation += ' or x = {0}'.format(x2)
    print(equation)


结果:

ax² + bx + c = 0
enter a: 2
enter b: 3
enter c:4
2.0x² + 3.0X + 4.0 = 0 → x = (-0.75+1.1989578808281798j) or x = (-0.75-1.1989578808281798j)

© 著作权归作者所有

共有 人打赏支持
希尔瓦娜斯风行者
粉丝 0
博文 9
码字总数 1715
作品 0
西安
程序员
分配硬币 Arranging Coins

问题: You have a total of n coins that you want to form in a staircase shape, where every k-th row must have exactly k coins. Given n, find the total number of full staircase r......

叶枫啦啦
2017/06/27
0
0
NP难问题与过拟合

NP问题一直都是信息学的巅峰。巅峰,意即很引人注目但难以解决。在信息学研究中,这是一个耗费了很多时间和精力也没有解决的终极问题,好比物理学中的大统一和数学中的歌德巴赫猜想等。 以下...

ccj_ok
2017/08/01
0
0
请教一个python的问题,关于import 库的问题

程序是计算一元二次方程,然后需要使用math的sqrt函数。 但是使用import math导入math库,程序运行后不报错,但是运行到需要sqrt函数的时候报错: name 'sqrt' is not defined 然后,最后尝试...

linux工人
2013/01/22
3.1K
5
计算器 abacus 技术文档之二----初步设计

======================================= 计算器 abacus 的下载地址:http://www.oschina.net/code/snippet73693213725 如果你有关于 abacus 的问题或者建议,请发邮件至 zhoucosin@163.co......

zhcosin
2012/10/30
0
0
Matlab计算微分方程曲线求导及过曲线上点的切线方程

Matlab计算微分方程曲线求导及过曲线上点的切线方程 求解f(x)=x^2一元二次方程上某点的切线方程并绘制出方程的切线图。点(4,f(4))是曲线方程f(x)上的一个点,求出该点的切线并绘制出来。 画出...

zhangphil
2017/12/19
0
0

没有更多内容

加载失败,请刷新页面

加载更多

为什么Java大神,都在看Spring Boot和Spring Cloud的书?

如果你是一名Java开发人员,并且最近正打算学习Spring Boot和Spring Cloud框架并寻找一些关于它们的最好的书籍,那么,你今天就来对地方了。 本文,我们将讨论一些学习Spring Boot和Spring ...

Java小铺
18分钟前
6
0
springboot logback日志配置

springboot 如果不使用外部tomcat的话,日志是需要自己配置的,不然的话就只有控制台的日志,但是日志又是我们在项目上了生产环境,出问题时,检查问题的唯一途径,所以我们要配置详细的日志...

曾大大胖
18分钟前
2
0
Linux服务器集体篡改时间的方法

Red Hat 虚拟化课程RH318,中小型公司使用的话,感觉可以匹敌OpenStack。手头上有一个VMware的映像,RHEV 3.5版的,只能把系统时间调整到2016年才能使用。Red Hat的RHEV已经更新到4.1版,不过...

大别阿郎
18分钟前
1
0
Tomcat启动异常:java.lang.ClassNotFoundException

警告: Name = mysqlDataSource Property maxActive is not used in DBCP2, use maxTotal instead. maxTotal default value is 8. You have set value of "100" for "maxActive" property, wh......

hengbao5
20分钟前
1
0
GO错误的一些处理(defer,recover,panic)

package main import("fmt""errors")func main() {num := 10fmt.Printf("num的类型%T, num的值%v, num的地址%v\n", num, num, &num)num2 := new(int) //返回一个指针//num...

汤汤圆圆
28分钟前
0
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部