• 大小: 5KB
    文件类型: .py
    金币: 1
    下载: 0 次
    发布日期: 2021-05-15
  • 语言: Python
  • 标签: python  matplotlib  

资源简介

[计算方法作业]利用python中matplotlib实现绘制二分法、牛顿法、弦截法图像,利用二分法、牛顿法、弦截法求方程的根,用python中matplotlib库绘制函数的图像。

资源截图

代码片段和文件信息

import sys
from PyQt5.QtWidgets import QApplication QMainWindow QSizePolicy QPushButton
from matplotlib.backends.backend_qt5agg import FigureCanvasQTAgg as FigureCanvas
from matplotlib.figure import Figure
import matplotlib.pyplot as plt
import numpy as np
import scipy.interpolate as spi

#显示中文和负数
plt.rcParams[‘font.sans-serif‘]=[‘SimHei‘]
plt.rcParams[‘axes.unicode_minus‘]=False

class App(QMainWindow):

    def __init__(self):
        super().__init__()
        self.initUI()

    def initUI(self):
        self.setWindowtitle(“方程求根“)
        self.setGeometry(200 200 640 400)
        m = Interpolation(self width=5 height=4)#实例化一个画布对象
        m.move(0 0)
        #设置原始图像按钮
        button = QPushButton(‘原始图‘ self)
        button.move(520 20)
        button.resize(100 75)
        button.clicked.connect(m.drawfunc)

        #设置二分法按钮
        button = QPushButton(‘二分法‘ self)
        button.move(520 115)
        button.resize(100 75)
        button.clicked.connect(m.drawdichotomy)

        #设置牛顿法按钮
        button = QPushButton(‘牛顿法‘ self)
        button.move(520 210)
        button.resize(100 75)
        button.clicked.connect(m.drawNewton)

        #设置弦截法按钮
        button = QPushButton(‘弦截法‘ self)
        button.move(520 305)
        button.resize(100 75)
        button.clicked.connect(m.secant)
        self.show()

#方程求根类
class Interpolation(FigureCanvas):
    def __init__(self parent=None width=5 height=4 dpi=100):
        fig = Figure(figsize=(width height) dpi=dpi)
        self.axes = fig.add_subplot(111)
        #初始化各项值
        self.a=0.0001
        self.a0=2.5
        self.b=3
        self.eps=0.00001 #精度
        self.x0=3 #牛顿法近似值
        #原始函数的值
        self.x=np.linspace(03.5)
        self.y=[self.func(i) for i in self.x]
        FigureCanvas.__init__(self fig)
        self.setParent(parent)
         #挪动坐标位置
        self.axes.set_xlim(04.5)
        #去掉边框
        self.axes.spines[‘top‘].set_color(‘none‘)
        self.axes.spines[‘right‘].set_color(‘none‘)
        #移位置 设为原点相交
        self.axes.xaxis.set_ticks_position(‘bottom‘)
        self.axes.spines[‘bottom‘].set_position((‘data‘0))
        self.axes.yaxis.set_ticks_position(‘left‘)
        self.axes.spines[‘left‘].set_position((‘data‘0))
        FigureCanvas.setSizePolicy(self
      

评论

共有 条评论