-
大小: 4KB文件類型: .py金幣: 1下載: 0 次發(fā)布日期: 2021-05-15
- 語言: Python
- 標(biāo)簽: python??matplotlib??Euler??
資源簡介
[計算方法作業(yè)]利用python中matplotlib實現(xiàn)繪制歐拉法、改進歐拉法、四階龍格-庫塔法圖像,利用歐拉法、改進歐拉法、四階龍格-庫塔法實現(xiàn)微分方程,用python中的matplotlib庫實現(xiàn)圖像的繪制
代碼片段和文件信息
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
#顯示中文和負數(shù)
plt.rcParams[‘font.sans-serif‘]=[‘SimHei‘]
plt.rcParams[‘a(chǎn)xes.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)
????????#設(shè)置原始圖像按鈕
????????button?=?QPushButton(‘原始圖像‘?self)
????????button.move(520?20)
????????button.resize(100?75)
????????button.clicked.connect(m.main)
????????#設(shè)置直接歐拉法按鈕
????????button?=?QPushButton(‘直接歐拉法‘?self)
????????button.move(520?115)
????????button.resize(100?75)
????????button.clicked.connect(m.euler)
????????#設(shè)置改進歐拉法按鈕
????????button?=?QPushButton(‘改進歐拉法‘?self)
????????button.move(520?210)
????????button.resize(100?75)
????????button.clicked.connect(m.mproveeuler)
????????#設(shè)置四階龍格庫塔按鈕
????????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()
????#初始函數(shù)
????def?func(selfx):
???????
評論
共有 條評論