




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
PAGEPAGE7《数值分析》实验报告姓名:学号:专业:年级:实验五一、实验名称方程求根二、实验目的与要求:通过对二分法和牛顿迭代法作编程练习和上机运算,进一步体会它们在方程求根中的不同特点;比较二者的计算速度和计算精度。三、实验内容:通过对二分法和牛顿迭代法作编程练习和上机运算,进一步体会它们在方程求根中的不同特点。(一)二分法算法:给定区间[a,b],并设与符号相反,取为根的容许误差,为的容许误差。(1)令c=(a+b)/2(2)如果(c-a)<或,则输出,结束;否则执行(3)(3)如果,则令;否则则令,重复(1),(2),(3)。(二)牛顿迭代法:给定初值,为根的容许误差,为的容许误差,N为迭代次数的容许值。(1)如果=0或迭代次数大于N,则算法失败,结束;否则执行(2)。(2)计算=-(3)若<或<,则输出,程序结束;否则执行(4)。(4)令=,转向(1)。四、实验题目:1、用二分法求方程f(x)=x^3+4*x*x-10在区间[1,1.5]上的根,要求求出具有3位有效数的近似根。2、用牛顿法求方程x^3-3x-1=0在x=2附近的根五、程序设计1、二分法#include<stdio.h>#include<math.h>doublef(doublex){returnx*x*x+4*x*x-10;}intmain(){doublea=0,b=0,e=0.0005;printf("输入ab:");scanf("%lf%lf",&a,&b);if(fabs(f(a))<=e){printf("结果为:%0.3f/n",a);}elseif(fabs(f(b))<=e){printf("结果为:%0.3f/n",b);}elseif(f(a)*f(b)>0){printf("f(%lf)*f(%lf)>0不是<=0!/n",a,b);}else{while(fabs(b-a)>e){doublec=(a+b)/2.0;if(f(a)*f(c)<0)b=c;elsea=c;}printf("结果为:%0.3f/n",(a+b)/2.0);}return0;}2、牛顿迭代法#include<stdio.h>#include<math.h>#defineF(x)x*x*x-3*x-1#defineK(x)3*x*x-3voidmain(){doublex1,x2,f,k;x1=2;f=F(x1);k=K(x1);x2=x1-f/k;while((x1-x2)>0.0005){x1=x2;f=F(x1);k=K(x1);x2=x1-f/k;}printf("x=%2.5f",x2);}六、计算结果1、二分法2、牛顿迭代法实验六一、实验名称线性方程组数值解法二、实验目的与要求:熟悉求解线性方程组的有关理论和方法;会编制列主元消去法、LU分解法、雅可比及高斯—塞德尔迭代法德程序;通过实际计算,进一步了解各种方法的优缺点,选择合适的数值方法。三、实验内容:会编制列主元消去法、LU分解法、雅可比及高斯—塞德尔迭代法德程序,进一步了解各种方法的优缺点。四、实验题目:1.用列主元消去法解方程组2.用LU分解法求解方程组Ax=bA=,b=3.用雅可比迭代法解方程组4.用高斯-塞尔德迭代法解方程组五、程序设计1、列主消元法解方程#include<stdio.h>#include<stdlib.h>#include<conio.h>#include<math.h>#definen3#defineprecision1e-16Staticdoubleaa[n][n+1]={{0.101,2.304,3.555,1.183},{-1.347,3.712,4.623,2.137},{-2.835,1.072,5.643,3.035}};intGaussh(doublea[][n+2],doublex[n+1]){inti,j,k,r;doublec;for(k=1;k<=n-1;k++){r=k;for(i=k;i<=n;i++)if(fabs(a[i][k])>fabs(a[r][k]))r=i;if(fabs(a[r][k])<precision){printf("\ndetA=0.Eliminationfaild!");exit(0);}if(r!=k){for(j=k;j<=n+1;j++){c=a[k][j];a[k][j]=a[r][j];a[r][j]=c;}}for(i=k+1;i<=n;i++){c=a[i][k]/a[k][k];for(j=k+1;j<=n+1;j++)a[i][j]=a[i][j]-c*a[k][j];}}if(fabs(a[n][n])<precision){printf("\ndetA=0.Algorithmfaild!");exit(0);}for(k=n;k>=1;k--){x[k]=a[k][n+1];for(j=k+1;j<=n;j++)x[k]=x[k]-a[k][j]*x[j];x[k]=x[k]/a[k][k];}return(1);}voidmain(){inti,j,det;doublea[n+1][n+2],x[n+1];for(i=1;i<=n;i++)for(j=1;j<=n+1;j++)a[i][j]=aa[i-1][j-1];det=Gauss(a,x);if(det!=0)for(i=1;i<=n;i++)printf("\nx[%d]=%f\n",i,x[i]);printf("\n");getch();}2、LU分解法#include<stdio.h>#include<math.h>#defineMAX_N20intmain(intargc,char*argv[]){intn;inti,j,k;staticdoublea[MAX_N][MAX_N],b[MAX_N],x[MAX_N],y[MAX_N];staticdoublel[MAX_N][MAX_N],u[MAX_N][MAX_N];printf("\n输入n的值:");scanf("%d",&n);if(n>MAX_N){printf("TheinputnislargerthanMAX_N,pleaseredefinetheMAX_N.\n");return1;}if(n<=0){printf("Pleaseinputanumberbetween1and%d.\n",MAX_N);return1;}printf("Nowinputthematrixa(i,j),i,j=0,1,2,%d:\n",n-1);for(i=0;i<n;i++)for(j=0;j<n;j++)scanf("%lf",&a[i][j]);printf("Nowinputthematrixb(i),i=0,1,2,%d:\n",n-1);for(i=0;i<n;i++)scanf("%lf",&b[i]);for(i=0;i<n;i++)u[i][i]=1;//for(k=0;k<n;k++){for(i=k;i<n;i++){l[i][k]=a[i][k];for(j=0;j<=k-1;j++)l[i][k]-=(l[i][j]*u[j][k]);}for(j=k+1;j<n;j++){u[k][j]=a[k][j];for(i=0;i<=k-1;i++)u[k][j]-=(l[k][i]*u[i][j]);u[k][j]/=l[k][k];}}for(i=0;i<n;i++){y[i]=b[i];for(j=0;j<=i-1;j++)y[i]-=(l[i][j]*y[j]);y[i]/=l[i][i];}for(i=n-1;i>=0;i--){x[i]=y[i];for(j=i+1;j<n;j++)x[i]-=(u[i][j]*x[j]);}printf("Solve...x_i=\n");for(i=0;i<n;i++)printf("%f\n",x[i]);return0;}3、雅克比迭代法#include"stdio.h"#include"math.h"#defineN3#defineM10voidmain(){ inti,j,k=1; floata[N][N],b[N],sum,x[N]; printf("请按行输入原增广矩阵:\n"); for(i=0;i<N;i++) { for(j=0;j<N;j++) scanf("%f",&a[i][j]); scanf("%f",&b[i]);}printf("你输入的增广矩阵为:\n");for(i=0;i<N;i++){for(j=0;j<N;j++)printf("%f",a[i][j]);printf("%f\n",b[i]);}for(i=0;i<N;i++)x[i]=0;while(k<=M){printf("第%d次迭代的结果为:\n",k++);for(i=0;i<N;i++){sum=0;for(j=0;j<N;j++)sum=sum+a[i][j]*x[j];x[i]=x[i]+(b[i]-sum)/a[i][i];printf("x(%d)=%f\n",i+1,x[i]);}printf("\n");}}4、高斯——塞尔德迭代法#include<stdio.h>intmain(){doublex[3]={0,0,0};doublea[3][3]={8,-3,2,4,11,-1,6,3,12};doubley[3]={20,33,36};doubled[3][3],g[3];intround=10,i,j;for(i=0;i<3;++i){g[i]=y[i]/a[i][i];for(j=0;j<3;++j){d[i]
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2024-2025学年高中化学 第2章 化学反应速率和化学平衡 第一节 化学反应速率教学设计 新人教版选修4
- 17古诗三首《望天门山》教学设计-2024-2025学年统编版语文三年级上册
- 夫妻有孩分居协议书8篇
- 2017秋人教版八年级生物上册第五单元第5章同步教学设计:5.5病毒
- 《森吉德玛》(教学设计)-2024-2025学年三年级上册人音版(2012)音乐
- 《第一单元 欣赏 丰收欢乐而归》(教案)-2023-2024学年人教版音乐四年级上册
- 9 正确认识广告 教学设计-2024-2025学年道德与法治四年级上册统编版
- 2024-2025学年高中数学 第一章 三角函数 1.2.1 任意角的三角函数(5)教学教学设计 新人教A版必修4
- Chapter 3 When our grandparents were young(教学设计)-2024-2025学年新思维小学英语4A
- 2023七年级英语下册 Module 11 Body language Unit 1 They touch noses第2课时教学设计 (新版)外研版
- 网络安全法律知识培训
- 依奇珠单抗注射液-药品解读
- 电子表格表格会计记账凭证模板
- 《“健康中国2030”规划纲要》全文健康中国2030规划纲要全文
- 工艺变更通知单
- 中国传统节日介绍-课件
- 部编人教版五年级下册语文 第9课 古诗三首教学反思
- GB/T 29118-2023节约型机关评价导则
- 肌少症的诊断评估与治疗专家共识(2023年版)
- 军人个人自传5000字
- 龙虎山正一日诵早晚课
评论
0/150
提交评论