太原理工大学数值计算实验报告材料_第1页
太原理工大学数值计算实验报告材料_第2页
太原理工大学数值计算实验报告材料_第3页
已阅读5页,还剩19页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、丟农衣寿TAIWAN UNIVERSITV OF TECHNOLOGY本科实验报告课程名称:计算机数值方法实验项目:方程求根,线性方程组的直接求解,线性方程组的迭代求解,代数插值和最小二乘法拟合实验地点:软件楼208专业班级:学号:学生姓名:指导教师: 李志崔冬华2015年6月5 日学生姓名实验成绩实验名称实验一方程求根实验内容和要求(必填)目的:数值计算方法是一门实践性和实用性都很强的课程,学习的目的在于应用已有的理论基础和技术方法,实现对实际计算问题的计算机求解。本实验配合计算数值方法课堂教学,通过上机实践实验环节,巩固课堂和书本上所学的知识、力口强实践能力、提高解决实际计算问题的水平、启

2、发创新思想。其基本目的是:(1) 培养理论联系实际的思路,训练综合运用已经学过的理论和实际知识去分析 和解决实际问题的能力。(2) 帮助学生全面消化已学的相关课程内容,深刻理解计算数值方法课程的内涵,培养使用电子计算机进行科学计算和解决问题的能力。(3) 进行基本技能训练和巩固。使学生得到选择算法、编写程序、分析数值结果、写数值试验报告、课堂讨论等环节的综合训练。要求:(1)应用结构化程序设计编出通用程序,源程序要有详细的注释和说明;(2)比较计算结果,分析数值解误差的原因;(3)实验完成,要求提交实验结果并写出报告,分析计算结果是否符合问题的要求,找出计算成功的原因或计算失败的教训。实验原理

3、(必填)选择上述方法中的两种方法求方程:f(x)=x 3+4x2-10=0在1,2内的一个实根,且要求满足精度|x*-xn|<0.5 X10"5主要仪器设备笔记本计算机 实验记录(写出实验内容中的程序代码和运行结果)(可分栏或加页)迭代法:#in elude "stdafx.h"#i nclude"stdio.h"#i nclude"math.h"#i nclude"iostream" using n amespace std; float mai n()float a;cin> >a;

4、float t, x;x=a;dox=sqrt(10-x*x*x)/4);t=a;a=x;while(fabs(a-t)>0.5*1e-5); prin tf("x=%f",a); system("pause");割线法:#i nclude"stdafx.h"#i nclude"stdio.h"#i nclude"math.h"#i nclude"iostream"using namespace std;floatmai n()float c,a=1.0,b=2.0;c

5、in> >a>>b;while c=b-(b*b*b+4*b*b-10)*(b-a)/(b*b*b+4*b*b-(a*a*a+4*a*a);if(fabs(b-c)<0.5*0.000001)break ;b=c;cout«c;实验结果和分析实验结果:迭代法:- "EfW 匚* 4- 3KlaDebu g33Jd.exe'x=i.3&5231请按任意键继绩-割线法:'E: C - -S D ? BlIB eie"1.2&G23Pres5 風ny ke y to continue|_| J| 厶一心得体会

6、(遇到的问题和解决方法)使用不同的方法,可以不同程度的求得方程的解,不同的方法速度不同实验名称实验二线性方程组的直接求解实验内容和要求(1) 了解线性方程组常见的直接解法,如Guass消元法、LU分解法、追赶法。(2)加深对线性方程组求解方法的认识,掌握算法。(3 )会进行误差分析,并能对不同方法进行比较。LU分解法或追赶法求解下列方程组:合理利用实验原理123冷14012X28241X3130.3 101559.1431X159.175.2916.13012X246.7811.2952X3112 11X424215X1287210X274836X371261120X4321X17121X25

7、(n=5,10,100121Xn 1512Xn5Gauss消元法、1 、2、3、4、,)主要仪器设备台式或笔记本计算机实验记录(写出实验内容中的程序代码和运行结果)(可分栏或加页)Gauss消元法:#i nclude "stdafx.h"#include "stdio.h"#include "iostream"using namespacestd;float main() float a34=1,2,3,14,0,1,2,8,2,4,1,13;float x3;float sum=0;int k,i,j;for (k=0;k<2

8、;k+)for (i=k+1;i<3;i+)for (j=k+1;j<4;j+)aij=aij-aik/akk*akj;for (i=0;i<3;i+)for (j=0;j<4;j+)printf( "a%d%d=%f,",i,j,aij);cout<<e ndl;x2=a23/a22;for (k=1;k>=0;k-) sum=0;for (j=k+1;j<3;j+)sum+=akj*xj;xk=(ak3-sum)/akk;for (i=0;i<3;i+)printf ( "x%d=%f,",i+1

9、,xi);LU分解法:#i nclude"stdafx.h"#i nclude<stdio.h>#i nclude<math.h>#defi neL 30double a L L , b L , l L L , u L L , x L , y L ; int mai n()int n, i, j, k, r;scanf( "%d" , &n );for ( i = 1; i <= n; +i ) for ( j = 1; j <= n; +j ) scanf( "%lf" , &a

