


版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、中北大学理学院实验报告实验课程:数值分析专业:信息与计算科学班 级: 10070241学号:18姓 名:付强中北大学理学院实验一函数差值方法【实验目的】运用数值分析方法及相应的数学软件、函数差值方法解决函数的近似求【实验内容】对于给定的一元函数y=f(x)的n+1个节点值 = f(x)(j=0, 1,n)试用拉格朗日公式求其差值多项式或分段二次拉格朗日插值多项式 数据如下:X0.40.550.650.800.951.05y0.410750.578150.696750.901.001.25382球五次拉格朗日插值多项式L5(x)或分段三次插值多形式,并计算f( 0.596),(的值。(提示:结果
2、为 f (0.596)0.625732, f(0.99)1.05423)【实验所使用的仪器设备与软件平台】电脑、VC+6.0.【实验方法与步骤】首先,在理论层面上了结各种插值法的优缺点,理解各种方法的插值原理 实验一,采取的是拉格朗日插值法,基本公式如下:nLn(X)八 yJk(X)k=0其中,L(X- X。)(X- Xk 1)(X- Xk 1).(X- Xn)区 - X。)(Xk - X-i)(Xk - Xk J区 - Xn)因此,实现此公式的关键步骤在于用 C语言循环语句,实现此差值公式,然后运 用数组输入具体实验数字,求的所需要的结果。实验C语言代码如下:#in elude <ma
3、th.h>#in elude <stdio.h>#i nclude <stdlib.h>#in elude<malloe.h>float lag(i ntn float*X,float *y,float t)i nt i,j;float p,s,la;p=1;la=0;for(i=0;i< n;i+)for(j=0;j< n;j+)if(j!=i) p=p*(t-*(x+j)/(*(x+i)-*(x+j);s=*(y+i)*p;p=i;la=la+s;return(la);void mai n() int m,n ,k,i;float *x
4、,*y,la,t;printf("请输入给定点的数量n");scan f("%d",&n);x=(float*)ealloe( n, sizeof(fl oat);if(x=NULL)printf("内存分配失败");exit(1);y=(float*)ealloe( n,sizeof(fl oat);if(y=NULL)printf("内存分配失败");exit(1);x0=0.4;x1=0.55;x2=0.65 ;x3=0.80;x4=0.95;x5=1.05;y0=0.41075;y1=0.57815
5、;y2=0.69675;y3=0.90;y4=1.00;y5=1.25382;for(i=0;i< n;i+) printf("x%d=%f",i,*(x+i);prin tf("y%d=%fn",i,*(y+i);for(i=0;i+)printf(" 请输入t的值(退出则 输入0)");sea nf("%f", &t);if(t=0)printf("确认退出请输入0,计算f(0)请按输入任意数字值");scan f("%d",&m);if(m=0)b
6、reak;prin tf("请输入需要使用的点的个数");scan f("%d",&k);la=lag(k,x,y,t);printf("插值结果是:n");prin tf("f(%f)=%fn",t,la);free(x);free(y);【实验结果】【结果分析与讨论】实验结果与实验内容中的提示结果完全一样,甚至比实验提示中所给出的精度都要高。实验二正交多项式与曲线拟合【实验目的】用最小二乘法进行曲线拟合,并比较曲线拟合效果,探索拟合曲线的选择与 拟合精度间的关系。【实验内容】1、编写出legendre
7、Chebyshev多项式的程序;2、从随机的数据中找出其规律性,给出其近似表达式的问题,在生产实践和科学实验中大量存在,通常利用数据的最小二乘法求得拟合曲线。在某冶炼过程中,根据统计数据的含碳量与时间关系, 试求含碳量y与时间t的拟合曲线(t分)0510152025303540455055y(x10>)01.22.12.83.43.84.14.34.54.54.04.676647571824011111111111次拟合,代码如下:a=a+*(x+i); b=a*a/n; return(b);/两数先相乘,再相加floatdcj(i ntn float*x,float *y)i nt i
8、;float a;a=0;for(i=0;i< n;i+)a+=(*(x+i)*(*(y+i);return(a);/两数先相加,再相乘floatdjc(i ntn float*x,float *y)i nt i;float a=0,b=0;for(i=0;i< n;i+) a=a+*(x+i); b=b+*(y+i);a=a*b/n;return(a);/系数afloat xsa(i ntn, float*x,float *y)float a,b,c,d,e;a=spfh( n, x);【实验所使用的仪器设备与软件平台】电脑、VC+6.0.、matlab【实验方法与步骤】一、按照
9、题目要求,首先对数据进行-#in elude <math.h>#i nclude <stdio.h>#i nclude <stdlib.h>#i nclude<malloc.h>float average© nt n float *x)int i;float av;av=0;for(i=0;i <n ;i+) av+=*(x+i); av=av/ n;return(av);/平方和float spfh(i nt n float *x)int i;float a,b;a=0;for(i=0;i <n ;i+)a+=(*(x+i
10、)*(*(x+i);return(a);/和平方float shpf(i nt n float *x)int i;float a,b;a=0;for(i=0;i <n ;i+)b=shpf(n,x); c=dcj(n,x,y); d=djc(n,x,y); e=(c-d)/(a-b);/printf("%f %f %f %f",a,b,c,d); return(e);float he(int n,float *y)int i;float a;a=0;for(i=0;i<n;i+) a=a+*(y+i); return(a);float xsb(int n,flo
11、at *x,float*y,float a) float b,c,d; b=he(n,y); c=he(n,x); d=(b-a*c)/n; return(d);int main() int n,i;float *x,*y,a,b;printf(" 请输入将要输入的有效数值 组数 n 的值 :");二、经过 matlab 进行曲线拟合可知,该组数据近似的服从 对所给数据进行 3 次最小二乘法拟合,代码如下:scanf("%d",&n); x=(float*)calloc(n,sizeof(float) #include <stdio.h&g
12、t;#include <conio.h> #include <math.h>#include <process.h> #define N 12/N 个点 #define T 3 /T 次拟合 #define W 1/ 权函数 #define PRECISION 0.00001 float pow_n(float a,int n) int i;if(n=0); if(x=NULL) printf(" 内存分配失败 "); exit(1); y=(float*)calloc(n,sizeof(float) );if(y=NULL) print
13、f(" 内存分配失败 "); exit(1); printf(" 请输入 x 的值 n"); for(i=0;i<n;i+)scanf("%f",x+i); printf(" 请输入 y 的值 , 请注意与 x 的 值一一对应 :n"); for(i=0;i<n;i+)scanf("%f",y+i); for(i=0;i<n;i+) printf("x%d=%3.2f ",i,*(x+i);printf("y%d=%3.2fn",i,*(
14、y+i)J a=xsa(n,x,y); b=xsb(n,x,y,a);printf(" 经最小二乘法拟合得到的一 元线性方程为 :n");printf("f(x)=%3.2fx+%3.2fn",a,b );3 次曲线,因此下面return(1); float res=a; for(i=1;i<n;i+) res*=a; return(res); void mutiple(float aN,float bT+1,float cT+1) float res=0;int i,j,k;for(i=0;i<T+1;i+) for(j=0;j<T+
15、1;j+)res=0;for(k=0;k<N;k+) res+=aik*bkj; cij=res;void matrix_trans(float aT+1,float bN)int i,j; for(i=0;i<N;i+)for(j=0;j<T+1;j+)bji=aij;void init(float x_y2,int n)int i;printf(" 请输入c个已知点:n",N);for(i=0;i<n;i+)printf("(x%d y%d):",i,i);scanf("%f %f",&x_yi0,
16、&x_yi 1);voidget_A(floatmatrix_AT+1,float x_y2,int n)int i,j; for(i=0;i<N;i+)for(j=0;j<T+1;j+)matrix_Aij=W*pow_n(x_yi0,j);voidprint_array(floatarrayT+1,int n)int i,j; for(i=0;i<n;i+)for(j=0;j<T+1;j+)printf("%-g",arrayij);printf("n");voidconvert(floatarguT+2,int n)
17、int i,j,k,p,t; float rate,temp; for(i=1;i<n;i+)for(j=i;j<n;j+)if(argui-1i-1=0)for(p=i;p<n;p+)if(argupi-1!=0) break;if(p=n)printf(" 方程组无解 !n"); exit(0);for(t=0;t<n+1;t+) temp=argui-1t; argui-1t=argupt; argupt=temp;rate=arguji-1/argui-1i-1Jfor(k=i-1;k<n+1;k+)argujk-=argui-1k*r
18、ate; if(fabs(argujk)<=PRECISION) argujk=0;void compute(floatarguT+2,int n,float root)int i,j;float temp;for(i=n-1;i>=0;i-)temp=arguin;for(j=n-1;j>i;j-)temp-=arguij*rootj;rooti=temp/arguii;void get_y(floattrans_AN,float x_y2,floaty,int n)int i,j;float temp;for(i=0;i<n;i+)temp=0;for(j=0;j&
19、lt;N;j+)temp+=trans_Aij*x_yj1;yi=temp;void cons_formula(float coef_AT+1,float y,float coef_formT+2)int i,j;for(i=0;i<T+1;i+)for(j=0;j<T+2;j+)if(j=T+1)coef_formij=yi;elsecoef_formij=coef_Aij;void print_root(float a,int n)int i,j;printf("%d个点的加拟合的多项式系数为 :n",N,T);for(i=0;i<n;i+)print
20、f("a%d=%g,",i+1,ai);printf("n");printf(" 拟 合 曲 线 方 程 为:ny(x)=%g",aO);for(i=1;i<n;i+)printf(" + %g",ai);for(j=O;j<i;j+)printf("*X");printf("n");void process()floatx_yN2,matrix_ANT+1,trans_AT+1N,coef_AT+1T+1,coef _formuT+1T+2,yT+1,aT+1;
21、ini t(x_y,N); get_A(matrix_A,x_y,N); printf("矩阵 A 为:n"); prin t_array(matrix_A,N); matrix_tra ns(matrix_A,tra ns_A); mutiple(tra ns_A,matrix_A,coef_A)Jprintf("法矩阵为:n");prin t_array(coef_A,T+1); get_y(tra ns_A,x_y,y,T+1);con s_formula(coef_A,y,coef_formu);con vert(coef_formu,T+1);
22、compute(coef_formu,T+1,a);prin t_root(a,T+1); _void mai n()process();【实验结果】貢"taclient DProgra> Files (86) WC6. 0CoBKonISDev98BinDebugty j1Kx?4.58<xl0 yl0>:50 402<xll yll>:55 4.64柜隔为:100015251251101031000115225337512040080001S02500125000駐矩阵險33012E505445002.49S38e+0075445002.49838e
23、+0071.1933te+0095.85932:e+01M显个点的救拟合的多项式系数为,Ml 1=0-<1178575, a L2=0.263394,ar3j-=-0.00521534,ar4=3.43615e-005 働合曲线方程为:kf<xi=0_01?85?5 + 0.263394«X + -0.00521534*X«X 十 3.43615e-005*X*X*X Press an i/ key to cont inue Results【结果分析与讨论】对一次拟合做matlab检验,结果如下:Linear model Polyl fix) = pl*x *
24、>2Csiffieits (vi th 951 tHtfidtnu bounls) pl -0.07276 (O.G4SB9, 0.09963p2 -1.322 (O.Wlj 2.194)o£ £ 11.55E: 5. IS9R-squar*: 0.7845AdjuEted R._siiTLBrE 0.763W; 0. 7211可从图像得一次拟合是错误的,于是进行三次拟合,结果如下:ResultsLir.ar uoiel f aly3:f U) -+ 崗F2 + p3*x + p4C»Eficjtnti bilh B5I cufi dunce bra&
25、;dij:pl =3.43&E-D050.5弱沁矗,6.5176-005观-0.005216(-0 DO顽-0.002634)0 2634<0.2039, 0.3229)N -0.017S4(-0.343, &.3:S7)Go»dMii <f fit5SE. 0.2SE3Biiuva: 0.9993Adjust«d E-ipir t: 0. QB53刖旺0.1797fl W M M < 5t因此,得出上述数据应进行三次最小二乘法拟合才能得到比较精确的解。 实验三数值积分与数值微分【实验目的】选用复合梯形公式,复合辛普森公式,Romberg算
26、法,高斯算法计算所给出的积分的近似解。【实验内容】选用复合梯形公式,复合辛普森公式,Romberg算法,高斯算法计算1(1) I =-sin2 xdxdx(2) I(3) Iln(1 x),2 dx1 x【实验所使用的仪器设备与软件平台】 电脑、VC+6.0。【实验方法与步骤】、运用Romberg算法,对(1)进行数值法几分计算代码如下:return sum; #i nclude <stdio.h>#in clude <math.h> static double T2020;double f(double x)returnpow(4-pow(si n(x),2),0.5
27、);double fuhe(double a,double b,i nt n)double sum=0,h=0,k=0;int i;if(n=0)h=b-a;return h*(f(a)+f(b)/2.0;elsek=pow(2, n);h=(b-a)/k;for(i=0;i<k;i+) sum+=(f(a+(b-a)*i/k)+f(a+(b-a)*( i+1)/k)*h/2.0;double romberg(double a,double b,double e) int j=0,k=0,i=2;T01=fuhe(a,b,0);T11=fuhe(a,b,1);T02=(4*T11-T01
28、)/3.0; for(;fabs(T0i-T0i-1)>=e;i+)Ti1=fuhe(a,b,i+1);j=2;for(k=i-1;k>=0;k-)Tkj=(pow(4,j-1)*Tk+1j-1 -Tkj-1)/(pow(4,j-1)-1);j+;return T0i;/*积函数(辛普森)在区 间 a,b 积f(x)*/double ff(doublea,double b,doubleeps)int n,k;double h,t1,t2,s1,s2,ep,p,x;n=1;/当前子节点个数 -1 ,不包括两端 a,bh=b-a;/当前区间长度t1=h*(f(a)+f(b)/2.0;/
29、进行数值法几分计算代码如下:return(y);计算原始梯形面积int main() float a,b,e; double result; printf("请输入积分下限 a:n");scanf("%f",&a); printf("请输入积分上限 b:n");scanf("%f",&b); printf(" 输入 e 的近似值 :n"); 二、运用复合辛普森算法,对( 1) #include<stdio.h> #include<math.h> doubl
30、e f(double x); double zdyf(double x); double ff(double a,double b,double eps);double ff(double a,double b,double eps,double (*f)(double);void main() char str1; double a,b,eps,t; a,b内,当前精度eps,接受结果到 t;double (*fff)(double); a=0.0;b=0.25; eps=0.0000001; t=ff(a,b,eps);printf(" 被积函数: n"); print
31、f(" pow(4-pow(sin(x),2),0.5)n"); printf(" 积分运算: n");printf("区 间%3.2f,%3.2fn",a,b);printf(" 积分结果 :n"); printf(" t=%en",t); printf("n");gets(str);/* 自定义被积函数 */double f(double x) double y;y=pow(4-pow(sin(x),2),0.5);scanf("%f",&e)
32、; result=romberg(a,b,e);printf("Based on your input parameterstheresultsis:n%fnn",result);scanf("%f",&e);s1=t1;/将原始梯形面积 ->s1ep=eps+1.0;/误差初始化/*辛普森算法*/while(ep>=eps)/循环比较(当前ep)和(标准eps)p=0.0;/累加暂存量初始化for(k=0;k<=n-1;k+) / 循环求和实现x=a+(k+0.5)*h;/ 节点定位p+=f(x);/ 节点函数值累加t2=(t
33、1+h*p)/2.0;/用(上一个 t1) 构造( 当前 t2);s2=(4.0*t2-t1)/3.0;/用(上一个t1) 和 (当前t2) 构造(当前s2)ep=fabs(s2-s1); /用(当前s2)和(上一个s1)构造(当前ep)t1=t2;/为构造下一个t准备s1=s2;/为构造下一个s准备n+=n;节点个数倍增h/=2.0;区间二分化return(s2);回(当前s2)double ff(double/返a,double b,doubleeps,double (*f)(double) int n ,k;/* 辛普森算法*/while(ep>=eps) /循环比较(当前ep)和
34、(标准eps)p=0.0;/累加暂存量初始化for(k=0;k<=n-1;k+)/循环求和实现x=a+(k+0.5)*h;/节点定位p+=(*f)(x);/节点函数值累加t2=(t1+h*p)/2.0;/用(上一个t1)构造(当前t2);s2=(4.0*t2-t1)/3.0;/用(上一个t1)和(当前t2) 构造(当前s2)ep=fabs(s2-s1); /用(当前s2)和(上一个s1)构造(当前ep)t1=t2;/Romberg 算法复合辛普森算法:WtsclientmProjrai FilesWCS,!' rxclientFiles (B0WS.OCoii3.25pDid&l
35、t;<4-pou<s ir (x> J 2) >> fl .K)区同LK,L西LZ182Based on yoiit* input paraneters the results is:0.49B712s1=t1;/将原始梯形面积->s1ep=eps+1.0;/误差初始化【实验结果】【结果分析与讨论】double h,t1,t2,s1,s2,ep,p,x;n=1;/当前子节点个数-1,不包括两端a,bh=b-a;/当前区间长度t1=h*(*f)(a)+(*f)(b)/2.0;/计算原始梯形面积为构造下一个t准备s1=s2;/为构造下一个s准备n+=n;节点个数
36、倍增/h/=2.0;区间二分化return(s2);回(当前s2)/返经过对比两种方法的实验结果,可以知道两种方法的计算结果正确,并且具有一定的代数精度。实验四 常微分方程初值问题数值解法【实验目的】利用Euler法,改进Euler法,Rung-Kutta方法求常微分方程数值解【实验内容】科学计算中经常遇到微分方程(组)初值问题,需要利用Euler法,改进Euler法,Rung-Kutta方法求其数值解,诸如以下问题:,4xy xyy.y(o)"分别取h=0.1,0.2,0.4时数值解。初值冋题的精确解y = 4 -3e»【实验所使用的仪器设备与软件平台】电脑、VC+6.0
37、。【实验方法与步骤】一、利用Euler法求数值解,代码如下:#include <iostream> using n amespace std;#in clude <math.h>float f(float x, float y); void ini t();float h,/ 步长x00,/x的取值范围xn, / x0< x < xn y00;初值float x21;/ 结果 float y21;void Euler()in it();x0 = x00;y0 = y00;for (int i=1; i<=(xn-x00)/h+1; i+) xi = x
38、i-1 + h;yi =yi-1+ h *f(xi-1,yi-1);float f(float x, float y)return 4*x/y-x*y; /return y-2*x/y;初始化初值和x的范围void init()x00=0;xn=2;y00=1;/求常微分方程的标准解float pf(float x)retur n sqrt(4+5*exp(-x*x);int mai n() h=0.1; Euler(); cout << "步长 h =" << h << en dl;for (int i=1; i<=(xn-x00
39、)/h+1; i+) cout << "x" << i << "=" << xi << "t"<< "y" << i << "=" << yi << "t"<< "y("<< xi << ")="<< pf(xi) << endl;h=0.2;Euler();
40、cout << "步长 h = "<< pf(xi) << endl; h=0.4; Euler(); cout << " 步长 h = " << h << endl;for (i=1; i<=(xn-x00)/h+1; i+)cout << "x" << i << "=" << xi << "t"<< h << endl;for (i
41、=1; i<=(xn-x00)/h+1; i+)cout << "x" << i << "=" << xi << "t"<< "y" << i << "=" << yi << "t"<< "y("<< xi << ")="<< "y" <&
42、lt; i << "=" << yi << "t"<< "y("<< xi << ")="<< pf(xi) << endl;return 0;、用四阶龙格库塔法求数值解,matlab代码如下(以h=0.1为例): function varargout=saxplaxliu(varargin) clc,clear x0=0;xn=1.0;y0=1;h=0.1;y,x=lgkt4j(x0,xn,y0,h);n=length
43、(x); fprintf(' i x(i) y(i)n'); for i=1:nfprintf('%2d %f %fn',i,x(i),y(i); end function z=f(x,y)z=4*x/y-x*y;function y,x=lgkt4j(x0,xn,y0,h)x=x0:h:xn;n=length(x);y1=x;y1(1)=y0;for i=1:n-1K1=f(x(i),y1(i);K2=f(x(i)+h/2,y1(i)+h/2*K1);K3=f(x(i)+h/2,y1(i)+h/2*K2);K4=f(x(i)+h,y1(i)+h*K3);y1(
44、i+1)=y1(i)+h/6*(K1+2*K2+2*K3+K4); endy=y1; 实验结果】、C语言Euler法求数值解运行结果:Files(86)VCfi.(f歩长h = 0.1xl=0<lyi=ly<0.1>=2.991?x2 =0_2j/2 =1.03 pCO.2>=2-?6714x3 »03y3-1.08707P<0.3)=2.9274x弓=0,4y4=l.lS485V<0.4>=2.87415x5 =0 <5y5=1,25561y<0.5>=2,80963x6 =0 _ fcy6=l.35211!/<0.
45、fc >=2.73649x7-0.7y?=l.44849y(0.7)-2.6576&x8=0.8SJ8 =1.5404y(0.8)=2-57613x9=0.9y? =1.6249y<0.9>=2,49485X10=ly10=l.70021y<l>=2.41648xil-1.1yll-1.7546y(l.1)-2.34329xl2=1.2yl2=l.82048V<1.2)=2.27698xl 3 =1.3y13=l.St569y(1.3>=2.21869xl4=l .4yl 4-1.90187y<l.4)=2.16894xl5«l
46、 .51/15-1.93005y<l.5)-2.12767xl6=1.6yl6=l.95142y<1.6>=2.0?44xl?=l,7yl7=1.9fc?ltV<1.?>=2.06S3xl8 =1.8yl8=1.97842y<l.8)=2.04837xl9=1.998623y(1.9>=2.03353x20=24,20=1.99148y<2>=2.02276ei *tsclientDPrograB、matlab四阶龙格库塔运行结果:歩於h = 0,2 tl=0,2 x2=0.4 x3=0.6 x=8-8*5=1"-1.2 严Ri4
47、 加仁6M=2涉长h xl=0.41x2*0.8x3=1.2严4=1.6-L=291=1y<0.2)=2,9&?141-1.12 v(0.4>-2.87415 3-1.31611 y4=1.522»9jj5 1.69948 6<.83B3274.91554 禮=1.96388P?=1.98721148-1.996450.4y<0.6)=2.73649 y(0.8)-2.57613y<l>-2.41fi4a<1,2)-2-27698y(l.4)=2.16894 ytl.fi) =2. W44 </(1.8)=2.0483?y(2)
48、=2.02276jl-1 y<BJ)=2.87415 j;2=1.4B y<0.8)=2.57613 y3-l.87126y4-lJmyS=2.N025j|<l.2)-2.2769By<1.6)-2.HV44y(2)=2.02276:Press anjf Ley to continueix (i)yU)10.oocooc1. aooooo20,100000L41481630.2000001. 05718240.30C0061.12170050.4000001. 201488S0.500000I.2898070.6000001. 3309338d 700000I.4704
49、16&0.8000001. 555031100.9000001.532612111. oooooo1.701868121.1000001.76221313L2000001.813615141. 3000001.95645415k 400000I.89140216I.500000L. 919317171.fiOOOOC1. 941149IS1.700000I. 957868IS1. SO'OOOO1. 970402201.900000L979601212. OO'OOOC1.9S6210【结果分析与讨论】x(i)y(i)10.000000I. 00000020.20000
50、0L05720330. 400000L20152&40. 600000L38096450. soooooL55503461. 000000I.701834i1. 200000LS13544sL 4000001.891299g1. 6000001.94102710L 800000L970277ii£ 0000001. 986099»1 x(i) y(i)1 0.000000 1.0000002 0.400000 1.2026533 0.800000 1.5555624 1.200000 1.8123365 I.600000 1.938251G 2.000000 I.S
51、33006»通过比较C语言、matlab两种不同运行环境下,两种不同的算法所得出的 结果是一样的。因此实验方法得当,结论正确。对于欧拉法对于欧拉法,步长越 小,精度越高,而产生的误差越小。总体来说,欧拉法的优点是形式简单,计算 方便,缺点是总的运算精度比较低。而且随着 x的增大,误差值也越来越大。根 据欧拉公式的截断误差计算,欧拉法是一阶方法。对于龙格一库塔法,优点是精O(hA5),故x =3 1,则只能求x;)度更高,同样的步长下精度比欧拉法高的多,误差更小,截断误差为 龙格一库塔法是四阶方法。缺点是每步都要计算四次微分值。实验五非线性方程求根【实验目的】1、编制一个程序进行运算,
52、最后打印出每种迭代格式的敛散情况2、用事后误差估计'Xk+-x呂来控制迭代次数,并且打印出迭代的次数3、初始值的选取对迭代收敛有何影响4、分析迭代收敛和发散的原因【实验内容】设方程 f (x)=3X- 3 x 1=有0 三个实根x;= 1.8793,x;二-0.34729,x; =-1.532088现采用下面四种不同计算格式,求f(x) = 0的根。3x 亠 13x_21、 乂二斗(x)二二V,则从满足收敛条件的角度来说,则只能求X3)xx2、 乂二山 (甲'(x)=x;,则从满足收敛条件的角度来说,x <1,贝U只能求x;)323、x二33TH (x)二(3x 1)3,
53、则从满足收敛条件的角度来说,则只能求x;,*X3)4、x=p(,则从满足收敛条件的角度来说'且【实验所使用的仪器设备与软件平台】 电脑、VC+6.0。【实验方法与步骤】1、#include<stdio.h>#in clude<math.h>void mai n()double x0, x, e; int i, n, flag;flag = 0;e = 0.0001;n = 10000;x0 = -1;for(i=1;i< n;i+)x = (3 ; x0 + 1) / x0 / x0;if(fabs(x - x0) < e)printf("
54、x = %lf, error < %lf,迭代次数 = %d",x,e,i);flag = 1;break;x0 = x;if (flag=0)printf(" 看来不收敛 x = %lf, error >= %lf,迭代次数x,e,n);2、#include<stdio.h> #include<math.h> void main()double x0, x, e; int i, n, flag;flag = 0;e = 0.0001;n = 10000;x0 = 0;for(i=1;i<n;i+)x = (x0*x0*x0-1)/
55、3.0;if(fabs(x - x0) < e)printf("x = %lf, error < %lf,迭代次数 = %d",x,e,i);flag = 1;break;x0 = x;if (flag=0)printf(" 看来不收敛 x = %lf, error >= %lf,迭代次数x,e,n);3、#include<stdio.h> #include<math.h> void main()= %d",= %d",double x0, x, e; int i, n, flag;flag = 0;e = 0.0001; n = 10000
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 《第五单元 动画城 读童谣 唐僧骑马咚得咚》(教学设计)-2023-2024学年人教版音乐一年级上册
- 东山酒店前台工作总结
- Revision Module 12 Help教学设计2024-2025学年外研版英语八年级上册
- 中学生自我情绪管理
- 企业感恩培训
- 天地之间的歌(教学设计)-2023-2024学年冀少版(2012)五年级下册音乐
- 安防天下课件
- 2025微型办公室租赁合同模板
- 休闲水吧创新创业计划
- 2025职员试用期书面合同
- 内科学 白血病(英文)
- hsk5-成语学习知识
- GB/T 5760-2000氢氧型阴离子交换树脂交换容量测定方法
- 电化学原理全册配套完整课件2
- 负压封闭引流VSD课件
- Unit 9 Kids and Computers公开课一等奖省优质课大赛获奖课件
- 截流式合流制管道系统的特点与使用条件课件
- (站表2-1)施工单位工程项目主要管理人员备案表
- 中班美术《我心中的太阳》绘画课件幼儿园优质课公开课
- 应急管理工作检查记录表
- 《机械设计基础》课程思政教学案例(一等奖)
评论
0/150
提交评论