АвтоАвтоматизацияАрхитектураАстрономияАудитБиологияБухгалтерияВоенное делоГенетикаГеографияГеологияГосударствоДомДругоеЖурналистика и СМИИзобретательствоИностранные языкиИнформатикаИскусствоИсторияКомпьютерыКулинарияКультураЛексикологияЛитератураЛогикаМаркетингМатематикаМашиностроениеМедицинаМенеджментМеталлы и СваркаМеханикаМузыкаНаселениеОбразованиеОхрана безопасности жизниОхрана ТрудаПедагогикаПолитикаПравоПриборостроениеПрограммированиеПроизводствоПромышленностьПсихологияРадиоРегилияСвязьСоциологияСпортСтандартизацияСтроительствоТехнологииТорговляТуризмФизикаФизиологияФилософияФинансыХимияХозяйствоЦеннообразованиеЧерчениеЭкологияЭконометрикаЭкономикаЭлектроникаЮриспунденкция

Исходный код

Читайте также:
  1. Исходный вопрос психологии как науки
  2. ИСХОДНЫЙ КОД ПРИЛОЖЕНИЯ
  3. ИСХОДНЫЙ ПРОДУКТ ПРОКАТКИ
  4. Исходный пункт современного научного подхода
  5. Исходный пункт социальной коммуникации
  6. Листинг 6.5. Исходный код ключевого фрагмента лабораторного вируса

#include"stdafx.h"

#include<conio.h>

#include<stdio.h>

#include<math.h>

#include<iostream>

 

usingnamespace std;

 

typedeffloat coord[3];

coord xf,xb[2];

float ff, fb[2];

 

void prisv(coord x1,coord x2)

{

x1[0]=x2[0];

x1[1]=x2[1];

x1[2]=x2[2];

}

float func1(float x1, float x2, float x3)

{

return (x1-1)*(x1-2)*(x1-3)+x3;

}

 

 

float g1(float x1,float x2, float x3)

{

return (x1+x2+x3);

}

 

float g2(float x1, float x2, float x3)

{

return (pow(x3,2)-pow(x1,2)-pow(x2,2));

}

float g3(float x1, float x2, float x3)

{

return (5-x3);

}

float g4(float x1, float x2, float x3)

{

return (pow(x1,2)+pow(x2,2)+pow(x3,2)-4);

}

void issled(coord xb0, float fb, float h, float k)

{

float ft,ft1;

coord xk;

 

prisv(xf,xb0);

prisv(xk,xb0);

xk[2]+=h; //движение на нас;

ft1=func1(xk[0],xk[1],xk[2])+k*(1/(g1(xk[0],xk[1],xk[2])) +1/(g2(xk[0],xk[1],xk[2]))+1/(g3(xk[0],xk[1],xk[2]))+1/(g4(xk[0],xk[1],xk[2])));

if(g1(xk[0],xk[1],xk[2]) && g2(xk[0],xk[1],xk[2]) && g3(xk[0],xk[1],xk[2]) && g4(xk[0],xk[1],xk[2])) break;

if(ft1<fb)

{

prisv(xf,xk);

ff=ft1;

}

else

{

prisv(xk,xb0);

xk[2]-=h; //движение от нас;

ft1=func1(xk[0],xk[1],xk[2])+k*(1/(g1(xk[0],xk[1],xk[2])) +1/(g2(xk[0],xk[1],xk[2]))+1/(g3(xk[0],xk[1],xk[2]))+1/(g4(xk[0],xk[1],xk[2])));

if(g1(xk[0],xk[1],xk[2]) && g2(xk[0],xk[1],xk[2]) && g3(xk[0],xk[1],xk[2]) && g4(xk[0],xk[1],xk[2])) break;

if (ft1<fb)

{

prisv(xf,xk);

ff=ft1;

}

else

{

prisv(xk,xb0);

xk[0]+=h; //dvizhenie vpravo po osi x1;

ft1=func1(xk[0],xk[1],xk[2])+k*(1/(g1(xk[0],xk[1],xk[2])) +1/(g2(xk[0],xk[1],xk[2]))+1/(g3(xk[0],xk[1],xk[2]))+1/(g4(xk[0],xk[1],xk[2])));

if(g1(xk[0],xk[1],xk[2]) && g2(xk[0],xk[1],xk[2]) && g3(xk[0],xk[1],xk[2]) && g4(xk[0],xk[1],xk[2])) break;

if (ft1<fb)

{

prisv(xf,xk);

ff=ft1;

}

else

{

prisv(xk,xb0);

xk[0]-=h;//dvizhenie vlevo po osi x1

ft1=func1(xk[0],xk[1],xk[2])+k*(1/(g1(xk[0],xk[1],xk[2])) +1/(g2(xk[0],xk[1],xk[2]))+1/(g3(xk[0],xk[1],xk[2]))+1/(g4(xk[0],xk[1],xk[2])));

if(g1(xk[0],xk[1],xk[2]) && g2(xk[0],xk[1],xk[2]) && g3(xk[0],xk[1],xk[2]) && g4(xk[0],xk[1],xk[2])) break;

if (ft1<fb)

{

prisv(xf,xk);

ff=ft1;

}

else

{

prisv(xk,xb0);

xk[1]+=h; //vverh

ft1=func1(xk[0],xk[1],xk[2])+k*(1/(g1(xk[0],xk[1],xk[2])) +1/(g2(xk[0],xk[1],xk[2]))+1/(g3(xk[0],xk[1],xk[2]))+1/(g4(xk[0],xk[1],xk[2])));

if(g1(xk[0],xk[1],xk[2]) && g2(xk[0],xk[1],xk[2]) && g3(xk[0],xk[1],xk[2]) && g4(xk[0],xk[1],xk[2])) break;

if (ft1<fb)

{

ff=ft1;

prisv(xf,xk);

}

else

{

prisv(xk,xb0);

xk[1]-=h; //vniz

ft1=func1(xk[0],xk[1],xk[2]);+k*(1/(g1(xk[0],xk[1],xk[2])) +1/(g2(xk[0],xk[1],xk[2]))+1/(g3(xk[0],xk[1],xk[2]))+1/(g4(xk[0],xk[1],xk[2])));

if(g1(xk[0],xk[1],xk[2]) && g2(xk[0],xk[1],xk[2]) && g3(xk[0],xk[1],xk[2]) && g4(xk[0],xk[1],xk[2])) break;

if (ft1<fb)

{

ff=ft1;

prisv(xf,xk);

}

}

}

}

 

}

}

 

}

 

