Скачиваний:
5
Добавлен:
01.05.2014
Размер:
1.21 Кб
Скачать
#include <stdio.h>
#include <math.h>
double x[10] = {0.4,0.5,0.9,1,1.4,1.8,2.1,2.3,2.6,3};
double A[10] = {0.08,0.1,0.19,0.22,0.51,1.69,1.87,1.06,0.44,0.19};
double An[10];

// vi4islenie funkcii

double F (double x, double x0)
{
	double A;
	A = 1.95/(1+10*((x-x0)*(x-x0)));
	return A;
}
//vi4islenie celevoi funcii
double CF (double x0)
{
	double W = 0;
	int i;
		for (i = 0; i <= 9; i++)
		{
			An[i] = F(x[i], x0);
			W = W + ((An[i] - A[i])*(An[i] - A[i]));
		}
		return W;
}

void main (void)
{
	double d = 0.0001;
	double X1= 1;
	double Xmin, Wxx, xx, A1, A2, Wmin, W1, W2, W3, X3, X2;
	do
		{
		X2=X1+d;
		W1=CF(X1);
		W2=CF(X2);
		if (W1 > W2) X3=X1+2*d;
		if ((W1<W2) || (W1=W2)) X3=X1-d;
		W3=CF(X3);
  //nahodim minimalnoe W
		Wmin=W1;
		Xmin=X1;
		if (W2<W1) Wmin=W2, Xmin=X2;
		if (Wmin>W3) Wmin=W3, Xmin=X3;
 //ispolzovanie kvadrati4noi aproksimacii
		A1= (W2-W1)/(X2-X1);
		A2= ((W3-W1)/(X3-X1)-(W2-W1)/(X2-X1))/(X3-X2);
		xx=0.5*(X1+X2-A1/A2);
		Wxx=CF(xx);
		X1=xx;
	}
 //proverka okon4aniya
	while (fabs(Wmin-Wxx)>d || fabs(Xmin-xx)>d);
	printf("L0 =  %f\n", xx);//osnovnaya peremennaya
	printf("W =  %f\n", CF(xx));//celevaya funkciya
}
Соседние файлы в папке Лабораторная работа №3