欢迎来到天天文库
浏览记录
ID:14167595
大小:152.00 KB
页数:8页
时间:2018-07-26
《数值计算方法实验》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、1.已知√(100)=10,√(121)=11,√(144)=12,用拉格朗日插值法求√(115)。C语言代码如下/*Note:YourchoiceisCIDE*/#include"stdio.h"#defineN3voidmain(){doublex[N]={100,121,144};doubley[N]={10,11,12};doubles,t,y1=0,x1=115.0;intj,k;for(k=0;k2、=s*t;}printf("每一项的插值是:%lf",t);y1=y1+t*y[k];}printf("y的值是:%f",y1);}然后得到即√(115)≈10.7227562.用迭代法求x^3-x-1=0的一正根。迭代方程:x[k+1]=(xk+1)^(1/3)C语言代码如下:/*Note:YourchoiceisCIDE*/#include"stdio.h"#include"math.h"voidmain(){doublex,x1;x=1.5;do{x1=x;x=pow((x1+1),1.0/3);}while(fabs(x-x1)>1e-9)3、;printf("x=%4.5f",x);}即x=1.324723.用牛顿迭代法求((2x-4)x+3)x-6=0,x0=1.5C语言代码如下/*Note:YourchoiceisCIDE*/#include"stdio.h"#include"math.h"voidmain(){floatx1,x0,f,f1;x1=1.5;do{x0=x1;f=((2*x0-4)*x0+3)*x0-6;f1=(6*x0-8)*x0+3;x1=x0-f/f1;}while(fabs(x1-x0)>=1e-5);printf("x=%8.7f",x1);}输出结果即x的取4、值为24.用二分法求f(x)=x^3-3x^2+3x-2的根。可以算出f’=3x^2-6x+3=3(x-1)^2即f(x)单调,即有一个根C语言代码如下/*Note:YourchoiceisCIDE*/#include"stdio.h"#include"math.h"#definef(x)(x*x*x-3*x*x+3*x-2)voidmain(){doublea=-10,b=10,c,eps=1e-5;inti=0;if(f(a)*f(b)>0){printf("请重新输入a和b的值");}while((b-a)>eps){i++;c=(a+b)/2;5、if(f(c)==0)break;elseif(f(a)*f(c)<0)b=c;elsea=c;}printf("二分次数为%d",i);printf("root=%f",c);}输出结果它的根准确为2相对跟为1.9999985.用高斯消去法解决方程组10x1-7x2+0x3=7的值。5x1-x2+5x3=6-3x1+2x2+6x3=4C语言编程如下:/*Note:YourchoiceisCIDE*/#include"stdio.h"#defineN3voidmain(){floata[N][N];floatb[N];floats,akk,ai6、k;intk,i,j;printf("请输入原始增广矩阵(按行输入):");for(i=0;i7、k;}b[k]=b[k]/akk;for(i=k+1;i=0;i--){s=0.0;for(j=2;j>i;j--)s=s+a[i][j]*b[j];b[i]=b[i8、]-s;}for(i=0;i
2、=s*t;}printf("每一项的插值是:%lf",t);y1=y1+t*y[k];}printf("y的值是:%f",y1);}然后得到即√(115)≈10.7227562.用迭代法求x^3-x-1=0的一正根。迭代方程:x[k+1]=(xk+1)^(1/3)C语言代码如下:/*Note:YourchoiceisCIDE*/#include"stdio.h"#include"math.h"voidmain(){doublex,x1;x=1.5;do{x1=x;x=pow((x1+1),1.0/3);}while(fabs(x-x1)>1e-9)
3、;printf("x=%4.5f",x);}即x=1.324723.用牛顿迭代法求((2x-4)x+3)x-6=0,x0=1.5C语言代码如下/*Note:YourchoiceisCIDE*/#include"stdio.h"#include"math.h"voidmain(){floatx1,x0,f,f1;x1=1.5;do{x0=x1;f=((2*x0-4)*x0+3)*x0-6;f1=(6*x0-8)*x0+3;x1=x0-f/f1;}while(fabs(x1-x0)>=1e-5);printf("x=%8.7f",x1);}输出结果即x的取
4、值为24.用二分法求f(x)=x^3-3x^2+3x-2的根。可以算出f’=3x^2-6x+3=3(x-1)^2即f(x)单调,即有一个根C语言代码如下/*Note:YourchoiceisCIDE*/#include"stdio.h"#include"math.h"#definef(x)(x*x*x-3*x*x+3*x-2)voidmain(){doublea=-10,b=10,c,eps=1e-5;inti=0;if(f(a)*f(b)>0){printf("请重新输入a和b的值");}while((b-a)>eps){i++;c=(a+b)/2;
5、if(f(c)==0)break;elseif(f(a)*f(c)<0)b=c;elsea=c;}printf("二分次数为%d",i);printf("root=%f",c);}输出结果它的根准确为2相对跟为1.9999985.用高斯消去法解决方程组10x1-7x2+0x3=7的值。5x1-x2+5x3=6-3x1+2x2+6x3=4C语言编程如下:/*Note:YourchoiceisCIDE*/#include"stdio.h"#defineN3voidmain(){floata[N][N];floatb[N];floats,akk,ai
6、k;intk,i,j;printf("请输入原始增广矩阵(按行输入):");for(i=0;i7、k;}b[k]=b[k]/akk;for(i=k+1;i=0;i--){s=0.0;for(j=2;j>i;j--)s=s+a[i][j]*b[j];b[i]=b[i8、]-s;}for(i=0;i
7、k;}b[k]=b[k]/akk;for(i=k+1;i=0;i--){s=0.0;for(j=2;j>i;j--)s=s+a[i][j]*b[j];b[i]=b[i
8、]-s;}for(i=0;i
此文档下载收益归作者所有