大侠们帮帮忙,我要达到这样的功效,该怎么办?
#include<iostream>#include<math.h>
using namespace std;
const int N=5690,M=1000,K=1000;
int main()
{
double a[N],n[M],m[K];
int i;
double a1,a2,a3,a4;
for( a1=0.01,i=1; a1<1.01;i++)
{
a[i]=a1;
a1=a1+0.01;
}
for( a2=1.1,i=101; a2<50.1;i++)
{
a[i]=a2;
a2=a2+0.1;
}
for( a3=50.5,i=591; a3<200.5;i++)
{
a[i]=a3;
a3=a3+0.5;
}
for( a4=201,i=891; a4<5001;i++)
{
a[i]=a4;
a4=a4+1;
}
cout<<a[5690]<<endl;
double n1;
for( n1=0.05,i=1; n1<50.05;i++)
{
n[i]=n1;
n1=n1+0.05;
}
cout<<n[1000]<<endl;
double m1;
for( m1=0.01,i=1; m1<10.01;i++)
{
m[i]=m1;
m1=m1+0.01;
}
cout<<m[1000]<<endl;
double x1=0.1,y1=0.4,x2=1,y2=0.399,x3=10,y3=0.38,x4=100,y4=0.24,x5=1000,y5=0.1;
const int L=N*M*K;
double F[L];
for(int l=1;l<L;l++)
for(i=1;i<N;i++)
for(j=1;j<M;j++)
for(k=1;k<K;k++)
//F[l]=(1/(ln(e+(x1/a[i])^n[j]))^m[k]-y1)^2/y1+(1/(ln(e+(x2/a[i])^n[j]))^m[k]-y2)^2/y2+....+(1/(ln(e+(x5/a[i])^n[j]))^m[k]-y5)^2/y5;
//minF[l]
cout<<F[l]<<endl;
//return a[i],n[j],m[k];
cout<<"a="<<a[i]<<";"<<endl;
cout<<"n="<<n[j]<<";"<<endl;
cout<<"m="<<m[k]<<";"<<endl;
return 0;
}
黑体之前的,我有试过,是可以运行的,产生3个数组,也就是本例中函数f(x)=1/[ln(e+(x/a)^n]^m 中三个函数的可能值。 现在有5组数据,(x1,y1);(x2,y2),...(x5,y5)
这5组数据不一定在函数曲线上,我现在要做的是,在所有参数组合中,找出标准平方差最小的那对组合,也就是∑(f(xi)-yi)^2/yi ,最小,此时返回参数a[i];n[j];m[k].
小弟最近正为这个搞得焦头烂额,还请大侠们帮帮忙。 万分感谢。