4.龙贝格求积公式,求解定积分
- #include<stdio.h> #include<math.h>
-
#define f(x) (sin(x)/x)
#define N20
#define MAX20
#define a2
#define b4
#define e0.00001
float LBG(float p,float q,int n)
{int i;
float sum=0,h=(q-p)/n;
for (i=1;i<n;i++)
sum+=f(p+i*h);
sum+=(f(p)+f(q))/2;
return(h*sum);
}
void main()
{int i;
int n=N,m=0;
float T[MAX+1][2];
T[0][1]=LBG(a,b,n);
n*=2;
for(m=1;m<MAX;m++)
{for(i=0;i<m;i++)
T[i][0]=T[i][1];
T[0][1]=LBG(a,b,n);
n*=2;
for(i=1;i<=m;i++)
T[i][1]=T[i-1][1]+(T[i-1][1]-T[i-1][0])/(pow(2,2*m)-1);
if((T[m-1][1]<T[m][1]+e)&&(T[m-1][1]>T[m][1]-e))
{ printf("Answer=%f/n",T[m][1]); getch();
return ;
}
}
}
5.牛顿迭代公式,求方程的近似解
-
#include<stdio.h> #include<math.h>
#include<conio.h>
#define N 100
#define PS 1e-5
#define TA 1e-5
float Newton(float (*f)(float),float(*f1)(float),float x0 )
{ float x1,d=0;
int k=0;
do
{ x1= x0-f(x0)/f1(x0);
if((k++>N)||(fabs(f1(x1))<PS))
{ printf("/nFailed!");
getch();
exit();
}
d=(fabs(x1)<1?x1-x0:(x1-x0)/x1);
x0=x1;
printf("x(%d)=%f/n",k,x0);
}
while((fabs(d))>PS&&fabs(f(x1))>TA) ;
return x1;
}
float f(float x)
{ return x*x*x+x*x-3*x-3; }
float f1(float x)
{ return 3.0*x*x+2*x-3; }
void main()
{ float f(float);
float f1(float);
float x0,y0;
printf("Input x0: ");
scanf("%f",&x0);
printf("x(0)=%f/n",x0);
y0=Newton(f,f1,x0);
printf("/nThe root is x=%f/n",y0);
getch();
}
6314

被折叠的 条评论
为什么被折叠?



