Toggle navigation
Images.Elk.pl
metoda gaussa seidla
#include
#include
#include
using namespace std;
float f(float x1, float x2, float x3){
float funk;
funk=4*x1*x1+6*x2*x2+3*x3*x3-0.9*x1*x2-2.6*x1*x3-6.5*x2*x3-16*x1+36*x2+24*x3+644;
return funk;
};
int main(int argc, char *argv[]) {
float x10,x20,x30,x1,x2,x3,k,e,xL,xR,a,b,w,p;
printf ("podaj x1 x2 x3 E\n");
scanf("%f %f %f %f",&x10,&x20,&x30,&w);
x1=x10; x2=x20; x3=x30;
int n=0;
p=1000; e=0.5; k=(sqrt(5)-1)/2;
while (p>w){
a=-100; b=100;
xL=b-k*(b-a); xR=a+k*(b-a);
while (b-a>e){
if (f(xL,x2,x3)
b=xR; xR=xL; xL=b-k*(b-a);
}
else{
a=xL; xL=xR; xR=a+k*(b-a);
}
}
x1=(a+b)/2;
a=-100; b=100;
xL=b-k*(b-a); xR=a+k*(b-a);
while ((b-a)>e){
if (f(x1,xL,x3)
b=xR; xR=xL; xL=b-k*(b-a);
}
else{
a=xL; xL=xR; xR=a+k*(b-a);
}
}
x2=(a+b)/2;
a=-100; b=100;
xL=b-k*(b-a); xR=a+k*(b-a);
while ((b-a)>e){
if (f(x1,x2,xL)
b=xR; xR=xL; xL=b-k*(b-a);
}
else{
a=xL; xL=xR; xR=a+k*(b-a);
}
}
x3=(a+b)/2;
p=sqrt((x10-x1)*(x10-x1)+(x20-x2)*(x20-x2)+(x30-x3)*(x30-x3));//odległość
x10=x1; x20=x2; x30=x3;
n++;
}
float wynik;
wynik=f(x1,x2,x3);
printf("%f %f %f\nWartosc funkcji=%f\nn=%d\n",x1,x2,x3,wynik,n);
system("PAUSE");
return EXIT_SUCCESS;
}
Wyszukiwarka
Podobne podstrony:
ćw 08 Metoda Gaussa Seidla
Metoda eliminacji Gaussa
Metoda eliminacji Gaussa
Metoda eliminacji Gaussa (1)
32 Wyznaczanie modułu piezoelektrycznego d metodą statyczną
całkowanie num metoda trapezów
Metoda kinesiotapingu w wybranych przypadkach ortopedycznych
D Kierzkowska Metoda na wagę złota
Badanie czystości metodą klasyczną
Metoda symboliczna
Metoda Hahna
więcej podobnych podstron