最新数值分析作业C语言编程实现.docx
《最新数值分析作业C语言编程实现.docx》由会员分享,可在线阅读,更多相关《最新数值分析作业C语言编程实现.docx(15页珍藏版)》请在冰豆网上搜索。
![最新数值分析作业C语言编程实现.docx](https://file1.bdocx.com/fileroot1/2022-11/17/957794c9-eba6-4868-a907-3312c535f44b/957794c9-eba6-4868-a907-3312c535f44b1.gif)
最新数值分析作业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;jm=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;nc=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;kdata[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;ifor(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;ka[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;jprintf("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