本篇为数值分析课程代码实现-劈因子法的实现
仅供参考
配置环境
- Python3.6
- matplotlib
- numpy
-
# -*- coding: utf-8 -*- """ Created on Sun Nov 25 12:56:58 2018 劈因子法(贝尔斯托法) @author: hhuaf """ import numpy as np import matplotlib.pyplot as plt #input_u=input('请输入两个数,第一个') #iuput_v=input('请输入两个数,第二个') input_u=0 iuput_v=0 theta=1e-5 num=1000 #可以显示中文 plt.rcParams["font.sans-serif"] = ["SimHei"] plt.rcParams['axes.unicode_minus'] = False # 设置风格 plt.style.use('ggplot') # 因子式 def f(x): return (x+1)*(x-4)*(x-5)*(x+3)*(x-2) # 一般式 def f1(x): return x**5-7*x**4-3*x**3+79*x**2-46*x-120 # 原函数系数 coefficient=[1,-7,-3,79,-46,-120] root_list=[] def two(a): return -a[1]/a[0] def Bairstow(a = coefficient, u = 0, v = 0, num = 1000, theta = 1e-2 ): if len(a) < 2: return [None] if len(a) == 2: return [two(a)] elif len(a) == 3: delta_num = (u**2-4*v) x1=0