资源描述:
《数值计算方法实验程序源代码》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、上机实验1.秦九韶算法:编程求多项式P(x)=(((0.0625x+0.0425)x+1.912)x+2.1296在x=1.0处的值。#include"stdio.h"main(){staticfloata[]={2.1296,1.912,0.0425,0.0625};floaty;inti;floatx=1.0;clrscr();y=a[3];for(i=2;i>=0;i--)y=y*x+a[i];printf("x=%4.2f,y=%6.4f",x,y);}2.二分法:方程f(x)=x3-x-1=0,利用逐步搜索法确定一
2、个有根区间。#include"stdio.h"#include"math.h"#definef(x)(x*(x*x-1)-1)#definee0.005main(){inti=0;floatx,a=1,b=1.5,y=f(a);if(y*f(b)>=0){printf("Therangeiserror!");return;}elsedo{x=(a+b)/2;printf("x%d=%6.4f",i,x);i++;if(f(x)==0)break;if(y*f(x)<0)b=x;elsea=x;}while(fabs(
3、b-a)>e);printf("x=%4.2f",x);}#include"stdio.h"#include"math.h"#definef(x)((x*x-1)*x-1)main(){inti;floatx,a=1,b=1.5,y=f(a);if(y*f(b)>=0){printf("Therangeiserror!");return;}elsefor(i=0;i<=6;i++)/*次数限制结束*/{x=(a+b)/2;printf("x%d=%6.4f",i,x);if(f(x)==0)break;if(y*
4、f(x)<0)b=x;elsea=x;}printf("x=%4.2f",x);}3.迭代法:(1)求方程f(x)=x-10x+2=0的一个根#include"stdio.h"#include"math.h"main(){floatx0,x1=1;inti=1;do{x0=x1;x1=log10(x0+2);printf("x%d=%6.4f",i,x1);i++;}while(fabs(x1-x0)>=0.00005);printf("x=%6.4f",x1);printf("f(x)=%6.4f",fab
5、s(x1-pow(10,x1)+2));}(2)求方程x=e-x在0.5附近的根。#include"stdio.h"#include"math.h"main(){floatx0,x1=0.5;inti=1;do{x0=x1;x1=exp(-x0);printf("x%d=%7.5f",i,x1);i++;}while(fabs(x1-x0)>0.001);printf("x=%5.3f",x1);}4.牛顿迭代法:(1)求方程x=e-x在0.5附近的根。#include"stdio.h"#include"math.h
6、"main(){floatx0,x1=0.5;inti=0;printf("x%d=%7.5f",i,x1);i++;do{x0=x1;x1=x0-(x0-exp(-x0))/(1+x0);printf("x%d=%7.5f",i,x1);i++;}while(fabs(x1-x0)>=0.001);printf("x=%5.3f",x1);}(2)求方程f(x)=x3-2x2-4x-7=0在[3,4]中的根的近似值,精度要求为ε=10-2。#include"stdio.h"#include"math.h"mai
7、n(){floatx0,x1=4;inti=0;printf("x%d=%5.3f",i,x1);i++;do{x0=x1;x1=x0-((((x0-2)*x0-4)*x0)-7)/((3*x0-4)*x0-4);printf("x%d=%5.3f",i,x1);i++;}while(fabs(x1-x0)>=0.01);printf("x=%4.2f",x1);}(3)计算的值。#include"stdio.h"#include"math.h"main(){floatx0,x1=11;do{x0=x1;x1=x
8、0-(x0*x0-115)/(2*x0);}while(fabs(x1-x0)>=0.005);printf("x=%5.2f",x1);}1.列主元消去法:求解线性方程组:0.01x1+2x2-0.5x3=-5-x1-0.5x2+2x3=55x1-4x2+0.5x3=9#include"