非线性规划程序
<P>#include<iostream.h>#include<math.h>
double fx(int n,double p[],double x)
{
double z=0,y=1;
int i=0,j=0;
for(;i<n+1;i++)
{
for(;j<i;j++)
y*=x;
z+=*(p+i)*y;
}
return z;
}</P>
<P>int fi(int k)
{
if(k==0)
return 1;
else
{
if(k==1)
return 1;
else
{
int i=0,i1=1,i2=1,w=0;
for(;i<k-1;i++)
{
w=i1+i2;
i1=i2;
i2=w;
}
return w;
}
}
}</P>
<P>int r(double w,double a,double b)
{
int i=0;
for(;fi(i)<=(b-a)/w;i++)
{}
return i;
}
void main()
{
cout<<"输入函数的最高次幂";
int n;
cin>>n;
double *p=new double;
double a,b,g=0,j=0,c=0;
cout<<"依升降幂输入x项的系数"<<endl;
for(int i=0;i<n+1;i++)
cin>>*(p+i);
cout<<"输入误差值"<<endl;
double w;
cin>>w;
cout<<"输入初始区间"<<endl;
cin>>a>>b;
cout<<"输入辨别常数"<<endl;
cin>>c;
n=r(w,a,b);
i=0;
cout<<fi(n-i-2)<<endl;
cout<<a<<" "<<b;
g=a+fi(n-2-i)*(b-a)/fi(n-i);
j=a+fi(n-1-i)*(b-a)/fi(n-i);
cout<<g<<" "<<j;
for(i=1;i<n-1;i++)
{
if(fx(n,p,g)>fx(n,p,j))
{
a=g;
g=j;
j=a+fi(n-1-i)*(b-a)/fi(n-i);
}
else
{
b=j;
j=g;
g=a+fi(n-2-i)*(b-a)/fi(n-i);
}
}
j=g+c;
if(fx(n,p,g)>fx(n,p,j))
a=g;
else b=g;
cout<<"函数值在 ("<<g<<","<<j<<")之间;";
}
</P> C语言吗? 这个程序可读性太差 如果加上注释会容易看一些! 用的是什么算法? 没什么用 什么算法? <P>有点像牛顿法求解非线性方程组</P><P>没有解时就找到某个区间</P> 可以慢慢研究!!! <P>不是吧,用C语言求规划?汗。lingo不是能解吗?</P>