版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、 數(shù)值計(jì)算方法課程設(shè)計(jì)姓名 學(xué)號(hào) 班級(jí) 實(shí)驗(yàn)要求1 應(yīng)用自己熟悉的算法語(yǔ)言編寫(xiě)程序,使之盡可能具有通用性。2 上機(jī)前充分準(zhǔn)備,復(fù)習(xí)有關(guān)算法,寫(xiě)出計(jì)算步驟,反復(fù)檢查,調(diào)試程序。(注:在練習(xí)本上寫(xiě),不上交)3 完成計(jì)算后寫(xiě)出實(shí)驗(yàn)報(bào)告,內(nèi)容包括:所用的算法語(yǔ)言,CPU時(shí)間,算法步驟敘述,變量說(shuō)明,程序清單,輸出計(jì)算結(jié)果,結(jié)構(gòu)分析和小結(jié)等。(注:具體題目具體分析,并不是所有的題目的實(shí)驗(yàn)報(bào)告都包含上述內(nèi)容!)4 至少需要選擇5道必做題目。其余的也可以選擇,如果多選,可酌情加分!5 獨(dú)立完成,如有雷同,一律判為零分!6 上機(jī)期間不允許做其他任何與課程設(shè)計(jì)無(wú)關(guān)的事情,否則被發(fā)現(xiàn)一次扣10分,被發(fā)現(xiàn)三次判為零
2、分!上機(jī)實(shí)習(xí)題目1 編寫(xiě)秦九韶算法程序,并用該程序計(jì)算多項(xiàng)式在的值。public class Qinjiushao public double result; public double x=-2;/定義一個(gè)未知數(shù)x public double b; public double c; public int i; public String abc; public void calculate() / abc=x5+3*x3-2*x+6;多項(xiàng)式,可以截取字符串獲取系數(shù) double a=2,0,-3,3,-4;/多項(xiàng)式的系數(shù) double b=new doublea.length; double
3、 c=new doubleb.length; for(i=0;ia.length;i+) if(i=0) ci=bi=ai; else bi=bi-1*x+ai; ci=ci-1*x+bi-1*x+ai; int j=a.length-1; System.out.println(結(jié)果值為:f(+x+)=+ca.length-2); public static void main(String agrs) Qinjiushao qjs=new Qinjiushao(); qjs.calculate(); /JFrame jframe=new JFrame(); /jframe.setTitle(
4、求結(jié)果); /jframe.setSize(400,400); /jframe.setVisible(true); 2 用選列主元高斯消去法解線性方程組#include#include#define N 4 void maxij(double (*table)N+1,int m);void zeros(double (*table)N+1,int m);double solution(double (*table)N+1,double *A,int n);main() double tableNN+1=-3,-1,0,0,1,-1,2,-1,0,0,0,-1,2,-1,0,0,-1,2,0;
5、double AN; int i,j,m,n; for(m=0;m=0;n-) if(tablenn!=0) An=solution(table,A,n); else An=0; for(i=0;in;p-) sum+=tablenp*Ap; result=(tablenN-sum)/tablenn; return result;void zeros(double (*table)N+1,int m) double zeroing; int i,j; for(i=m+1;iN;i+) if(tableim!=0) zeroing=-1*tableim/tablemm; tableim=0; f
6、or(j=m+1;j=N;j+) tableij+=tablemj*zeroing; void maxij(double (*table)N+1,int m) double exchange; int i,j,line=m; for(i=m;iN;i+) if(abs(tablelinem)abs(tableim) line=i; for(i=m;i=N;i+) exchange=tablemi; tablemi=tablelinei; tablelinei=exchange; 運(yùn)行結(jié)果:x1=-0.266667,x2=-0.2,x3=-0.133333,x4=-0.06666673 分別用平
7、方根法和改進(jìn)平方根法解線性方程組平方根法解線性方程組Axb#includemath.h #includestdio.hmain() int i,j,k; int n=3; float m,a33,b3,x3,l33,y3; printf(input matrix numbers of a:n); for(i=0;in;i+) for(j=0;jn;j+) scanf(%f,&aij); printf(n); printf(input numbers of b:n); for(i=0;in;i+) scanf(%f,&bi); printf(n); l00=sqrt(a00); for(i=1;
8、in;i+) li0=ai0/l00; l0i=li0; for(j=1;jn;j+) m=0.0; for(k=0;kj;k+) m+=ljk*ljk; ljj=sqrt(ajj-m); for(i=j+1;in;i+) m=0.0; for(k=0;kj;k+) m+=lik*ljk; lij=(aij-m)/ljj; lji=lij; y0=b0/l00; for(i=1;in;i+) m=0.0; for(k=0;k=0;i-) m=0.0; for(k=i+1;kn;k+) m+=lki*xk; xi=(yi-m)/lii; for(i=0;in;i+) printf(x(%d)=%
9、fn,i,xi); 結(jié)果用C語(yǔ)言實(shí)現(xiàn)改進(jìn)平方根法, 程序代碼如下:#include stdlib.h#include stdio.h#include conio.h#include string.h#include math.h#define N 100float Table(int n,float aNN,float bN) int i,j;printf(Please input the matrix A by row!n);for(i=0;in;i+)printf(Row %d:,i);for(j=0;jn;j+)scanf(%f,&aij);printf(Please input the
10、 array b:);for(i=0;in;i+)scanf(%f,&bi); printf(nThe matrix A and array b:n);for(i=0;in;i+)for(j=0;jn;j+)printf(%10.4f,aij); printf(%10.4f,bi); printf(n);return 0;float decomposition(int n,float aNN,float lNN,float dNN) int i,j,k;float tNN,tmp1,tmp2; for(i=0;in;i+) for(j=0;jn;j+) if(i!=j) dij=0; if(i
11、j) tij=0; lij=0; if(i=j) lij=1; d00=a00; for(i=1;in;i+) for(j=0;ji;j+) tmp1=0; for(k=0;kj;k+) tmp1+=tik*ljk; tij=aij-tmp1; lij=tij/djj; tmp2=0; for(k=0;ki;k+) tmp2+=tik*lik; dii=aii-tmp2; printf(nAfter Cholesky triangular decomposition, the matrix L:n);for(i=0;in;i+) for(j=0;j=i;j+) printf(%8.4f,lij
12、); if(i=j) printf(n);printf(nAnd the matrix D:n); for(i=0;in;i+)for(j=0;j=i;j+) if(i!=j) for(k=0;k8;k+) printf( ); if(i=j) printf(%8.4fn,dij);return 0;float solve(int n,float lNN,float dNN,float bN) int i,j,k;float yN,xN,tmp1,tmp2;y0=b0; for(i=1;in;i+) tmp1=0; for(k=0;ki;k+) tmp1+=lik*yk; yi=bi-tmp1
13、; 4考慮階三對(duì)角方程組 ,(1) 用選列主元高斯消去法求解,(2) 編寫(xiě)追趕法程序并求解,#include#includeint n;float *a,*b,*c,*d,*p,*q,*x;void print1() printf(設(shè)3對(duì)角方程組的形式如下:n); printf(b1*x1+c1*x2=d1n); printf(a2*x1+b2*x2+c2*x3=d2n); printf(ta3*x2+b3*x3+c3*x4=d3n); printf(tt.n); printf(ttt.n); printf(ttttan-1*xn-2+bn-1*xn-1+cn-1*xn=dn-1n); pri
14、ntf(tttttan*xn-1+bn*xn=dnn);void get_array() a=(float *)malloc(n+1)*sizeof(float); b=(float *)malloc(n+1)*sizeof(float); c=(float *)malloc(n+1)*sizeof(float); d=(float *)malloc(n+1)*sizeof(float); q=(float *)malloc(n+1)*sizeof(float); p=(float *)malloc(n+1)*sizeof(float); x=(float *)malloc(n+1)*size
15、of(float);void get_num() int i; printf(請(qǐng)輸入系數(shù)a2-a%dn,n); for(i=2;i=n;i+) scanf(%f,&ai); a1=0; printf(請(qǐng)輸入系數(shù)b1-b%dn,n); for(i=1;i=n;i+) scanf(%f,&bi); printf(請(qǐng)輸入系數(shù)c1-c%dn,n-1); for(i=1;i=n-1;i+) scanf(%f,&ci); printf(請(qǐng)輸入系數(shù)d1-d%dn,n); for(i=1;i=n;i+) scanf(%f,&di);void work() int i=0,k; float t; a1=cn=0
16、; p1=d1/b1; q1=c1/b1; /初始化 for(k=2;k=1;k-) xk=pk-qk*xk+1; /回代求解int main() /freopen(in.txt,r,stdin); int i=0; print1(); printf(請(qǐng)輸入方程階數(shù)n); scanf(%d,&n); get_array(); get_num(); work(); for(i=1;i0&x*x=1) result=x*Math.log(Math.sqrt(x*x-1)+x)-Math.sqrt(x*x-1)-0.5*x; else System.out.println(您輸入的值不合法); re
17、turn result; public void judge() Erfenfa eff=new Erfenfa(); double c=eff.getResult(a); double d=eff.getResult(b); i+; if(i=5) if(c*d0)b=(a+b)/2;judge();elsea=(a+b)/2;judge(); else System.out.println(不合法,請(qǐng)重新取值); /* public int getlenth(double e)/此方法用來(lái)判斷精度 Double dd=new Double(e); String s=dd.toString(
18、).substring(dd.toString().indexOf(.)+1); int length=s.length(); return length; */ public static void main(String args) Erfenfa eff=new Erfenfa(); eff.judge();Newton迭代法x=6;y=5;while abs(y-x)=0.0001x=(y*log(y2-1)1/2+y)-(y2-1)1/2)/0.5; y=x;endxx=6;y=2;while abs(y-x)=0.0001x=(y*log(y2-1)1/2+y)-(y2-1)1/2
19、)/0.5; y=x;endxx=6;y=0;while abs(y-x)=0.0001x=(y*log(y2-1)1/2+y)-(y2-1)1/2)/0.5; y=x;endxx=2;y=-3;while abs(y-x)=0.0001x=(y*log(y2-1)1/2+y)-(y2-1)1/2)/0.5; y=x;endxx = 4.3321x = 2.0111x = 1x = -8elapsed_time = 0.17206求解下列非線性方程組在原點(diǎn)附近的根:Matlab首先建立一個(gè)m文件 我取的名字叫 syfs0000function y=syfs0000(x)y=9*x(1)2+36
20、*x(2)2+4*x(3)2-36;x(1)2-2*x(2)2-20*x(3);16*x(1)-x(1)3-2*x(2)2-16*x(3)2;end然后在command window輸入fsolve(syfs0000,0 0 0)得到ans=0.1342 0.9972 -0.09857分別寫(xiě)出解線性方程組收斂的Jacobi迭代格式,Gauss-Seidel迭代格式,SOR迭代格式。收斂的Jacobi迭代格式#include#includeint main(void) double A33 = 5,2,1, -1,4,2, 2,-3,10 ; double b3 = -12,20,3; doub
21、le x3 = 0; /第k+1次迭代的結(jié)果 double xx3 = 0; /第k次迭代的結(jié)果 int size = 3; int Max = 43; /最大迭代次數(shù) double residual = 0.0; / double sum = 0.0; double dis = 0.0; double dif = 1.0; /相鄰迭代的結(jié)果差 double eps = 1.0e-3; /迭代精度 for(int k=1;(keps);k+) dif = 0.0; printf(n第%d次迭代的結(jié)果:n,k); for(int i=0;isize;i+) for(int j=0;jsize;j
22、+) if(i!=j) sum +=Aij*xxj; xi = (bi-sum)/Aii; sum = 0.0; residual=0.0; /計(jì)算相鄰迭代的結(jié)果差 for(int m=0;mresidual) residual=dis; dif=residual; /打印第k次的結(jié)果 for(i=0;isize;i+) printf(%12.8f ,xi); xxi=xi; printf(n與上次計(jì)算結(jié)果的距離(2范數(shù)):%12.8f n,dif); printf(n迭代計(jì)算的結(jié)果為:n); for(k=0;k=tol x0=x; x=G*x0+d1; n=n+1;endn然后在matlab
23、命令主窗口輸入A=5,2,1;-1,4,2;2,-3,10;b=-12,20,3;x= Gauss_seidel (A,b)得n =11x =-4.00000013381170 2.99999992601601 2.00000000456714SOR迭代格式%-逐次超松弛迭代法-%-successive over-reaxation iteration methodclear;clc;A=5,2,1;-1,4,2;2,-3,10;b=-12,20,3;N=length(b); %解向量的維數(shù)fprintf(庫(kù)函數(shù)計(jì)算結(jié)果:);x=inv(A)*b %庫(kù)函數(shù)計(jì)算結(jié)果x=zeros(N,1);%迭
24、代初始值%-(A=D-E-F)-D=diag(diag(A);E=-tril(A,-1);%下三角F=-triu(A,1);%上三角w=1.1; %松弛因子,一般0w2B=inv(D-w*E)*(1-w)*D+w*F;g=w*inv(D-w*E)*b;eps=0.00001;%相鄰解的距離小于該數(shù)時(shí),結(jié)束迭代%-開(kāi)始迭代-for k=1:43最大迭代次數(shù)為43 fprintf(第%d次迭代:,k); y=B*x+g; if abs(x-y)eps break; end x=yendx運(yùn)行得 結(jié)果為x = -4.00000000000000 3.00000000000000 2.000000000000008用Romberg積分計(jì)算積分時(shí),要求結(jié)果的誤差限為。#includestdlib.h#includemath.h#includeiostreamusing namespace std;double function( double x)return x=0?1:sin(x)/x;int print_romberg(double a,double b,double e) int k=1; double h=b-a; dou
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 二零二五年度演員參與電視劇集合同
- 二零二五年度財(cái)務(wù)審核合同中的財(cái)務(wù)報(bào)告編制規(guī)范
- 2025年度浙江民營(yíng)企業(yè)勞動(dòng)合同模板
- 2025年度船舶租賃與海上風(fēng)電項(xiàng)目合同
- 2025年度飯店與旅游紀(jì)念品產(chǎn)業(yè)股權(quán)合作合同
- 幼兒水粉基礎(chǔ)知識(shí)
- 建筑結(jié)構(gòu)質(zhì)量預(yù)防措施
- 心臟衰竭治療技術(shù)
- 2025旅游合作開(kāi)發(fā)合同范本
- 少先隊(duì)員演講稿
- 商業(yè)計(jì)劃書(shū)(BP)財(cái)務(wù)計(jì)劃風(fēng)險(xiǎn)控制資本退出與附錄的撰寫(xiě)秘籍
- 二級(jí)綜合醫(yī)院評(píng)審標(biāo)準(zhǔn)實(shí)施細(xì)則
- 新大《新疆地質(zhì)概論》教案第6章 礦產(chǎn)資源
- EGD殺生劑劑化學(xué)品安全技術(shù)說(shuō)明(MSDS)zj
- GB/T 12229-2005通用閥門(mén)碳素鋼鑄件技術(shù)條件
- 超分子化學(xué)-第三章 陰離子的絡(luò)合主體
- 控制變量法教學(xué)課件
- 血壓計(jì)保養(yǎng)記錄表
- 食品的售后服務(wù)承諾書(shū)范本范文(通用3篇)
- 初中中考英語(yǔ)總復(fù)習(xí)《代詞動(dòng)詞連詞數(shù)詞》思維導(dǎo)圖
- 植物和五行關(guān)系解說(shuō)
評(píng)論
0/150
提交評(píng)論