計算機課程設計基于EXCEL VBA的Lagrang插值程序設計_第1頁
計算機課程設計基于EXCEL VBA的Lagrang插值程序設計_第2頁
計算機課程設計基于EXCEL VBA的Lagrang插值程序設計_第3頁
計算機課程設計基于EXCEL VBA的Lagrang插值程序設計_第4頁
計算機課程設計基于EXCEL VBA的Lagrang插值程序設計_第5頁
已閱讀5頁,還剩11頁未讀 繼續免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、基于基于 excelexcel vbavba 的的 lagranglagrang 插值程序設計插值程序設計 學生姓名: 班級:08081103 指導老師: 摘要:excel 是 microsoft office 家族成員,是 windows 環境下應用最廣泛的軟件之一。 是一個功能強大、技術先進、使用方便的表格式數據綜合管理和分析系統。它向用戶提 供了史無前例的、超強的計算功能及表格功能。它采用電子表格方式進行數據處理,操 作直觀方便;它提供了豐富的函數,可以進行各種數據處理、統計分析。此外,excel 的強 大功能還在于它提供的宏語言 visual basic for application

2、(簡稱 vba),為廣大用戶提供 了一個新的、更高層次的二次開發平臺。 本文介紹一種基于 excel 內核的 vba 編程方法,來擴展 excel 的功能,以實現 lagrang 插值函數計算的數據統計功能。討論如何利用 microsoftexcel 的強大數據處理 功能和其中的 vba 程序,編制簡單、快捷、實用的計算數學模塊,使得許多復雜、煩瑣 的數值計算可通過自編數學軟件輕松完成。 關鍵詞: excel, lagrang , 插值函數 vba 編程 指導老師簽字:指導老師簽字: 目目 錄錄 1 引言 .1 2 基于 excel vba 的 lagrang 插值的理論基礎 .2 2.1 v

3、ba 簡介 .2 2.1.1 vba 是什么.2 2.1.2 vba 和 vb 的區別.3 2.1.3 vba 的特點.3 2.1.4 vba 的 excel 基本應用 .4 2.2 宏操作 .5 2.2.1 宏的概念.5 2.2.2 宏可以實現的操作.5 2.3 插值多項式的簡介 .6 2.3.1 發展歷史 .6 2.3.2 主要內涵 .6 2.3.3 基本類型 .6 2.4 拉格朗日(lagrang)插值函數.7 2.4.1 lagrang 插值基函數.7 2.4.2 lagrang 插值公式.8 3 基于 excel vba 的 lagrang 插值的實現.9 3.1 問題的提出 .9

4、3.2 插值在 excel中的實現 .9 3.3 程序設計 .9 3.4 運行結果 .10 4 結論.12 參考文獻.13 致謝.14 1 1 引言引言 數學在工程、技術、經濟及其它各個領域的使用常常都歸結為對數值計算的研究, 我們將在 excel 中實現幾種典型的數值計算方法,并編寫出這些計算的 vba 代碼,供 數值計算者使用并舉一反三,自己動手解決復雜計算問題,提高工作效率。 許多實際問題往往是通過函數 y=f(x)來反映其內在的規律,而一般函數 y=f(x)的解 析表達式是不易獲得的,往往是通過觀察或實驗獲得 y=f(x)在一些特殊點 處的函數值,然后去找一類較簡單的函數 p(x)(通

5、常是多njxj, 1 , 0njyj, 1 , 0 項式函數)滿足來代替 f(x)即使 y=f(x)的解析表達式已知,要 njyxp jj , 1 , 0 求出 y=f(x)在一些特殊點處的函數值 f()也是不容易的,這時我們的想法是用一個 j x j x 多項式 p(x)來近似代替 f(x),用 p()代替 f()用多項式近似表達函數是近似計算與 j x j x 理論分析的重要內容,它在計算數學中占有舉足輕重的地位在這些方面已有了許多 數學家作了大量的工作,例如 lagrange、newton、hermite、taylor 等。本文將 lagrang 展開式的形式給出插值的計算方法。 2 2

