dx999 发表于 2004-12-9 20:04

非线性规划程序

<P>#include&lt;iostream.h&gt;
#include&lt;math.h&gt;
double fx(int n,double p[],double x)
{
double z=0,y=1;
int i=0,j=0;
for(;i&lt;n+1;i++)
{
  for(;j&lt;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&lt;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)&lt;=(b-a)/w;i++)
{}
return i;
}
void main()
{
cout&lt;&lt;"输入函数的最高次幂";
int n;
cin&gt;&gt;n;
double *p=new double;
double a,b,g=0,j=0,c=0;
cout&lt;&lt;"依升降幂输入x项的系数"&lt;&lt;endl;
for(int i=0;i&lt;n+1;i++)
  cin&gt;&gt;*(p+i);
cout&lt;&lt;"输入误差值"&lt;&lt;endl;
double w;
cin&gt;&gt;w;
cout&lt;&lt;"输入初始区间"&lt;&lt;endl;
cin&gt;&gt;a&gt;&gt;b;
cout&lt;&lt;"输入辨别常数"&lt;&lt;endl;
cin&gt;&gt;c;
n=r(w,a,b);
i=0;
cout&lt;&lt;fi(n-i-2)&lt;&lt;endl;
cout&lt;&lt;a&lt;&lt;"  "&lt;&lt;b;
g=a+fi(n-2-i)*(b-a)/fi(n-i);
j=a+fi(n-1-i)*(b-a)/fi(n-i);
    cout&lt;&lt;g&lt;&lt;"   "&lt;&lt;j;
for(i=1;i&lt;n-1;i++)
{
  
  
  if(fx(n,p,g)&gt;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)&gt;fx(n,p,j))
  a=g;
else b=g;
cout&lt;&lt;"函数值在 ("&lt;&lt;g&lt;&lt;","&lt;&lt;j&lt;&lt;")之间;";

}
</P>

duanzengbin 发表于 2004-12-23 21:27

C语言吗?

Allos 发表于 2004-12-9 21:29

这个程序可读性太差

zhanfeng 发表于 2004-12-18 20:59

如果加上注释会容易看一些!

ilikenba 发表于 2004-12-19 16:16

用的是什么算法?

harleych 发表于 2004-12-22 16:24

没什么用

leonsun2002 发表于 2004-12-28 15:35

什么算法?

zhyi 发表于 2005-4-17 16:32

<P>有点像牛顿法求解非线性方程组</P><P>没有解时就找到某个区间</P>

mengfanqi 发表于 2005-9-6 19:45

可以慢慢研究!!!

garr 发表于 2005-9-6 21:02

<P>不是吧,用C语言求规划?汗。lingo不是能解吗?</P>
页: [1] 2 3
查看完整版本: 非线性规划程序