Python学习笔记:求解一元二次方程

一、一元二方程求解公式

对于一元二次方程 a x 2 + b x + c = 0 ax^2+bx+c=0 ax2+bx+c=0
假设二次项系数 a ≠ 0 a≠0 a=0
判别式 Δ = b 2 − 4 a c \Delta=b^2-4ac Δ=b24ac

I f Δ ≥ 0 T h e n x 1 = − b + b 2 − 4 a c 2 a x 2 = − b − b 2 − 4 a c 2 a E l s e x 1 = − b 2 a + 4 a c − b 2 2 a i x 2 = − b 2 a − 4 a c − b 2 2 a i E n d   I f If \quad \Delta \geq 0 \quad Then \\ \quad x_1=\displaystyle \frac{-b+\sqrt{b^2-4ac}}{2a} \\ \quad x_2=\displaystyle \frac{-b-\sqrt{b^2-4ac}}{2a} \\ Else \\ \quad x_1=\displaystyle -\frac{b}{2a}+\frac{\sqrt{4ac-b^2}}{2a}i \\ \quad x_2=\displaystyle -\frac{b}{2a}-\frac{\sqrt{4ac-b^2}}{2a}i \\ End \ If IfΔ0Thenx1=2ab+b24ac x2=2abb24ac Elsex1=2ab+2a4acb2 ix2=2ab2a4acb2 iEnd If

二、编程求解一元二次方程

1、直接求解一元二次方程

  • 创建程序 - 求解一元二次方程01.py
    在这里插入图片描述
# -*- coding: utf-8 -*-
"""
Created on Wed Oct 14 11:02:18 2020

@author: howard

求解一元二次方程01
"""

import math

a = float(input('a = '))
b = float(input('b = '))
c = float(input('c = '))

if a == 0:
    print('异常信息:不是一元二次方程!')
else:
    d = b**2 - 4 * a * c
    if d < 0:
       print('异常信息:此方程没有实数解!')
    else:
        x1 = (-b + math.sqrt(d)) / (2 * a)
        x2 = (-b - math.sqrt(d)) / (2 * a)
        print('x1 = {}, x2 = {}'.format(x1, x2))    
  • 运行三次程序,查看结果
    在这里插入图片描述

2、编写一元二次方程求解函数

  • 创建程序 - 求解一元二次方程02.py
    在这里插入图片描述
# -*- coding: utf-8 -*-
"""
Created on Wed Oct 14 10:30:18 2020

@author: howard

求解一元二次方程02
"""

import math

def quadratic(a, b, c):
    if a == 0:
        raise ValueError('异常信息:不是一元二次方程!')
    else:
        d = b**2 - 4 * a * c
        if d < 0:
            raise ValueError('异常信息:此方程没有实数解!')
        else:
            x1 = (-b + math.sqrt(d)) / (2 * a)
            x2 = (-b - math.sqrt(d)) / (2 * a)
            return x1, x2

a = float(input('a = '))
b = float(input('b = '))
c = float(input('c = '))
try:
    x1, x2 = quadratic(a, b, c)
except ValueError as err:
    print(err)
else:
    print('x1 = {}, x2 = {}'.format(x1, x2))    
  • 运行三次程序,查看结果
    在这里插入图片描述

3、编写一元二次方程类

  • 创建程序 - 求解一元二次方程03.py
    在这里插入图片描述
# -*- coding: utf-8 -*-
"""
Created on Wed Oct 14 10:30:18 2020

@author: howard

求解一元二次方程03
"""

import math

class Quadratic:
    def __init__(self, a, b, c):
        self.a = a
        self.b = b
        self.c = c

    def get_solutions(self):
        a = self.a
        b = self.b
        c = self.c
        if a == 0:
            raise ValueError('异常信息:不是一元二次方程!')
        else:
            d = b**2 - 4 * a * c
            if d < 0:
                raise ValueError('异常信息:此方程没有实数解!')
            else:
                x1 = (-b + math.sqrt(d)) / (2 * a)
                x2 = (-b - math.sqrt(d)) / (2 * a)
                return x1, x2

a = float(input('a = '))
b = float(input('b = '))
c = float(input('c = '))
try:
    quadratic = Quadratic(a, b, c)
    x1, x2 = quadratic.get_solutions()
except ValueError as err:
    print(err)
else:
    print('x1 = {}, x2 = {}'.format(x1, x2))    
  • 运行三次程序,查看结果
    在这里插入图片描述

4、考虑一元二次方程复数解

  • 创建程序 - 求解一元二次方程04.py
    在这里插入图片描述
# -*- coding: utf-8 -*-
"""
Created on Wed Oct 14 10:30:18 2020

@author: howard

求解一元二次方程04
"""

import math

class Quadratic:
    def __init__(self, a, b, c):
        self.a = a
        self.b = b
        self.c = c

    def get_solutions(self):
        a = self.a
        b = self.b
        c = self.c
        if a == 0:
            raise ValueError('异常信息:不是一元二次方程!')
        else:
            d = b**2 - 4 * a * c
            if d < 0:
                real = -b / (2 * a)
                imagery = math.sqrt(-d) / (2 * a)
                x1 = complex(real, imagery)
                x2 = complex(real, -imagery)
            else:
                x1 = (-b + math.sqrt(d)) / (2 * a)
                x2 = (-b - math.sqrt(d)) / (2 * a)
            return x1, x2

a = float(input('a = '))
b = float(input('b = '))
c = float(input('c = '))
try:
    quadratic = Quadratic(a, b, c)
    x1, x2 = quadratic.get_solutions()
except ValueError as err:
    print(err)
else:
    print('x1 = {}, x2 = {}'.format(x1, x2))    
  • 运行三次程序,查看结果
    在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/howard2005/article/details/109068178
今日推荐