主题:[原创]龙贝格算法!!!!!大虾们都来看看!!
#include<stdio.h>
#include<math.h>
#define N 11
double function(double x)
{
if(x==0)
return 1;
else
return sin(x)/x;
}
main()
{
int k,m,a,b,n;
double h,r,T[N][N];
double sum;
printf("input a:\n");
scanf("%d",&a);
printf("input b:\n");
scanf("%d",&b);
printf("input r:\n");
scanf("%lf",&r);
T[0][0]=(b-a)*(function(a)+function(b))/2;/*计算T[0][0]*/
for(k=1;k<=N;k++) /*用复合梯形公式计算T[0][k]*/
{
n=pow(2,k-1);
h=(b-a)/pow(2,k-1)*1.0;
for(m=0;m<n;m++)
{
sum=0;
sum+=function(a+m*h+h/2);
}
T[0][k]=T[0][k-1]/2+h/2*sum;
}
for(k=1;k<=N;k++) /*龙贝格公式求第K行元素的值*/
{
for(m=1;m<=k;m++)
{
T[m][k-m]=(pow(4,m)*T[m-1][k-m+1]-T[m-1][k-m])/(pow(4,m)-1);
if(fabs(T[k][0]-T[k-1][0])<r)
break;
}
}
printf("T[10][0]:%lf",T[10][0]);
} 走过路过都看一看啊,帮帮忙啊,很急的。重点看梯形公式部分啊!!!!谢谢了!!!
#include<math.h>
#define N 11
double function(double x)
{
if(x==0)
return 1;
else
return sin(x)/x;
}
main()
{
int k,m,a,b,n;
double h,r,T[N][N];
double sum;
printf("input a:\n");
scanf("%d",&a);
printf("input b:\n");
scanf("%d",&b);
printf("input r:\n");
scanf("%lf",&r);
T[0][0]=(b-a)*(function(a)+function(b))/2;/*计算T[0][0]*/
for(k=1;k<=N;k++) /*用复合梯形公式计算T[0][k]*/
{
n=pow(2,k-1);
h=(b-a)/pow(2,k-1)*1.0;
for(m=0;m<n;m++)
{
sum=0;
sum+=function(a+m*h+h/2);
}
T[0][k]=T[0][k-1]/2+h/2*sum;
}
for(k=1;k<=N;k++) /*龙贝格公式求第K行元素的值*/
{
for(m=1;m<=k;m++)
{
T[m][k-m]=(pow(4,m)*T[m-1][k-m+1]-T[m-1][k-m])/(pow(4,m)-1);
if(fabs(T[k][0]-T[k-1][0])<r)
break;
}
}
printf("T[10][0]:%lf",T[10][0]);
} 走过路过都看一看啊,帮帮忙啊,很急的。重点看梯形公式部分啊!!!!谢谢了!!!