最新数值分析作业C语言编程实现.docx
- 文档编号:3079925
- 上传时间:2022-11-17
- 格式:DOCX
- 页数:15
- 大小:349.58KB
最新数值分析作业C语言编程实现.docx
《最新数值分析作业C语言编程实现.docx》由会员分享,可在线阅读,更多相关《最新数值分析作业C语言编程实现.docx(15页珍藏版)》请在冰豆网上搜索。
最新数值分析作业C语言编程实现
#include
#include
doublef(doublex)
{
doubleans;
ans=exp(x);
returnans;
}
voidmain()
{
doublea=1,b=3,error=0.0001,t[20][20],h,c;
inti,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;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;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]) {printf("\n积分结果I≈%lf\n",t[k][0]); break; } else {h=h/2; k++; } } } #include #include doublef(doublet) { doubleans; ans=pow(cos(t),1.0/3); returnans; } voidmain() { doublex=0,eslong=0.000001,x0; intN=20,i; printf("\n近似初值x0=%lf\n",x); for(i=0;i { x0=x; x=f(x); printf("x%d=%lf\n",i+1,x); if(fabs(x-x0) break; } if(fabs(x-x0) printf("得到近似结果为x≈%lf\n\n",x,i); else printf("迭代失败\n"); } #include #include doublea=0,b=1,x,y=0,h=0.1,k1,k2,k3,k4; inti,N; doublef(doublet,doubles) { doubleans; ans=1+t*t; returnans; } voidmain() { N=(b-a)/h; x=a; printf("\n初值为(x0,y0)=(%.8f,%.8f)\n",x,y); for(i=0;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 voidmain() { doubledatax[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; inti,j; y=0; for(i=0;i<=3;i++) { l[i]=1; for(j=0;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("\nf(x)在x=%f处的近似值为: y=%f\n",x,y); } #include voidmain() { doubledatay[9]={11.7,14.87,21.44,31.39,44.73,61.46,81.57,105.11,131.91}; intm=2,i,j,k; doublep,data[9][4],a[3][4],datax[9]={1.2,2.3,3.4,4.5,5.6,6.7,7.8,8.9,10.0}; for(i=0;i<9;i++) for(j=1;j<2*m+1;j++) { data[i][j]=1; for(k=0;k data[i][j]=data[i][j]*datax[i]; } for(i=0;i { for(j=0;j { a[i][j]=0; for(k=0;k<9;k++) a[i][j]=a[i][j]+data[k][i+j]; } } a[0][0]=9; a[0][m+1]=0; for(i=0;i<9;i++) a[0][m+1]=a[0][m+1]+datay[i]; for(i=1;i {a[i][m+1]=0; for(j=0;j<9;j++) { p=datay[j]; for(k=0;k p=p*datax[j]; a[i][m+1]=a[i][m+1]+p; } }//生成m+1行,m+2列增广矩阵// for(i=0;i for(j=0;j { if(j! =m+1) {printf("(%f)a%d",a[i][j],j); if(j! =m) printf("+"); } else printf("=%f\n",a[i][j]); } for(i=0;i { if(a[i][i]! =0) {for(j=i+1;j {a[j][i]=a[j][i]/a[i][i]; for(k=i+1;k a[j][k]=a[j][k]-a[i][k]*a[j][i]; } } else break; } if(a[m][m]! =0&&i==m) {a[m][m+1]=a[m][m+1]/a[m][m]; for(i=2;i<=m+1;i++) {for(j=1;j a[m+1-i][m+1]=a[m+1-i][m+1]-a[m+1-i][m+1-j]*a[m+1-j][m+1]; a[m+1-i][m+1]=a[m+1-i][m+1]/a[m+1-i][m+1-i]; } printf("方程组的解为: \n"); for(j=0;j printf("a%d=%f\n",j,a[j][m+1]); printf("拟合多项式为: \n"); printf("P%d(x)=(%f)+(%f)x+(%f)x^2\n",m,a[0][m+1],a[1][m+1],a[2][m+1]); } else printf("数据有误! \n"); }} 列主元素法 #include #include voidmain() { doublea[3][4]={1,-2,-1,3,-2,10,-3,15,-1,-2,5,10},mov,comp; inti,j,k,nrow; for(i=0;i<2;i++) { comp=fabs(a[i][i]); for(k=i;k<3;k++)//比较绝对值大小并进行主元列交换// if(fabs(a[k][i])>=comp) { nrow=k; comp=fabs(a[k][i]); } for(j=0;j<=3;j++) { mov=a[i][j]; a[i][j]=a[nrow][j]; a[nrow][j]=mov; } printf("方程第%d行互换位置后如下\n",i+1); for(j=0;j<3;j++) printf("(%f)x1+(%f)x2+(%f)x3=%f\n",a[j][0],a[j][1],a[j][2],a[j][3]); if(a[i][i]! =0) { for(j=i+1;j<3;j++) { a[j][i]=a[j][i]/a[i][i]; for(k=i+1;k<=3;k++) a[j][k]=a[j][k]-a[i][k]*a[j][i]; a[j][i]=0; } printf("方程经%d次消元如下\n",i+1); for(j=0;j<3;j++) printf("(%f)x1+(%f)x2+(%f)x3=%f\n",a[j][0],a[j][1],a[j][2],a[j][3]); } else break; } if(a[2][2]! =0&&i==2) { printf("方程化简得\n"); for(i=0;i<3;i++) printf("(%f)x1+(%f)x2+(%f)x3=%f\n",a[i][0],a[i][1],a[i][2],a[i][3]); a[2][3]=a[2][3]/a[2][2]; for(i=2;i<=3;i++) { for(j=1;j a[3-i][3]=a[3-i][3]-a[3-i][3-j]*a[3-j][3]; a[3-i][3]=a[3-i][3]/a[3-i][3-i]; } printf("方程组的解为: \n"); for(j=0;j<3;j++) printf("x%d=%f\n",j+1,a[j][3]); } else printf("数据有误! \n"); } Jacobi迭代法 #include #include voidmain() { doublea[3][7]={{1,-2,-1,3},{-2,10,-3,15},{-1,-2,5,10
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 最新 数值 分析 作业 语言 编程 实现