![太原理工計算機(jī)數(shù)值方法實驗報告_第1頁](http://file4.renrendoc.com/view/7aacfe6ceaa945927a651a6d189039b9/7aacfe6ceaa945927a651a6d189039b91.gif)
![太原理工計算機(jī)數(shù)值方法實驗報告_第2頁](http://file4.renrendoc.com/view/7aacfe6ceaa945927a651a6d189039b9/7aacfe6ceaa945927a651a6d189039b92.gif)
![太原理工計算機(jī)數(shù)值方法實驗報告_第3頁](http://file4.renrendoc.com/view/7aacfe6ceaa945927a651a6d189039b9/7aacfe6ceaa945927a651a6d189039b93.gif)
![太原理工計算機(jī)數(shù)值方法實驗報告_第4頁](http://file4.renrendoc.com/view/7aacfe6ceaa945927a651a6d189039b9/7aacfe6ceaa945927a651a6d189039b94.gif)
![太原理工計算機(jī)數(shù)值方法實驗報告_第5頁](http://file4.renrendoc.com/view/7aacfe6ceaa945927a651a6d189039b9/7aacfe6ceaa945927a651a6d189039b95.gif)
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、本科實驗報告課程名稱: 計算機(jī)數(shù)值方法 實驗項目:1方程求根 2線性方程組的直接解法 3線性方程組的迭代解法 4代數(shù)插值和最小二乘擬合多項式實驗地點(diǎn): 專業(yè)班級: 學(xué)號: 學(xué)生姓名: 指導(dǎo)教師: 2015年 6 月 3 日學(xué)生姓名實驗成績實驗名稱 實驗一 方程求根實驗內(nèi)容和要求熟悉使用二分法、迭代法、牛頓法、割線法等方法對給定的方程進(jìn)行根的求解。選擇上述方法中的兩種方法求方程:f(x)=x3+4x2-10=0在1,2內(nèi)的一個實根,且要求滿足精度|x*-xn10-5實驗原理使用二分法,首先判斷是否滿足精度,然后找到區(qū)間中點(diǎn),將其值代入方程與左右端點(diǎn)值相乘判斷正負(fù),根據(jù)情況替換掉左端點(diǎn)或右端點(diǎn),直
2、到滿足要求。使用牛頓法,根據(jù)書上公式進(jìn)行循環(huán)迭代,誤差為迭代前后值得差,最終給出結(jié)果。主要儀器設(shè)備筆記本計算機(jī)實驗記錄實驗數(shù)據(jù)記錄和處理;package 實驗1;public class Twoswift static double f(double x)return x*x*x+4*x*x-10;public static void main(String args)double a=1,b=2,c=1.5;for(;)if(b-a)/2=0.000005)if(f(a)*f(c)=0)break;else if(f(a)*f(c)0) /替換左端點(diǎn)a=c;c=(a+b)/2;else br
3、eak;System.out.println(a=+a+b=+b+二分結(jié)果為+c+誤差=+(b-a)/2);開始a=0,b=1,c=1for?f(a)*f(c)=0?f(a)*f(c)0?breakc=(a+b)/2結(jié)束package 實驗2方法2;public class Niunun public static void main(String args)double a=0,b=1.5,c = 1;while00005)a=b-(b*b*b+4*b*b-10)/(3*b*b+8*b);c=Math.abs(a-b); /誤差記錄點(diǎn)b=a;System.out.println(二分結(jié)果為+
4、a+誤差=+c);開始a=0,b=1.5 c=100005a=b-(b*b*b+4*b*b-10)/(3*b*b+8*b)c=Math.abs(a-b)b=a結(jié)束實驗結(jié)果和分析方法1:方法2: 根據(jù)誤差大小來看,方法二的誤差更小,但是方法二要求利用公式,方法一則直接可以對數(shù)字進(jìn)行操作,更加簡潔易懂。心得體會 在二分法中,只需要搞清楚和判斷的條件,就能輕松寫出程序,在牛頓法中,我則先手算出函數(shù)的一階導(dǎo)數(shù),然后利用公式進(jìn)行計算,實驗較為簡單易懂,但是要注意誤差的判定,即循環(huán)跳出的條件。實驗名稱 實驗二 線性方程組的直接求解實驗內(nèi)容和要求利用Gauss消元法求解下列方程組:實驗原理根據(jù)書上的高斯消元
5、法的公司把方程按行按列處理,將方程組依次消元,得出上三角矩陣,隨后經(jīng)過回代,則可以得出答案。主要儀器設(shè)備臺式或筆記本計算機(jī)實驗記錄(寫出實驗內(nèi)容中的程序代碼和運(yùn)行結(jié)果)(可分欄或加頁)package 實驗2高斯消元法;import ;import ; import java.util.Scanner;public class Gauss public static void Gauss1(double a)double b=new double3;double s;int i,j,k;for(k=0;k3;k+) /i代表行for(i=k;i=0;j-)ai+1j=ai+1j-akj*ai+1
6、k/akk; /將矩陣化簡為三角矩陣System.out.println(上三角矩陣為:);for(i=0;i3;i+)for(j=0;j=0;i-) s=0; for(j=2;ji;j-) s=aij*bj+s; /把計算出來的值累加 bi=(ai3-s)/aii; for(i=0;i3;i+) System.out.println(x(+(i+1)+)=+bi); public static void main(String args)Scanner sc=new Scanner(System.in); double a=new double34;int i,j;System.out.pr
7、intln(輸入系數(shù)及常數(shù)項矩陣:);for(i=0;i3;i+)for(j=0;j=3;j+)aij=sc.nextInt();Gauss1(a);實驗結(jié)果和分析 此方程組適合用高斯消元法進(jìn)行求解,要根據(jù)不同的方程組選用不同的方式才能使計算簡化。心得體會(遇到的問題和解決方法) 編寫過程中難點(diǎn)主要在于求上三角矩陣和回代求解,尤其是對循環(huán)語句出口條件的建立,多一個或少一個都有可能造成錯誤,同時要利用好公式進(jìn)行計算,記錄回代過程中的x值。實驗名稱 實驗三 線性方程組的迭代求解實驗內(nèi)容和要求使用雅可比迭代法或高斯-賽德爾迭代法對下列方程組進(jìn)行求解。實驗原理高斯-賽德爾迭代法,利用給定的初值通過多次
8、迭代代入來逼近真實值主要儀器設(shè)備臺式或筆記本計算機(jī)實驗記錄(寫出實驗內(nèi)容中的程序代碼和運(yùn)行結(jié)果)(可分欄或加頁)package 實驗3高斯賽德爾迭代法;import java.util.Scanner;public class GussSder public static void main(String args)Scanner sc=new Scanner(System.in); double a=new double34;/方程組 double b=new double3; /近似解 double c=new double3; /c為記錄前一次的結(jié)果 double s; int i,j;
9、 System.out.println(輸入系數(shù)及常熟項矩陣:); for(i=0;i3;i+)for(j=0;j=3;j+)aij=sc.nextDouble(); System.out.println(輸入解的初值:); for(i=0;i3;i+) bi=sc.nextInt(); System.out.println(迭代過程如下:); do for(i=0;i3;i+) ci=bi; /記錄前一次結(jié)果 for(i=0;i3;i+) s=0; for(j=0;j3;j+) if(i!=j) s=s+aij*bj; /計算除了當(dāng)前x值以外的值 bi=(ai3-s)/aii; /替代原有x
10、值 for(j=0;j0.00005&Math.abs(c1-b1)0.00005&Math.abs(c2-b2)0.00005);實驗結(jié)果和分析 雅克比迭代法計算完成一組才會改變x的值,然后代入計算下一組,隨后得出結(jié)論,而高斯賽德爾迭代法則完成一次計算就改變x的值,速度更快,但是有時候會造成函數(shù)的發(fā)散。心得體會 用高斯賽德爾迭代法相較于雅克比迭代法在編程上可省略一些步驟,比如計算一次以后的值直接更新,而不用記錄一組數(shù)字以后再更新使用,編寫起來容易。同時程序中利用dowhile循環(huán)首先將數(shù)組b里的值填滿,省的賦予初值。實驗名稱 實驗四 代數(shù)插值和最小二乘法擬合實驗內(nèi)容和要求給定數(shù)據(jù)點(diǎn)(xi ,
11、yi)如下:xi0yi1(1) 使用拉格朗日插值法或牛頓插值法, 求f(0.856)的近似值.(2) 用最小二乘法擬合數(shù)據(jù)的(n次)多項式,求f(0.856)的近似值.(3) 對比、分析上兩結(jié)果。實驗原理拉格朗日插值法:根據(jù)輸入的點(diǎn)確定多個基函數(shù),再利用基函數(shù)確定所要求的值。最小二乘法擬合:根據(jù)給定點(diǎn),確定建立正規(guī)方程組: (xij+k)ak=xij (yi ,j=0,1,n) ,解方程組得到擬合多項式。主要儀器設(shè)備臺式或筆記本計算機(jī)實驗記錄(寫出實驗內(nèi)容中的程序代碼和運(yùn)行結(jié)果)(可分欄或加頁)package 實驗4代數(shù)插值;import java.util.Scanner;public cl
12、ass Dscz public static final int N=7;public static void main(String args)Scanner sc=new Scanner(System.in);int i,j;double x=new doubleN; /x值 double y=new doubleN; /y值 double lx=new doubleN; /基函數(shù) double Xi,Lx; /Xi為給定值,Lx為對應(yīng)結(jié)果 System.out.println(輸入(x,f(x):); for(i=0;iN;i+) /輸入給定點(diǎn) xi=sc.nextDouble(); y
13、i=sc.nextDouble(); System.out.println(輸入要求的Xi:); Xi=sc.nextDouble(); System.out.println(輸出每個基函數(shù)的值:); for(i=0;iN;i+) /求基函數(shù) lxi=1; /設(shè)定初值無意義 for(j=0;jN;j+) if(xi-xj!=0) lxi=(Xi-xj)/(xi-xj)*lxi;/跳過相差為0的值 System.out.println(lx+i+=+lxi); Lx=0; for(i=0;iN;i+) /求y*lx的值 Lx=yi*lxi+Lx; System.out.println(結(jié)果為:+
14、Lx);package 實驗4最小二乘法擬合;import java.util.Scanner;public class Min public static final int N=7;public static final int M=3;public static void Gauss1(double a,double b)/用高斯消元法解方程double s;int i,j,k;for(k=0;kM;k+)for(i=k;i=0;j-)ai+1j=ai+1j-akj*ai+1k/akk;System.out.println(上三角矩陣為:);for(i=0;iM;i+)for(j=0;j
15、=0;i-) s=0; for(j=M-1;ji;j-) s=aij*bj+s; bi=(ai3-s)/aii; for(i=0;iM;i+) System.out.println(x(+(i+1)+)=+bi); public static void main(String args)double b=new doubleM;Scanner sc=new Scanner(System.in); double a=new doubleMM+1; double x=new doubleN; double y=new doubleN;int i,j,k,l;double t;System.out.
16、println(輸入(x,f(x):);for(i=0;iN;i+) /輸入給定點(diǎn) xi=sc.nextDouble(); yi=sc.nextDouble(); for(i=0;iM;i+) /*計算正規(guī)方程組*/ for(j=0;j=M;j+) if(jM) /計算x的值 aij=0; for(l=0;lN;l+) t=1; for(k=0;kj+i;k+)/根據(jù)i和j的值確定x的次數(shù) t=t*xl; aij=aij+t;/改變系數(shù)矩陣的值 if(j=M) /計算y的值 aij=0; for(l=0;lN;l+) t=yl; for(k=0;ki;k+)/根據(jù)i和j的值確定y乘x的幾次 t=t*xl; aij=aij+t;/改變右邊結(jié)果的值 System.out.println(輸出正規(guī)矩陣:); for(i=0;iM;i+) /*輸出正規(guī)系數(shù)常數(shù)項矩陣*/ for(j=0;j=M;j+) System.out.print(aij+ ); System.out.println(); Gauss1(a,b); System.out.println(輸出擬合曲線方程
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 分析倉庫管理中的常見問題計劃
- 秋季文史課程教學(xué)計劃
- 提升教學(xué)質(zhì)量計劃
- 安全生產(chǎn)與健康管理方案計劃
- 樹立良好的生活部形象方針計劃
- 2025年陶瓷生產(chǎn)加工機(jī)械項目合作計劃書
- 美術(shù)教師職業(yè)素養(yǎng)提升計劃
- 從數(shù)據(jù)中尋找倉儲優(yōu)化機(jī)會的總結(jié)計劃
- 財務(wù)合規(guī)性的強(qiáng)化措施計劃
- 可行性研究與市場定位計劃
- 綠色工廠評價指標(biāo)及評分標(biāo)準(zhǔn)
- 高一必修二英語測試題
- 甲型流感患者的護(hù)理查房
- 禮儀概述和原則
- 裝飾施工圖設(shè)計深度
- 100以內(nèi)的加減法練習(xí)1000題(可直接打印)
- 技術(shù)人員能力評價表
- 體育賽事招商方案
- 西師版三年級下冊第六單元第1課時旋轉(zhuǎn)與平移市公共課一等獎市賽課金獎?wù)n件
- 我是家務(wù)小能手(課堂PPT)
- 英語學(xué)術(shù)論文寫作引言
評論
0/150
提交評論