#include<iostream>
using namespace std;
#include<cmath>
double function(double x[2])
{
double z;
// z=10*(x[0]+x[1]-5)*(x[0]+x[1]-5)+(x[0]-x[1])*(x[0]-x[1]);
z=x[0]*x[0]*x[0]*x[0]-2*x[0]*x[0]*x[1]+x[0]*x[0]+2*x[1]*x[1]-2*x[0]*x[1]+*x[0]-4*x[1]+4
;
return z;
}
double pointju(double x1[],double x2[],int n)
{
double z;
double sum=0;
for(int i=0;i<n;i++)
{
sum=(x1[i]-x2[i])*(x1[i]-x2[i])+sum;
}
z=sqrt(sum);
return z;
}
double * zuobiaolunhuan(int n,double x0[2],double h,double s[],double e)
{
double a[2];
double b[2];
double *p;
double result[2];
int i, k=1;
double x1[2],x2[2],x3[2],f1,f2,f3;
for(i=0;i<n;i++)
{
x1[i]=x0[i];
x2[i]=x0[i]+k*h*s[i];
}
f1=function(x1);
f2=function(x2);
if(f1<f2)
{
do
{
k=k-1;
for(i=0;i<n;i++)
{
x3[i]=x0[i]+(k-1)*h*s[i];
f3=function(x3);
x1[i]=x0[i]+h*(k+1)*s[i];
f1=function(x1);
}
}while(f3<f1);
for(i=0;i<n;i++)
{
a[i]=x3[i];
b[i]=x3[i]+2*h*s[i];
}
}
?
else // μ¥μ÷μ Y?
{
do
{
k=k+1;
for(i=0;i<n;i++)
{
x3[i]=x0[i]+k*h*s[i];
f3=function(x3);
x2[i]=x0[i]+h*(k-1)*s[i];
f2=function(x2);
}
}while(f3<f2);
for(i=0;i<n;i++)
{
a[i]=x2[i]-h*s[i];
b[i]=x3[i];
}
}
?
?
cout<<"x0 ?・ò ???÷ ?????a"<<"["<<a[0]<<','<<b[0]<<"]"<<endl;
cout<<"x1 ?・ò ???÷ ?????a"<<"["<<a[1]<<','<<b[1]<<"]"<<endl;
// double result[2];
do
{
for(i=0;i<n;i++)
{
x1[i]=a[i]+*(b[i]-a[i]);
x2[i]=a[i]+*
坐标轮换法c程序 来自淘豆网www.taodocs.com转载请标明出处.