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

资源简介

[计算方法作业]利用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
import math

#显示中文和负数
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.main)

        #设置直接欧拉法按钮
        button = QPushButton(‘直接欧拉法‘ self)
        button.move(520 115)
        button.resize(100 75)
        button.clicked.connect(m.euler)

        #设置改进欧拉法按钮
        button = QPushButton(‘改进欧拉法‘ self)
        button.move(520 210)
        button.resize(100 75)
        button.clicked.connect(m.mproveeuler)

        #设置四阶龙格库塔按钮
        button = QPushButton(‘四阶龙格库塔‘ self)
        button.move(520 305)
        button.resize(100 75)
        button.clicked.connect(m.rungeKutta)
        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.x0=0
        self.h=0.1
        self.x=np.linspace(02)
        self.y=[self.func(i) for i in self.x]
        FigureCanvas.__init__(self fig)
        self.setParent(parent)

        FigureCanvas.setSizePolicy(self
                                   QSizePolicy.Expanding
                                   QSizePolicy.Expanding)
        FigureCanvas.updateGeometry(self)
        #初始图像
        #self.main()

    #初始函数
    def func(selfx):
       

评论

共有 条评论