Здравствуйте. Помогите перевести программу из консоли в форму, пожалуйста. Еще мне нужно на графике изобразить переход точек,которые получаются на каждом из шаге, чего я не представляю даже как делать=(
Код:
#include <iostream.h>
#include <math.h>
#include <conio.h>
#include <stdlib.h>
#include <iomanip.h>
#include <stdio.h>
#include <ctype.h>
#include <strstrea.h>
struct znach_x
{double x1,x2;
};
int N0=0,N1=0;
double f(double x1,double x2)
{double y;
N0++;
y=25*x1+0.9*x2+exp(0.35*pow(x1,2)+0.35*pow(x2,2));
return y;
}
double dfx1(double x1,double x2)
{double y;
N1++;
y=25+0.7*x1*exp(0.35*pow(x1,2)+0.35*pow(x2,2));
return y;
}
double dfx2(double x1,double x2)
{double y;
N1++;
y=0.9+0.7*x2*exp(0.35*pow(x1,2)+0.35*pow(x2,2));
return y;
}
void naisk_spusk()
{const int L=1500;
znach_x x[L];
znach_x x_;
double a,a1,a2,f1,f2,amin,eps,z1,z2,y1,d,y_,A,B,da,y2;
int k,i,N1,N,N0;
cout<<"Vvedite bazovuyu tochku:"<<endl;
cout<<"x0(x1,x2) ";cout<<endl;
cout<<"x1 = ";
cin>>x[0].x1;
cout<<"x2 = ";
cin>>x[0].x2;
cout<<"Vvedite tochnost':\n";
cout<<"eps = "; cin>>eps;
cout<<"Vvedite da:\n";
cout<<"da = "; cin>>da;
k=0;
N0=0;
z1=25+0.7*x[0].x1*exp(0.35*(pow(x[0].x1,2)+pow(x[0].x2,2)));
z2=0.9+0.7*x[0].x2*exp(0.35*(pow(x[0].x1,2)+pow(x[0].x2,2)));
N1=2;
m2:
y1=25*x[k].x1+0.9*x[k].x2+exp(0.35*(pow(x[k].x1,2)+pow(x[k].x2,2)));
//cout<<"y1= "<<y1<<endl;
i=0;
m1:
y2=25*(x[k].x1-((i+1)*da)*z1)+0.9*(x[k].x2-((i+1)*da)*z2)+exp(0.35*(pow((x[k].x1-((i+1)*da)*z1),2)+pow((x[k].x2-((i+1)*da)*z2),2)));
//cout<<"y2= "<<y2<<endl;
N0++;
if (y2<y1) {i++;y1=y2;goto m1;}
else {B=(1+i)*da;
if (i>0) A=(i-1)*da;
else A=0;
}
//cout<<"A="<<A<<" B="<<B<<endl;
//dich
d=eps/100;
do
{a=(A+B)/2.0;
a1=a-d;
a2=a+d;
f1=25*(x[k].x1-a1*z1)+0.9*(x[k].x2-a1*z2)+exp(0.35*(pow((x[k].x1-a1*z1),2)+pow((x[k].x2-a1*z2),2)));
f2=25*(x[k].x1-a2*z1)+0.9*(x[k].x2-a2*z2)+exp(0.35*(pow((x[k].x1-a2*z1),2)+pow((x[k].x2-a2*z2),2)));
N=0;
N=N+2;
cout<<"a1 = "<<a1<<" f1 = "<<f1<<endl;
cout<<"a2 = "<<a2<<" f2 = "<<f2<<endl;
if (f1<f2) B=a2;
else A=a1;
}
while (B-A>2*eps);
amin=(A+B)/2.0;
// cout<<endl;
//cout<<"Result: "<<"amin= "<<amin<<endl;
x[k+1].x1=x[k].x1-amin*z1;
x[k+1].x2=x[k].x2-amin*z2;
z1=25+0.7*x[k+1].x1*exp(0.35*(pow(x[k+1].x1,2)+pow(x[k+1].x2,2)));
z2=0.9+0.7*x[k+1].x2*exp(0.35*(pow(x[k+1].x1,2)+pow(x[k+1].x2,2)));
N1=N1+2;
if ((sqrt(z1*z1+z2*z2))>eps) {k=k+1; goto m2;}
else {x_=x[k+1];
y_=25*x_.x1+0.9*x_.x2+exp(0.35*(pow(x_.x1,2)+pow(x_.x2,2)));
N=N1+N0;
}
cout<<"Result:\n";
cout<<"x_(x1,x2) = x_( "<<x_.x1<<","<<x_.x2<<" )"<<endl;
cout<<"y_ = "<<y_<<endl;
cout<<"Kol-vo icpitanii: N1 = "<<N1<<endl;
cout<<"Kol-vo icpitanii: N0 = "<<N0<<endl;
cout<<"Kol-vo icpitanii: N = "<<N<<endl;
cout<<"Kol-vo iteracii: k = "<<k<<endl;
}
void main()
{int j;
while (true)
{clrscr();
cout<<endl;
cout<<"1.Naisk. spusk\n";
cout<<"0.Vihod iz programmi\n";
cout<<endl;
cout<<"Vash vibor 0 or 1: "; cin>>j;
switch(j)
{
case 1:naisk_spusk();getch(); break;
case 0: cout<<"GoodBy!"; getch();exit(0);
default:{cout<<"Net takogo punkta!";exit(1);}
getch(); }
}
}