void huk_jivs(coord x0, float k)

{

float h, eps, fp;

coord p;

 

eps=0.00001;

h=0.0001;

xb[0][0]=x0[0];

xb[0][1]=x0[1];

xb[0][2]=x0[2];

while (h>eps)

{

fb[0]=func1(xb[0][0],xb[0][1],xb[0][2])+k*(1/(g1(xb[0][0],xb[0][1],xb[0][2])) +1/(g2(xb[0][0],xb[0][1],xb[0][2]))+1/(g3(xb[0][0],xb[0][1],xb[0][2]))+1/(g4(xb[0][0],xb[0][1],xb[0][2])));

issled(xb[0],fb[0],h,k);

while ((h>eps) && (xb[0][0]==xf[0]) && (xb[0][1]==xf[1]) && (xb[0][2]==xf[2]))

{

h=h/2;

issled(xb[0],fb[0],h,k); //issled poisk do teh por poka ne umenshim

}

if (xb[0]!=xf) //xf-new basic point; ff - znachenie v xf;

{

do

{

prisv(xb[1],xf);

fb[1]=ff;

p[0]=xb[1][0]+(xb[1][0]-xb[0][0]);

p[1]=xb[1][1]+(xb[1][1]-xb[0][1]);

p[2]=xb[1][1]+(xb[1][2]-xb[0][2]);

fp=func1(p[0],p[1],p[2])+k*(1/(g1(p[0],p[1],p[2])) +1/(g2(p[0],p[1],p[2]))+1/(g3(p[0],p[1],p[2]))+1/(g4(p[0],p[1],p[2])));

issled(p,fp,h,k);

if (p!=xf)

prisv(xb[0],xb[1]);

}

while (ff<fb[1]);

prisv(xb[0],xb[1]);

}

}

}

 

int _tmain(int argc, _TCHAR* argv[])

{

setlocale(LC_ALL,"Russian");

coord xn,xn1, x[1000];

float eps,rk,b,y;

int k;

k=0;

eps=0.01;

 

x[0][0]=0.1;

x[0][1]=2;

x[0][2]=2.1;

rk=10;

b=10;

cout<<"Координаты начальной точки"<<"\n"<<" x1 = "<<x[0][0]<<"\n"<<" x2 = "<<x[0][1]<<"\n"<<" x3 = "<<x[0][2];

 

 

huk_jivs(x[0],rk);

k++;

x[1][0]=xb[1][0];

x[1][1]=xb[1][1];

x[1][2]=xb[1][2];

cout<<"\n"<<" Итерация 1:"<<"\n";

cout<<" x1 = "<<x[k][0]<<"\n x2 = "<<x[k][1]<<"\n"<<" x3 = "<<x[k][2]<<"\n rk = "<<rk;

fb[1]=func1(x[k][0],x[k][1],x[k][2]);

cout<<"\n Значение функции = "<<fb[1];

y=rk*(1/(g1(x[k][0],x[k][1],x[k][2])) +1/(g2(x[k][0],x[k][1],x[k][2]))+1/(g3(x[k][0],x[k][1],x[k][2]))+1/(g4(x[k][0],x[k][1],x[k][2])));

while (y>eps){

rk=rk/b;

huk_jivs(x[k],rk);

k++;

x[k][0]=xb[1][0];

x[k][1]=xb[1][1];

x[k][2]=xb[1][2];

cout<<"\n"<<" Итерация №"<<k<<":"<<"\n";

cout<<" x1 = "<<x[k][0]<<"\n x2 = "<<x[k][1]<<"\n"<<" x3 = "<<x[k][2]<<"\n rk = "<<rk;

fb[1]=func1(x[k][0],x[k][1],x[k][2]);

cout<<"\n Значение функции = "<<fb[1];

y=rk*(1/(g1(x[k][0],x[k][1],x[k][2])) +1/(g2(x[k][0],x[k][1],x[k][2]))+1/(g3(x[k][0],x[k][1],x[k][2]))+1/(g4(x[k][0],x[k][1],x[k][2])));

 

}

 

getch();

return 0;

}

 


1 | 2 | 3 | 4 | 5 | 6 | 7 |

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



Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Студалл.Орг (0.014 сек.)