![數(shù)值計算方法課程設計123[沐風文苑]_第1頁](http://file2.renrendoc.com/fileroot_temp3/2021-6/22/6a0b7331-f6a8-4b91-8044-09a2453d1a13/6a0b7331-f6a8-4b91-8044-09a2453d1a131.gif)
![數(shù)值計算方法課程設計123[沐風文苑]_第2頁](http://file2.renrendoc.com/fileroot_temp3/2021-6/22/6a0b7331-f6a8-4b91-8044-09a2453d1a13/6a0b7331-f6a8-4b91-8044-09a2453d1a132.gif)
![數(shù)值計算方法課程設計123[沐風文苑]_第3頁](http://file2.renrendoc.com/fileroot_temp3/2021-6/22/6a0b7331-f6a8-4b91-8044-09a2453d1a13/6a0b7331-f6a8-4b91-8044-09a2453d1a133.gif)
![數(shù)值計算方法課程設計123[沐風文苑]_第4頁](http://file2.renrendoc.com/fileroot_temp3/2021-6/22/6a0b7331-f6a8-4b91-8044-09a2453d1a13/6a0b7331-f6a8-4b91-8044-09a2453d1a134.gif)
版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領
文檔簡介
1、 數(shù)值計算方法課程設計姓名 學號 班級 實驗要求1 應用自己熟悉的算法語言編寫程序,使之盡可能具有通用性。2 上機前充分準備,復習有關算法,寫出計算步驟,反復檢查,調試程序。(注:在練習本上寫,不上交)3 完成計算后寫出實驗報告,內(nèi)容包括:所用的算法語言,CPU時間,算法步驟敘述,變量說明,程序清單,輸出計算結果,結構分析和小結等。(注:具體題目具體分析,并不是所有的題目的實驗報告都包含上述內(nèi)容?。? 至少需要選擇5道必做題目。其余的也可以選擇,如果多選,可酌情加分!5 獨立完成,如有雷同,一律判為零分!6 上機期間不允許做其他任何與課程設計無關的事情,否則被發(fā)現(xiàn)一次扣10分,被發(fā)現(xiàn)三次判為零
2、分!上機實習題目1 編寫秦九韶算法程序,并用該程序計算多項式在的值。public class Qinjiushao public double result; public double x=-2;/定義一個未知數(shù)x public double b; public double c; public int i; public String abc; public void calculate() / abc=x5+3*x3-2*x+6;多項式,可以截取字符串獲取系數(shù) double a=2,0,-3,3,-4;/多項式的系數(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(結果值為:f(+x+)=+ca.length-2); public static void main(String agrs) Qinjiushao qjs=new Qinjiushao(); qjs.calculate(); /JFrame jframe=new JFrame(); /jframe.setTitle(
4、求結果); /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; 運行結果:x1=-0.266667,x2=-0.2,x3=-0.133333,x4=-0.06666673 分別用平
7、方根法和改進平方根法解線性方程組平方根法解線性方程組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); 結果用C語言實現(xià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考慮階三對角方程組 ,(1) 用選列主元高斯消去法求解,(2) 編寫追趕法程序并求解,#include#includeint n;float *a,*b,*c,*d,*p,*q,*x;void print1() printf(設3對角方程組的形式如下: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(請輸入系數(shù)a2-a%dn,n); for(i=2;i=n;i+) scanf(%f,&ai); a1=0; printf(請輸入系數(shù)b1-b%dn,n); for(i=1;i=n;i+) scanf(%f,&bi); printf(請輸入系數(shù)c1-c%dn,n-1); for(i=1;i=n-1;i+) scanf(%f,&ci); printf(請輸入系數(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(請輸入方程階數(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(不合法,請重新取值); /* public int getlenth(double e)/此方法用來判斷精度 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求解下列非線性方程組在原點附近的根:Matlab首先建立一個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分別寫出解線性方程組收斂的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次迭代的結果 double xx3 = 0; /第k次迭代的結果 int size = 3; int Max = 43; /最大迭代次數(shù) double residual = 0.0; / double sum = 0.0; double dis = 0.0; double dif = 1.0; /相鄰迭代的結果差 double eps = 1.0e-3; /迭代精度 for(int k=1;(keps);k+) dif = 0.0; printf(n第%d次迭代的結果: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; /計算相鄰迭代的結果差 for(int m=0;mresidual) residual=dis; dif=residual; /打印第k次的結果 for(i=0;isize;i+) printf(%12.8f ,xi); xxi=xi; printf(n與上次計算結果的距離(2范數(shù)):%12.8f n,dif); printf(n迭代計算的結果為: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(庫函數(shù)計算結果:);x=inv(A)*b %庫函數(shù)計算結果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ù)時,結束迭代%-開始迭代-for k=1:43最大迭代次數(shù)為43 fprintf(第%d次迭代:,k); y=B*x+g; if abs(x-y)eps break; end x=yendx運行得 結果為x = -4.00000000000000 3.00000000000000 2.000000000000008用Romberg積分計算積分時,要求結果的誤差限為。#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. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 五年級上數(shù)學教案-三角形的面積練習課-蘇教版秋
- 三年級上冊數(shù)學教案-1.1 估算兩、三位數(shù)乘一位數(shù)丨蘇教版
- 學習2025年雷鋒精神六十二周年主題活動實施方案 (3份)-76
- 蘇教版數(shù)學三年級上冊單元測試卷-第四單元-兩、三位數(shù)除以一位數(shù)含答案
- 人教版三年級英語上冊期末測試卷
- 2025年河南省安全員《A證》考試題庫及答案
- 2025遼寧省安全員知識題庫
- 醫(yī)院鋼結構居間合同范本
- 2025年度城市綜合體車位租賃合同
- 2025年度股權質押合同工商局備案及企業(yè)環(huán)境管理體系認證服務協(xié)議
- 《高性能樹脂》課件
- 中央2024年中央宣傳部直屬單位招聘106人筆試歷年典型考題及考點附答案解析
- 《烹飪美學》課件-項目二 烹飪色彩
- DZ∕T 0372-2021 固體礦產(chǎn)選冶試驗樣品配制規(guī)范(正式版)
- DZ∕T 0227-2010 地質巖心鉆探規(guī)程(正式版)
- 細菌的分離培養(yǎng)與培養(yǎng)特性觀察課件講解
- 2024年江西省南昌市南昌縣中考物理模擬試卷
- 國家電網(wǎng)公司輸變電工程工藝標準庫變電工程部分
- 農(nóng)貿(mào)市場消防整改報告
- 海上風電場工程結構安全監(jiān)測建設規(guī)范
- 三會一課培訓
評論
0/150
提交評論