10、i j );for ( i = 1; i <= n; +i ) scanf( "%lf" , &b i );for ( i = 1; i <= n; +i )for ( j = 1; j <= n; +j )l i j =0;u i j = 0.0;for ( k = 1; k <= n; +k) for ( j = k; j <= n; +j )u k j = a k j ;for ( r = 1; r < k; +r )u k j -= l k r * u r j ;for ( i = k + 1; i <= n; +i

11、 ) l i k = a i k ;for ( r = 1; r < k; +r ) l i k -= l i r * u r k ;l i k /= u k k ;l k k = 1.0;for ( i = 1; i <= n; +i ) y i = b i ;for ( j = 1; j < i; +j) y i -= l i j * y j ;for ( i = n; i > 0; -i ) x i = y i ;for ( j = i + 1; j <= n; +j ) x i -= u i j * x j ;x i /= u i i ;for ( i =

12、 1; i <= n; +i ) printf( "%0.2lfn" , x i );return 0;追赶法:#i nclude "stdafx.h"#i nclude "stdio.h"void mai n()FILE *f;double a15,b15,c15,d15;double t;int i,n;f=fope n("zgf.txt","r");fsca nf(f,"%d",&n);fsca nf(f,"%lf%lf%lf",&am

13、p;b1,&c1, &d1);for(i=2;i<=n _1;i+)fsca nf(f,"%lf%lf%lf%lf",&ai, &bi,&ci, &di);fscan f(f,"%lf%lf%lf", &a n,&b n, &dn); fclose(f);c1=c1/b1;d1=d1/b1;for(i=2;i<=n _1;i+)t=bi-ci-1*ai;ci=ci/t;di=(di-di-1*ai)/t;dn =(d n-d n-1*a n)/(b n-c n-1*a n

14、);for(i=n-1;i>=1;i-) di=di-ci*di+1;prin tf("n*for(i=1;i<=n ;i+)prin tf("d%2d=%lfn",i,di);Zgf.txt文件中的内容是:52 1-71 2 1-51 2 1-51 2 1 -51 2 -5实验结果和分析Gauss消元法:<i0(e-1.000S09CBl J-Z.000O00D1 2)-3.0800000 )-14, irn=i .0Rf)RnarAn 1"】-2.。口胴恥*初1 n3i=H.B030n«rair0i=2.ftH»

15、PflRr2in1 =0. BINKWe ,a2215.000801 E21E3115.00BBM,xtl 1=1 *000080,xf2 J =2,00060x01=3.000000,Press any key to continue E;VC>+邀值 D e b u g35dS 心才44 2 158 7 2 104 8 3 &12 6 11 23卜2 -7 -7 -31.60kl.001-0S-1 .00Press any kev to continueD:' Microsoft Visull StudioMyFrojectshhiDebug' 5hlzhi.

16、e)ce'dl 1J4.166667dr 21=1.333333d 3=-3.5B00B9d 410.666667 d 5=-2-833333Pi*«ss antj key to &&ntinue心得体会(遇到的问题和解决方法)在调试过程中发现自己还是很粗心,容易犯简单错误,在今后应该多编写程序。实验名称实验三线性方程组的迭代求解实验内容和要求学习使用雅可比迭代法或高斯-赛德尔迭代法实验原理10xix2 2x3 7.2x-i 10x2 2x38.3x-ix2 5x3 4.2主要仪器设备台式或笔记本计算机实验记录(写出实验内容中的程序代码和运行结果)(可分栏或加