6、 基于基于 excelexcel vbavba 的的 lagranglagrang 插值的理論基礎插值的理論基礎 2.12.1 vbavba 簡介簡介 2.1.12.1.1 vbavba 是什么是什么 直到 90 年代早期,使應用程序自動化還是充滿挑戰性的領域 .對每個需要自動 化的應用程序 ,人們不得不學習一種不同的自動化語言 .例如:可以用 excel 的宏語 言來使 excel 自動化,使用 word basic 使 word 自動化,等等.微軟決定讓它開發出 來的應用程序共享一種通用的自動化語言 -visual basic for application(vba), vba 是非常流行

7、的應用程序開發語言 visual basic 的子集. 實際上 vba 是寄生于 vb 應用程序的版本 . vba 究竟是什么 ?更確切地講 ,它是一種自動化語言 ,它可以使常用的程序自動 化,可以創建自定義的解決方案 . 此外,還可以將 excel 用做開發平臺實現應用程序 . office 取得巨大成功的一個重要原因就是vba,使用 vba 可以完成很多事情, 基于 excel、word 的 vba 小程序不計其數。 大多數人看到了 vba 可以自動化一個程序,可以擴展已有程序,但沒有看到在 office 中,vba 代碼可以是錄制的,而不是寫出來的,帶來的好處是,學習曲線變 得非常緩。如

8、果沒有宏錄制功能,要熟悉某個office 組件的對象模型,絕非一日 之功。 以 arcgis 為例,arcgis 擴展必須使用 arcobject,不管是使用 vba 也罷,vb 也罷,還是 c+也罷。但同時, arcobject 的學習不是一天兩天可以搞定,對于業 余程序員,要使用 vba 來擴展 arcgis,幾乎沒有可能;專業程序員又不屑使用 vba;而對于公司,如果要基于 arcobject 來擴展 arcgis,選擇 vba 意味著源碼 的保護很困難。所以, arcgis 的 vba 就如同雞肋。 不過,學習 ao 的時候,使用 vba 比使用其他語言要容易一些,寫幾行代碼, 然后直

9、接運行測試結果,這種交互式的學習應該是最好的學習方法。 arcgis 以及 ao 與 office 相比,還有一個很大的差別,就是arcgis 缺乏中 等粒度的對象,例如 word 和 excel 的 range 對象。對于 office 開發,可以在對 底層小粒度對象一無所知的狀況下做很多事情,這就是抽象的力量。常人可以處理 的復雜度是有限的,面對數十個對象和幾百個對象,后者需要付出的努力不是10 倍,而是數十倍或更多,因為在學習過程中,必須可以把這些對象在大腦中很好的 組織,以控制其復雜度。 visual basic for applications(簡稱 vba)是新一代標準宏語言,是基

10、于 visual basic for windows 發展而來的。它與傳統的宏語言不同,傳統的宏語言不具有高級語 言的特征,沒有面向對象的程序設計概念和方法。而 vba 提供了面向對象的程序設 計方法,提供了相當完整的程序設計語言。vba 易于學習掌握,可以使用宏記錄器記 錄用戶的各種操作并將其轉換為 vba 程序代碼。這樣用戶可以容易地將日常工作轉 換為 vba 程序代碼,使工作自動化。因此,對于在工作中需要經常使用 office 套裝 軟件的用戶,學用 vba 有助于使工作自動化,提高工作效率。另外,由于 vba 可以 直接應用 office 套裝軟件的各項強大功能,所以對于程序設計人員的

11、程序設計和開發 更加方便快捷。 2.1.22.1.2 vbavba 和和 vbvb 的區別的區別 1. vb 是設計用于創建標準的應用程序 ,而 vba 是使已有的應用程序 (excel 等)自 動化。 2. vb 具有自己的開發環境 ,而 vba 必須寄生于已有的應用程序 。 3. 要運行 vb 開發的應用程序 ,用戶不必安裝 vb,因為 vb 開發出的應用程序 是可執行文件 (*.exe),而 vba 開發的程序必須依賴于它的父應用程序 ,例如 excel。 盡管存在這些不同 ,vba 和 vb 在結構上仍然十分相似 .事實上,如果你已經了解 了 vb,會發現學習 vba 非常快.相應的,

