数值分析作业(C语言编程实现)
#include
#include
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;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
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;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
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;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
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;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
void main()
{
double datay[9]={11.7,14.87,21.44,31.39,44.73,61.46,81.57,105.11,1