17、页)咼斯-赛德尔迭代法:#include "stdafx.h"#include "stdio.h"#include "math.h"void main()float a【3【3=10,-1,-2,-1,10,-2,-1,-1,5,b【3=7.2,8.3,4.2;float x3=0,0,0,sum1,sum2;int i,j,k,n=3;for (k=0;k<10;k+)for(i=0;i<n;i+)sum1=0;sum2=0;for(j=0;j<i;j+)sum1= sum1+aij*xj; for(j=i+1;j

18、<3;j+)sum2=sum2+aij*xj;xi=(bi-sum1-sum2)/aii;for(i=0;i<n;i+) printf("x%d=%f,",i+1,xi);printf("n");雅克比迭代:#include "stdafx.h"#include <stdio.h>#include <math.h>void main()float a【3【3=10,-1,-2,-1,10,-2,-1,-1,5,b【3=7.2,8.3,4.2; float x3=0,0,0,sum1;int i,j,

19、k,n=3;for (k=0;k<10;k+)for (i=0;i<3;i+)sum1=0;for (j=0;j<n;j+) if (i=j) continue ;sum仁 sum1+aij*xj;xi=(bi-sum1)/aii;for (i=0;i<n;i+) printf( "x%d=%f,",i+1,xi);printf( "n");实验结果和分析结果:高斯-赛德尔迭代法:P: Microsoft Visual Sludic'1- MyProject&sh jzhiDebugshuzhi.exe1 J=0.

20、723000, 菱-03盹込 lx 3 J =0. 808 800. 11=0/729800. c2 =0.308080.XE1J=0.720900. >c 2 J =0. 900080 , x31=H.030900«1J=0.720000, x2=0.900900.k11=0.720000, x2=0.800000.<31-0.000300.Kll=0.729080, k21=0.000080. k3-0.000000.x11-0.720000, L2 J =0.B0HB03, L21=0.O0300B. Ll =0.720080. L:2 1-0.000300. L3

21、 J =0. 800903j. L11=0.720000,雅克比迭代: E:VC4- *shozh iDebu gVshuzhLe xeb<El J=C.720000,x2 l=3.?020aOF3=l -l&440Qr 卜【1 】=!043080.x 12 】=1 >16718S,xL3 21 282B54. Ltll =1.093130,xL2J=l.195724,x31=1.297771, xtl =1.09126,x21=1.1994&7,xC31=1-299719, xll 1=1 -099890, m 2 1=1 .19?933,xC31=l_2999&

22、amp;5, xl=l.OT998&,x2J=1.19?9?2.x3J=1.29999G. xfl-l.099998>xC2J=1.1999?.xE31-1.299999, 敦【1 =1-100000,x2J=l. 200000,st31=l_3B0000, xtl J=11=1 _2U9Baa,xl:31=l-380M0B,xti=i. i 陋何思邑,m 21=1.2 aaaas fkL3j=i - 3 丽呂叫 Tress any <ey to continue分析:使用高斯-赛德尔和雅克比迭代都可以求出方程组的解,但是利用高斯-赛德尔迭代法所需的迭代次数比雅克比迭代少,

23、能够更早的达到精度要求。心得体会(遇到的问题和解决方法)高斯迭代法比雅克比迭代迭代速度快,所以在编程时选择了高斯迭代法nLn(x)yolo(x) yih(x)yJn(x)yih(x)i 0主要仪器设备台式或笔记本计算机实验记录(写出实验内容中的程序代码和运行结果)(可分栏或加页)#in clude<stdio.h>#i nclude<stdlib.h>#in clude<iostream.h>typedef struct datafloat x;float y;Data;Data d20;float f(int s,i nt t)if(t=s+1)retur

24、n (dt.y-ds.y)/(dt.x-ds.x);elsereturn (f(s+1,t)-f(s,t-1)/(dt.x-ds.x);float Newt on( float x,i nt count)int n;while(1)coutvv"请输入n值(即n次插值):"cin>>n;if(n<=cou nt-1)break;elsesystem("cls");float t=1.0;float y=d0.y;float yt=0.0;for(i nt j=1;j<=n ;j+)t=(x-dj-1.x)*t;yt=f(0,j)*

25、t;y=y+yt;return y;float lagra nge(float x,i nt count)float y=0.0;for(i nt k=0;k<co un t;k+)float p=1.0;for(i nt j=0;j<co un t;j+)if(k=j)c on ti nue;p=p*(x-dj.x)/(dk.x-dj.x);y=y+p*dk.y;return y;void mai n()float x,y;int count;while(1)cout«"请输入xi,yi的组数,不得超过20组:"cin> >co unt;if(cou nt<=20)break;system("cls"

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论