f(x)=∫Xd(x) (由于符号不太好写就用这个代表0~∞得积分了)
在vb中 建函数
function ( x as double) as double
{
//希望大人再次各个代码;谢谢
}
0~∞?求广义积分?
何必呢,装个matlab就行!
很早以前写的,你凑合着用吧~
//use simpsons rule to integrate the f(x)
double integrate( double (*func)(double),//func为你要积分的函数
double a,//左边界
double b,//右边界
int n ,//n为采样点的个数
)
{
double step;
int i;
double sum1,sum2,sum ;
int flag = 0;
if ( a > b ) {
flag = 1;
sum=a;//sum is a temp value
a=b;
b=sum;
}
step = (b - a)/n;
sum1 = 0;
sum2 = 0;
sum = 0;
for (i = 1; i<=n-1; i++){
sum1 += func(a+i*step);
sum2 += func(a + (i - 1/2)*step);
}
sum2 += func(a+(i-1/2)*step);
sum = ( ( func(a) +func(b) )/2 + sum1 + 2*sum2 )*step/3 ;
if ( flag ) return -sum;
else return sum;
}
楼上的是用梯形法求解的,求积分是数值分析中的一个常见话题,比较的好的方法是Romberg方法。Simpson方法的精度也比上面方法的要高。