![]() |
Главная Случайная страница Контакты | Мы поможем в написании вашей работы! | |
|
}
//----------------------------------------------------------------------------
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; Прочитано: 162 | Нарушение авторского права страницы | Мы поможем в написании вашей работы!