CoefficientsOrder: String;
Свойство CoefficientsOrder определяет переменные, используемые в функции.
Функцию определяет свойство ISmDerivative.Expression.
Для выполнения примера добавьте ссылку на системную сборку Stat.
Sub UserProc;
Var
AnDeriv: ISmDerivative;
ArgVals: Array[0..3] Of Double;
i, res, size: Integer;
Begin
AnDeriv := New SmDerivative.Create;
// Задаём выражение
для дифференцирования
AnDeriv.Expression := "A1 + A2 * A2 + A3 * A3 * A2";
// Указываем порядок переменных
AnDeriv.CoefficientsOrder := "A1;A2;A3;A4";
// Задаём переменные дифференцирования
AnDeriv.DiffVariables := "A2;A1";
// Задаём значения переменных
ArgVals[0] := 1.5;
ArgVals[1] := 2.0;
ArgVals[2] := 2.5;
ArgVals[3] := Double.Nan;
AnDeriv.VariablesValues := ArgVals;
// Указываем, что рассчитываются аналитические производные
AnDEriv.UseAnalyticCalc := True;
res := AnDeriv.Execute;
// Выводим результаты расчёта
Debug.WriteLine("Статус выполнения: " + res.ToString);
Debug.WriteLine(AnDeriv.Errors);
For i := 0 To AnDeriv.Warnings.Length - 1 Do
Debug.WriteLine(AnDeriv.Warnings[i]);
End For;
If res = 0 Then
Debug.WriteLine("== Аналитические производные ==");
size := AnDeriv.DerivativeExpressions.Length;
For i := 0 To size - 1 Do
Debug.Write(" - выражение производной: ");
Debug.WriteLine(AnDeriv.DerivativeExpressions[i]);
Debug.Write(" - значение производной: ");
Debug.WriteLine(AnDeriv.DerivativeValues[i]);
Debug.WriteLine("");
End For;
Debug.WriteLine("Значение функции: " + Anderiv.FunctionValue.ToString);
End If;
Debug.WriteLine("");
// Указываем, что рассчитываются приближенные значения частных производных
AnDEriv.UseAnalyticCalc := False;
// Задаём приращение аргумента
AnDEriv.Increment := 0.00000003;
res := AnDeriv.Execute;
// Выводим результаты расчёта
Debug.WriteLine("Статус выполнения: " + res.ToString);
Debug.WriteLine(AnDeriv.Errors);
For i := 0 To AnDeriv.Warnings.Length - 1 Do
Debug.WriteLine(AnDeriv.Warnings[i]);
End For;
If res = 0 Then
Debug.WriteLine("== Приближенные значения частных производных ==");
size := AnDeriv.DerivativeValues.Length;
For i := 0 To size - 1 Do
Debug.WriteLine(AnDeriv.DerivativeValues[i]);
End For;
Debug.WriteLine("Значение функции: " + Anderiv.FunctionValue.ToString);
End If;
End Sub UserProc;
После выполнения примера в окно консоли будут выведены результаты вычисления функции с помощью аналитических производных и с помощью приближенных значений частных производных.
См. также: