-
大小: 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
??????
評論
共有 條評論