ISmNonLinearEquations.InitExpression

Синтаксис Fore

InitExpression: Integer;

Синтаксис Fore.NET

InitExpression(): integer;

Описание

Метод InitExpression осуществляет проверку корректности введенных переменных и уравнений без выполнения статистического метода.

Комментарии

Если входные параметры заданы корректно, то возвращает значение «0», иначе возвращает код ошибки, просмотреть которую можно с помощью свойства IStatMethod.ErrorByStatus.

Пример Fore

Для выполнения примера добавьте ссылку на системную сборку Stat.

Sub UserProc;
Var
    Eqs: ISmNonLinearEquations;
    Funcs: Array[0..2Of String;
    inits: Array[0..2Of Double;
Begin
    Eqs := New SmNonLinearEquations.Create;
    funcs[0] := "X1-22+0.5*X2-X3";
    funcs[1] := "X2-26.5+2*X1+0.5*X3";
    funcs[2] := "X3+9-X1+6*X2";
    Eqs.Functions := Funcs;
    Eqs.CoefficientsOrder := "X1;X2";
    Eqs.CalcInitExpressionMode := CalcInitExpressionType.Manual;
    inits[0] := 10//x1
    inits[1] := 7//x2
    inits[2] := -1//x3
    Eqs.InitApproximation := inits;
    Eqs.MethodType := NonLinearEquationsType.MinErrorGaussNewtonMethod;
    Eqs.Tolerance := 0.0001;
    Debug.WriteLine("Код ошибки: " + Eqs.InitExpression.ToString);
    Debug.WriteLine(Eqs.ErrorByStatus(Eqs.InitExpression));
End Sub UserProc;

В результате выполнения примера в окно консоли будет выведен код и текст ошибки:

Код ошибки: 102

Error 102: Количество начальных приближений не равно числу коэффициентов

Пример Fore.NET

Необходимые требования и результат выполнения примера Fore.NET совпадают с примером Fore.

Imports Prognoz.Platform.Interop.Stat;

Public Shared Sub Main(Params: StartParams);
Var
    Eqs: ISmNonLinearEquations;
    Funcs: Array[0..2Of String;
    inits: Array[0..2Of Double;
    Solution: System.Array;
Begin
    Eqs := New SmNonLinearEquations.Create();
    funcs[0] := "X1-22+0.5*X2-X3";
    funcs[1] := "X2-26.5+2*X1+0.5*X3";
    funcs[2] := "X3+9-X1+6*X2";
    Eqs.Functions := Funcs;
    Eqs.CoefficientsOrder := "X1;X2";
    Eqs.CalcInitExpressionMode := CalcInitExpressionType.cietManual;
    inits[0] := 10//x1
    inits[1] := 7//x2
    inits[2] := -1//x3
    Eqs.InitApproximation := inits;
    Eqs.MethodType := NonLinearEquationsType.nletMinErrorGaussNewtonMethod;
    Eqs.Tolerance := 0.0001;
    System.Diagnostics.Debug.WriteLine("Код ошибки: " + Eqs.InitExpression().ToString());
    System.Diagnostics.Debug.WriteLine(Eqs.ErrorByStatus[Eqs.InitExpression()]);
End Sub;

См. также:

ISmNonLinearEquations