資源簡介
通過程序求出插值函數的表達式是比較麻煩的,常用的方法是描出插值曲線上盡量密集的有限個采樣點,并用這有限個采樣點的連線,即折線,近似插值曲線。取點越密集,所得折線就越逼近理論上的插值曲線。本實驗中將所取的點的橫坐標存放于動態數組中,通過插值方法計算得到的對應縱坐標存放于動態數組中。
本實驗將Lagrange插值、Newton插值和三次樣條插值實現為一個類,并在Button單擊事件中調用該類相應函數,得出插值結果并畫出圖像。

代碼片段和文件信息
import?matplotlib.pyplot?as?plt
import?interP?as?pi
#?t:根據t為幾輸出不同算法圖像,num:取點個數
def?gui(t?num):
????x1?=?range(100)
????x2?=?[]
????y1?=?[]
????y2?=?range(100)
????for?i?in?range(100):
????????y1.append(0)
????????x2.append(0)
????#?print(x1?y1)
????plt.plot(x1?y1)
????plt.plot(x2?y2)
????#?plt.show()
????pos?=?plt.ginput(num)
????#?print(pos)
????x?=?[]
????y?=?[]
????for?k?in?range(num):
????????x.append(int(pos[k][0]))
????????y.append(int(pos[k][1]))
????#?print(x?y)
????n?=?len(x)
????x.sort()
????li?=?pi.PyInterpolation(x?y?n)
????lj?=?pi.PyInterpolation(x?y?n)
????lk?=?pi.PyInterpolation(x?y?n)
????‘調用插值函數,形成坐標組‘
????while?True:
????????plt.figure()
????????#?plt.plot(x?y)
????????if?t?==?1:
????????????li.lagrange()
????????????plt.plot(li.X?li.Y)
????????????break
????????elif?t?==?2:
????????????li.newton()
????????????plt.plot(li.X?li.Y)
????????????break
????????elif?t?==?3:
????????????li.spline()
????????????plt.plot(li.X?li.Y)
????????????break
????????elif?t?==?4:
????????????li.lagrange()
????????????plt.plot(li.X?li.Y?linewidth=‘1‘?label=“lagrange“?color=‘red‘)
????????????plt.legend(loc=‘upper?right‘)
????????????#?print(li.X?li.Y)
????????????lj.newton()
????????????plt.plot(lj.X?lj.Y?linewidth=‘1‘?label=“newton“?color=‘blue‘)
????????????plt.legend(loc=‘upper?right‘)
????????????#?print(lj.X?lj.Y)
????????????lk.spline()
????????????plt.plot(lk.X?lk.Y?linewidth=‘1‘?label=“spline“?color=‘green‘)
????????????plt.legend(loc=‘upper?right‘)
????????????#?print(lk.X?lk.Y)
????????????break
????plt.show()
????‘根據t不同畫不同插值函數的圖‘
?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----
?????文件????????228??2017-11-26?15:40??project1\.idea\inspectionProfiles\profiles_settings.xm
?????文件????????225??2017-11-26?15:41??project1\.idea\misc.xm
?????文件????????270??2017-11-26?15:40??project1\.idea\modules.xm
?????文件????????459??2017-11-26?15:41??project1\.idea\PYPROJECT.iml
?????文件??????39485??2017-12-12?16:19??project1\.idea\workspace.xm
?????文件???????1770??2017-12-05?17:56??project1\draw.py
?????文件?????103101??2017-11-28?08:14??project1\easygui.py
?????文件???????2096??2017-12-08?17:34??project1\interP.py
?????文件???????1219??2017-12-05?18:15??project1\setUI.py
?????文件???????1384??2017-12-05?17:56??project1\__pycache__\draw.cpython-35.pyc
?????文件??????72673??2017-11-28?08:28??project1\__pycache__\easygui.cpython-35.pyc
?????文件???????2800??2017-12-08?17:43??project1\__pycache__\interP.cpython-35.pyc
?????目錄??????????0??2017-12-13?22:38??project1\.idea\inspectionProfiles
?????目錄??????????0??2017-12-13?22:38??project1\.idea
?????目錄??????????0??2017-12-13?22:38??project1\__pycache__
?????目錄??????????0??2017-12-13?22:38??project1
-----------?---------??----------?-----??----
???????????????225710????????????????????16
評論
共有 條評論