Студопедия.Орг Главная | Случайная страница | Контакты | Мы поможем в написании вашей работы!  
 

Return Norma;



}

//----------------------------------------------------------------------------

void CopyMatrix(double SourseMatrix[2], double DestMatrix[2])

{

DestMatrix[0]=SourseMatrix[0];

DestMatrix[1]=SourseMatrix[1];

}

//----------------------------------------------------------------------------

int NewtonsMetod(double Accuracy,_Result InitialApproximation, _Result &Result)

{

double xy[2];

double xy_previous[2];

double Jacobian[4];

double MatrixOfFuntions[2];

double InverseJacobian[4];

double MatrixResult[2];

int CountOfIterations=1;

xy_previous[0]=InitialApproximation.x;

xy_previous[1]=InitialApproximation.y;

MakeJacobian(xy_previous,Jacobian);

if (DetMatrix(Jacobian)==0)

{

cout<<"Singular Jacobian!"<<endl;

Return 0;

}

MakeMatrixOfFuntions(xy_previous,MatrixOfFuntions);

InverseMatrix(Jacobian,InverseJacobian);

ProductMatrixes(InverseJacobian,MatrixOfFuntions,MatrixResult);

DifferenceMatrixes(xy_previous,MatrixResult,xy);

while(NormaOfDifference(xy,xy_previous)>=Accuracy)

{

CopyMatrix(xy,xy_previous);

MakeJacobian(xy_previous,Jacobian);

if (DetMatrix(Jacobian)==0)

{

cout<<"Singular Jacobian! Accuracy isn\'t reached!"<<endl;

Break;

}

MakeMatrixOfFuntions(xy_previous,MatrixOfFuntions);

InverseMatrix(Jacobian,InverseJacobian);

ProductMatrixes(InverseJacobian,MatrixOfFuntions,MatrixResult);

DifferenceMatrixes(xy_previous,MatrixResult,xy);

CountOfIterations++;

}

Result.x=xy[0];

Result.y=xy[1];





Дата публикования: 2015-04-10; Прочитано: 150 | Нарушение авторского права страницы | Мы поможем в написании вашей работы!



studopedia.org - Студопедия.Орг - 2014-2024 год. Студопедия не является автором материалов, которые размещены. Но предоставляет возможность бесплатного использования (0.006 с)...