文档详情

数值分析作业(C语言编程实现).doc

发布:2017-04-06约6.53千字共12页下载文档
文本预览下载声明
#include stdio.h #include math.h double f(double x) { double ans; ans=exp(x); return ans; } void main() { double a=1,b=3,error=0.0001,t[20][20],h,c; int i,j,k,m,n; h=b-a; t[0][0]=h*(f(a)+f(b))/2; k=1; while(1) { t[0][k]=0; m=1; for(j=0;jk-1;j++) m=m*2; for(i=1;i=m;i++) t[0][k]=t[0][k]+h*f(a+(i-0.5)*h); t[0][k]=(t[0][k]+t[0][k-1])/2; for(j=1;j=k;j++) { c=1; for(n=0;nj;n++) c=c*4; t[j][k-j]=(c*t[j-1][k-j+1]-t[j-1][k-j])/(c-1); } if(fabs(t[k][0]-t[k-1][0])error) { printf(\n积分结果 I ≈ %lf\n,t[k][0]); break; } else { h=h/2; k++; } } } #include stdio.h #include math.h double f(double t) { double ans; ans=pow(cos(t),1.0/3); return ans; } void main() { double x=0,eslong=0.000001,x0; int N=20,i; printf(\n近似初值 x0 = %lf\n,x); for(i=0;iN;i++) { x0=x; x=f(x); printf( x%d = %lf\n,i+1,x); if(fabs(x-x0)eslong) break; } if(fabs(x-x0)eslong) printf(得到近似结果为 x ≈ %lf\n\n,x,i); else printf(迭代失败\n); } #include stdio.h #include math.h double a=0,b=1,x,y=0,h=0.1,k1,k2,k3,k4; int i,N; double f(double t,double s) { double ans; ans=1+t*t; return ans; } void main() { N=(b-a)/h; x=a; printf(\n 初值为 (x0,y0) = ( %.8f , %.8f )\n,x,y); for(i=0;iN;i++) { k1=f(x,y); k2=f(x+h/2,y+h*k1/2); k3=f(x+h/2,y+h*k2/2); k4=f(x+h,y+h*k3); y=y+h*(k1+2*(k2+k3)+k4)/6; x=x+h; printf( 第%d次输出结果为 (x%d,y%d) = ( %.8f , %.8f )\n,i+1,i+1,i+1,x,y); } } #include stdio.h void main() { double datax[4]={1.2,2.9,4.6,5.8},datay[10]={14.84,33.71,58.36,79.24},l[3],x=1.5,y; int i,j; y=0; for(i=0;i=3;i++) { l[i]=1; for(j=0;ji;j++) l[i]=(x-datax[j])/(datax[i]-datax[j])*l[i]; for(j=i+1;j=3;j++) l[i]=(x-datax[j])/(datax[i]-datax[j])*l[i]; y=y+datay[i]*l[i]; } printf(\n f(x)在 x = %f 处的近似值为: y = %f\n,x,y); } #include stdio.h void main() { double datay[9]={11.7,14.87,21.44,31.39,44.73,61.46,81.57,105.11,131.91}; int m=2,i,j,k; double p,data[9][4]
显示全部
相似文档