12、學完 vba 會給學習 vb 打下堅實的基礎 。而 且,當學會在 excel 中用 vba 創建解決方案后 ,即已具備在 word access outlook foxpro prowerpoint 中用 vba 創建解決方案的大部分知識 。 * vba 一個關鍵特征是你所學的知識在微軟的一些產品中可以相互轉化。 2.1.32.1.3 vbavba 的特點的特點 vba 最大特點和最大優點是利用面向對象(oop)的 activex automation 技術,使 語言的引擎在技術上與開發環境分離。它的功能在很大程度上依賴于它的客戶顯露的 automation 接口。同時,由于 vba 是基于

13、activex automation 技術,它可以使用任何 automation 技術的應用程序共同工作。 在 microsoft excel 中,與表對應的對象是工作表(sheet 或 worksheet),與每 一個表格方格對應的對象是單元格區域(range),它可以僅包括一個單元格(cell), 也可以由多個單元格合并而成。工作表對象中的 cells 屬性,在單元格的選擇方面可 以達到與 range 相同的效果,它是以行(row)和列(gol)作為參數的,對于行和列 的選擇可以采用變量的形式。在本例中,可設定工作表(worksheet)的每一行第一列 (cells(i,1)為中樁樁號,每

14、一行第二列(cells(i,2)為對應的地面高程。 2.1.42.1.4 v vb ba a 的的 e ex xc ce el l 基基本本應應用用 application 對象是 excel 對象模型的頂層,表示整個 excel 應用程序。在 vb 應 用程序中調用 excel,就是使用 application 對象的屬性、方法和事件。為此,首先要 聲明對象變量: dim vbexcel as object 或直接聲明為 excel 對象: dim vbexcel as excel.application 在聲明對象變量之后,可用 createobject 函數或 getobject 函數給

15、變量賦值新的 或已存在的 application 對象引用。 1.用 createobject 函數生成新的對象引用: set vbexcel=createobject (excel.application) 字符串excel.application是提供 excel 應用程序的編程 id,這個變量引用 excel 應用程序本身。 2. 用 getobject 函數打開已存在的對象引用: set appexcel=getobject(samp.xls) 上面語句打開文件 samp.xls。 一一 applicationapplication 對象常用的屬性、方法對象常用的屬性、方法 / 屬性屬

16、性描述描述 visible 屬性取 true 或 false,表明 excel 應用程序是否可見 left,top 屬性excel 窗口的位置 height,width 屬性excel 窗口的大小 windowstate 屬性 指定窗口的狀態,取:ximaximized(最大化)x1 minimized(最小化)x1 normal(缺省) quit 方法退出 microsoft excel calculate 方法重新計算所有打開的工作簿、工作表或單元格 evaluate 方法求值數學表達式并返回結果 示例 1: 求值數學表達式: dim vbexcel as object set vbexc

17、el=createobject (excel.application) x=vbexcel. evaluate (3+5*(cos (1/log (99. 9) 2.22.2 宏宏操作操作 2.2.12.2.1 宏的概念宏的概念 要使 access 2000 的眾多數據庫對象成為一個整體,以一個應用程序的面貌展示 給用戶,就必須借助于代碼類型的數據庫對象。宏對象便是此類數據庫對象中的一種。 宏對象是一個或多個宏操作的集合,其中的每一個宏操作執行特定的單一功能。 用戶可以將這些宏操作組織起來形成宏對象以執行特定的任務。 用戶主要是在進行事務性或重復性的操作的情況下使用宏,如打開和關閉窗體、 顯示

18、和隱藏工具欄或運行報表等。 所謂宏,就是一個 vba 模塊,這里所說的宏操作,就是一個工作表操作法的全過 程可通過自己編寫一段宏程序自動完成,結果相同,且精度能自動控制,而且這段程 序非常容易編寫,只要在工作表中操作時啟動“宏錄制”(擊“工具/宏/錄制新宏” , 再確認宏名和保存宏的位置,出現“停止錄制”確認工具框,為方便使用控制語句, 最好單擊其上的“相對引用”鈕,),當進行重復操作過程時即可停止宏錄制(當然也 可以錄制到操作結束),再用錄制宏同樣的方法打開宏代碼進行編輯,刪除多余的句, 將適當的重復操作語句放到循環體中即完成宏代碼編寫,方便得很。 2.2.22.2.2 宏可以實現的操作宏可

19、以實現的操作 一般來說,使用宏可以實現下列操作: 1創建全局賦值鍵(變量) 。 2在首次打開數據庫時,執行一個或一系列操作。 3建立自定義菜單欄。 4從工具欄上的按鈕執行自己的宏或者程序。 5可以使用宏把篩選程序加到各個記錄中,從而提高記錄查找的速度。 6使用宏可以隨時打開或者關閉數據庫對象。 7使用宏可以為窗體或者報表中的控制設置值,同時還可以模擬鍵盤動作,并把輸入 提供給對話框。 8.可以使用宏來顯示各種信息,并能夠使揚聲器發出報警聲,以引起用戶的注意。 9使用宏可以實現數據自動傳輸。可以自動地在各種數據格式之間引入或導出數據。 10可以使用宏移動 access 環境下的任何一個窗體,并能

20、夠改變它們的大小。 11使用宏可以啟動其他的應用程序,可以是 msdos 應用程序,也可以是 windows 應用程序。 12使用宏可以為窗體定制菜單,并可以讓用戶設計其中的內容。 2.32.3 插值多項式的簡介插值多項式的簡介 2.3.12.3.1 發展歷史發展歷史 在離散數據的基礎上補插連續函數,使得這條連續曲線通過全部給定的離散數據 點。插值是離散函數逼近的重要方法,利用它可通過函數在有限個點處的取值狀況, 估算出函數在其他點處的近似值。 早在 6 世紀,中國的劉焯已將等距二次插值用于天文計算。17 世紀之后,i.牛頓, j.-l.拉格朗日分別討論了等距和非等距的一般插值公式。在近代,插

21、值法仍然是數據 處理和編制函數表的常用工具,又是數值積分、數值微分、非線性方程求根和微分方 程數值解法的重要基礎,許多求解計算公式都是以插值為基礎導出的。 2.3.22.3.2 主主要要內內涵涵 插值問題的提法是:假定區間上的實值函數在該區間上個互不相同ba, xf1n 點處的值是,要求估算在中某點的值。其做法是: n xxx 10, n xfxf, 0 xfba, 在事先選定的一個由簡單函數構成的有個參數的函數類1n n ccc 10, 中求出滿足條件的函數,并以作為 n ccc, 10 nixfxp ii , 1 , 0 xp xp 的估值。此處稱為被插值函數,稱為插值結(節)點, xf

22、xf n xxx 10, 稱為插值函數類,上面等式稱為插值條件,中滿足上 n ccc, 10 n ccc, 10 式的函數稱為插值函數,稱為插值余項。當估算點屬于包含 xpxfxr 的最小閉區間時,相應的插值稱為內插,否則稱為外插。 n xxx 10, 2.3.32.3.3 基本類型基本類型 多項式插值多項式插值 這是最常見的一種函數插值。在一般插值問題中,若選取 為 n 次 多項式類,由插值條件可以唯一確定一個 n 次插值多項式滿足上述條件。從幾何上看 可以理解為:已知平面上 n1 個不同點,要尋找一條 n 次多項式曲線通過這些點。插 值多項式一般有兩種常見的表達形式,一個是拉格朗日插值多項

23、式,另一個是牛頓插 值多項式。 埃埃爾爾米米特特插插值值 對于函數 f(x),常常不僅知道它在一些點的 函數值,而且還 知道它在這些點的 導數值。這時的插值函數 p(x),自然不僅要求在這些點等于 f(x)的函數值,而且要求 p(x)的導數在這些點也等于 f(x)的導數值。這就是 埃爾米特插值問題,也稱帶導數的插值問題。從幾何上看,這種插值要尋求的多項 式曲線不僅要通過平面上的已知點組,而且在這些點(或者其中一部分)與原曲線 “密切”,即它們有相同的斜率。可見埃爾米特插值多項式比起一般多項式插值有 較高的光滑逼近要求。 分分段段插插值值與與樣樣條條插插值值 為了避免高次插值可能出現的大幅度波動

24、現象,在實際 應用中通常采用分段低次插值來提高近似程度,比如可用分段線性插值或分段三次 埃爾米特插值來逼近已知函數,但它們的總體光滑性較差。為了克服這一缺點,一 種全局化的分段插值方法 三次 樣條插值成為比較理想的工具。見 樣條插值。 三三角角函函數數插插值值 當被插函數是以 2 為周期的函數時,通常用 n 階三角多項式 作為插值函數,并通過 高斯三角插值表出。 插值(interpolation),有時也稱為 “重置樣本”,是在不生成 像素的情況 下增加圖像像素大小的一種方法,在周圍像素色彩的基礎上用數學公式計算丟失像 素的色彩。有些相機使用插值,人為地增加圖像的 分辨率。 道插值,還有 0.

25、618 法插值,三點二次插值和二點二次插值。 2.42.4 拉格朗日拉格朗日(lagrang)(lagrang)插值函數插值函數 2.4.12.4.1 lagranglagrang 插值基函數插值基函數 選取了作為插值空間的一組基函數。本節將引入該空間中令一組基 n xxx, 1 2 n p 函數 lagrang 插值基函數。 針對個互異的插值節點,夠照不超過 n 次的多項式 ,使之滿足插1n i x n i 0 xli 值條件 njixl ij ijijji , 2 , 1 , 0, 1 0 設 niiii xxxxxxxxxxcxl 1110 由得 1 ii xl niiiiiii i x

26、xxxxxxxxx c 1110 1 故 niiiiiii nii i xxxxxxxxxx xxxxxxxxxx xl 1110 1110 或 ini n niiiiiii nii i xxx x xxxxxxxxxx xxxxxxxxxx xl 1 1 1110 1110 其中 nn xxxxx 01 成為關于節點的 lagrang 插值基函數。 xlxlxl n , 10 n ii x 0 它們依賴于插值點 。 n ii x 0 并滿足: njixl ijji , 2 , 1 , 0, 2.4.22.4.2 lagranglagrang 插值公式插值公式 做 可以驗證滿足插值條件。稱之為

27、 lagrang 插值多項 n i iin xlxfxl 0 xln 式。 其誤差估計為 x n f xlxfxr n n nn1 1 !1 1.若被插值函數本身就是不超過 n 次的多項式,則有。 xfxln 2. 取,則。 故 n i i xl 0 1 1xf 0 1 n f 1111 10 xlxlxl n 拉格朗日插值公式是 i n i ii n i n j ji j n xfxlxf xx xx xr 100 其中 n j ji j i xx xx xl 0ni, 2 , 1 稱為插值基函數,求該多項式的關鍵是求 xli 。 3 3 基于基于 excelexcel vbavba 的的

28、lagranglagrang 插值插值的實現的實現 3.13.1 問題的提出問題的提出 已知函數 f(x)的插值條件為: i x 0.400.550.650.800.901.05 i x 0.410750.578150.696750.888111.026521.25382 求題中的拉格朗日擂值多項式,并求 f(0.596)的近似值。 xp5 3.23.2 插值在插值在 excelexcel 中的實現中的實現 將插值條件輸人 excel 工作表的區域 a2:b7 中(見表 1,當然也可以輸人在其它地 方),在 c3 中輸入公式“=(b3 一 b2)/(a3 一 a2)”即得差商,c4 中輸人 1

29、0,x xf “=(b4 一 b3)/(a4 一 a3)”又得到差商;至于二階差商,只要在 d4 中輸 21,x xf 人公式“=(c4-c3)/(a4 一 a2)”,立即可得到的值,其余各階差商的表 210 ,xxxf 上計算方法都是簡單的重復操作,表 1 只給出最終結果。 表 1 計算差商表 3.33.3 程序設計程序設計 編寫出計算 f(0.596)的宏 macro4 如下(題中要求的的表達式可根據該宏的運 xp5 行結果寫出,由于式子較長,這里就省略了。若對別的 x。值,只要將程序中語句 “w=0.596”改為“w=x0”就可計算出 f(x0)的值)。 sub macro4() dim

30、 x(5), y(5), l(5), t(5)定義 4 個數組 dim w, u, v, w1定義 4 個變量 for i = 0 to 5 x(i) = cells(i + 2, 1).value: y(i) = cells(i + 2, 2).value 將單元格 中的插值條件賦給數組 next i w = 0.596 for k = 0 to 5 u = 1 v = 1 for j = 0 to 5 if j = k then j = j + 1: if j = 6 then goto 2 u = u * (w - x(j): v = v * (x(k) - x(j) next j l(k) = u / v: cell

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論