这个程序怎么运行了没有结果啊,高手们帮忙看一下,谢谢
#include <iostream.h>
#include <math.h>
double func(double b[])//找到数组中最小的数
{
double temp;
for(int i=0;i<8;i++)
for(int j=0;j<=i;j++)
{
if(b[i]<b[j])
{
temp = b[i];
b[i] = b[j];
b[j] =temp;
}
}
return b[0];
}
double yy(double ti[],double arf,double sita)//为了计算sita的先求yy的值
{
double y;
double sum1=0;
double sum2=0;
double sum3=0;
for(int i=0;i<8;i++)
sum1+=pow((ti[i]-sita),(arf-1));
for(int j=0;j<8;j++)
sum2+=pow((ti[j]-sita),arf);
for(int k=0;k<8;k++)
sum3+=1/(ti[k]-sita);
y = sum1-(arf -1)/(8*arf)*sum2*sum3;
return y;
}
void main ()
{
double a[8]={181,200,196,205,186,211,194,210};
double sita,y1,y2,y3;
double a1=0;
double a2=func(a);
y2 = yy(a,10,a2);
y1 = yy(a,10,a1);
sita = 0;
y3 = yy(a,10,(a1+a2)/2);
while(fabs(y1)>1e-6)
{
if(y1*y3>0)
a1=(a1+a2)/2;
else
a2=(a1+a2)/2;
y1 = yy(a,10,a1);
y2 = yy(a,10,a2);
y3 = yy(a,10,(a1+a2)/2);
sita = (a1+a2)/2;
}
cout<<sita;
}
sita是yy函数的零点,通过二分法求sita,谢谢了!