Помощничек
Главная | Обратная связь


Археология
Архитектура
Астрономия
Аудит
Биология
Ботаника
Бухгалтерский учёт
Войное дело
Генетика
География
Геология
Дизайн
Искусство
История
Кино
Кулинария
Культура
Литература
Математика
Медицина
Металлургия
Мифология
Музыка
Психология
Религия
Спорт
Строительство
Техника
Транспорт
Туризм
Усадьба
Физика
Фотография
Химия
Экология
Электричество
Электроника
Энергетика

Продолжение приложения А



m=b2;

}

p1=a*k*k+b;

p2=a*m*m+b; //нашли точки Y пересечения с параболой прямых

// определение интервала генерации чисел для оси oY

interval_y_max=0;

interval_y_min=0;

if (b*a<0) {interval_y_min=b; interval_y_max=0;} // вариант 1.1 и 1.2

if (b==0) // вариант 2.1 и 2.2

{

if (abs(p1)>abs(p2)) {interval_y_max=p1;} else {interval_y_max=p2;}

interval_y_min=0;

}

if (b*a>0) // вариант 3.1 и 3.2

{

if (abs(p1)>abs(p2)) {interval_y_max=p1;} else {interval_y_max=p2;}

interval_y_min=0;

}

// Решение квадратного уравнения и определение действительных корней

if (-4*a*b>=0)

{

x1=sqrt(-b/a);

Продолжение приложения А

x2=-1*x1; // симметрична относ oY

} else

{

x1=0;

x2=0;

}

//генерация по X

interval_x_max=0;

interval_x_min=0;

 

if (b*a<0) // вариант 1.1 и 1.2

{

interval_x_max=0;

interval_x_min=0;

 

if (x1<m && p2*b<0) {interval_x_max=x1;} else {interval_x_max=m;};

if (x2>k && b*p1<0) {interval_x_min=x2;} else {interval_x_min=k;};

}

if (b==0) // вариант 2.1 и 2.2

{

if (k>m) {interval_x_max=k; interval_x_min=m;} else {interval_x_max=m; interval_x_min=k;}

}

Продолжение приложения А

if (b*a>0) // вариант 3.1 и 3.2

{

if (k>m) {interval_x_max=k; interval_x_min=m;} else {interval_x_max=m; interval_x_min=k;}

}

float buf;

if (interval_x_max<interval_x_min)

{

buf=interval_x_max;

interval_x_max=interval_x_min;

interval_x_min=buf;

}

if (interval_y_max<interval_y_min)

{

buf=interval_y_max;

interval_y_max=interval_y_min;

interval_y_min=buf;

}

//Имитационное моделирование. Подсчет площади через точки

float s_cont=0, s_figure=0;

int cnt_points=0,debug_neg_cnt_points=0;

float diax=0,diay=0;

float xr=0,yr=0;

Продолжение приложения А

float xran[10000];

float yran[10000];

diax=fabs(interval_x_max)+fabs(interval_x_min);

diay=fabs(interval_y_max)+fabs(interval_y_min);

s_cont=diax*diay;

FILE* logfile2;

logfile2=fopen("c:\\logfile2.txt","w");

fprintf(logfile2,"\n");

fprintf(logfile2,"y(x)=%f*x^2+%f\n",a,b);

fprintf(logfile2,"| xr | YR | f(y) | COUNT |\n");

srand(time(NULL));

for (int c2=0;c2<precision;c2++)

{

xr=(512*rand()%int(diax*10000)*0.0001)+interval_x_min;

yr=(512*rand()%int(diay*10000)*0.0001)+interval_y_min;

if (fabs(yr)<fabs(a*xr*xr+b)) cnt_points++; else debug_neg_cnt_points++;

fprintf(logfile2,"| %.12f | %.12f | %.12f | %.12i |\n",xr,yr,fabs(a*xr*xr+b),cnt_points );

xran[c2]=xr;

yran[c2]=yr;

}

textbox_answer=s_cont*(float(cnt_points)/precision);

textbox_contsq=s_cont;

// Проверка правильности обычным интегральным методом.

Продолжение приложения А

float sp=0;

sp=((a*interval_x_max*interval_x_max*interval_x_max)/3+b*interval_x_max)-((a*interval_x_min*interval_x_min*interval_x_min)/3+b*interval_x_min);

sp=fabs(sp);

textbox_sintegral=sp;

textbox_pogr=(fabs(sp-s_cont*(float(cnt_points)/precision))/sp)*100;

//Вывод в лог-файл на диске C:\

UpdateData(0);

fprintf(logfile2,"\n");

fprintf(logfile2,"Values:\n a=%f;\n b=%f;\n k=%f;\n m=%f\n",a,b,k,m);

fprintf(logfile2,"P1: %f;\nP2: %f;\n",p1,p2);

fprintf(logfile2,"x1=%f,\nx2=%f\n",x1,x2);

fprintf(logfile2,"interval_y_max=%f;\ninterval_y_min=%f\n",interval_y_max, interval_y_min);

fprintf(logfile2,"interval_x_max=%f;\ninterval_x_min=%f\n",interval_x_max,interval_x_min);

//Вывод в графический интерфейс

UpdateData(0);

textbox_debug_p1=p1;

textbox_debug_p2=p2;

textbox_out_xgen=x1;

textbox_out_ygen=x2;

textbox_cnt_p=cnt_points;

textbox_cnt_pall=cnt_points+debug_neg_cnt_points;

Продолжение приложения А

 

UpdateData(0);

// построение

CPen MainGraphicPen(PS_SOLID,1,RGB(0,2,255));

CClientDC MyDC(GetDlgItem(IDC_STATICpicture));

CRect rect1(1,1,500,500);

CWnd *pWnd=MyDC.GetWindow();

pWnd->GetClientRect(&rect1);

MyDC.FillSolidRect(rect1,RGB(255,255,255));

CBrush MyBrush(RGB(0,0,1));

if (container)

{

float rect_x1=0,rect_x2=0, rect_y1=0, rect_y2=0;

CBrush MyBrush2(HS_BDIAGONAL, RGB(255,0,0));

MyDC.SelectObject(&MyBrush2);

rect_x1=interval_x_max*20+250;

if (interval_y_max<9) {rect_y1=interval_y_max*(-20)+200;} else {rect_y1=0;}

rect_x2=interval_x_min*20+250;

if (interval_y_min>-9) {rect_y2=interval_y_min*(-20)+200;} else {rect_y2=400;}

MyDC.Rectangle(rect_x1,rect_y1,rect_x2,rect_y2);

}

if (grid)

{

Продолжение приложения А

CPen Grid(PS_SOLID,1,RGB(133,133,133));

MyDC.SelectObject(&Grid);

for (int x=10;x<500;x=x+20)

{

MyDC.MoveTo(x,0);

MyDC.LineTo(x,400);

}

for (int y=20;y<400;y=y+20)

{

MyDC.MoveTo(500,y);

MyDC.LineTo(0,y);

}

}

if (Axes)

{

CPen Coords(PS_SOLID,1,RGB(0,2,255));

MyDC.SelectObject(&Coords);

//Рисование координат

MyDC.MoveTo(250,0);

MyDC.LineTo(250,400);

MyDC.MoveTo(0,200);

MyDC.LineTo(500,200);

//Рисование меток на оси X

 




Поиск по сайту:

©2015-2020 studopedya.ru Все права принадлежат авторам размещенных материалов.