ISlSimultaneousEquations.Add

Синтаксис

Add: ISlSimultaneousEquation;

Описание

Свойство Add добавляет уравнение в коллекцию.

Пример

Sub Main;

Var

can,fra,ger,ita,jpn,us,uk: Array[20] Of Double;

res: Integer;

simeq: SmSimultaneousSystem;

eqs: ISlSimultaneousEquations;

eq: ISlSimultaneousEquation;

Sub Print(Data: Array Of Double);

Var

i: Integer;

CI: ICultureInfo;

Begin

CI := CultureInfo.Current;

Debug.WriteLine("---Begin---");

For i := 0 To Data.Length - 1 Do

If Double.IsNan(Data[i]) Then

Debug.WriteLine("---empty---");

Else

Debug.WriteLine(CI.FormatDoublePrec(Data[i], 4));

End If;

End For;

Debug.WriteLine("---End---");

End Sub Print;

Begin

//значения can,fra,ger,ita,jpn,us,uk

can[00] := 6209; fra[00] := 4110; ger[00] := 3415; ita[00] := 2822; jpn[00] :=1475; uk[00] :=5320; us[00] :=8680;

can[01] := 6385; fra[01] := 4280; ger[01] := 3673; ita[01] := 3023; jpn[01] :=1649; uk[01] :=5484; us[01] :=9132;

can[02] := 6752; fra[02] := 4459; ger[02] := 4013; ita[02] := 3131; jpn[02] :=1787; uk[02] :=5517; us[02] :=9213;

can[03] := 6837; fra[03] := 4545; ger[03] := 4278; ita[03] := 3351; jpn[03] :=1884; uk[03] :=5791; us[03] :=9450;

can[04] := 6495; fra[04] := 4664; ger[04] := 4577; ita[04] := 3463; jpn[04] :=1972; uk[04] :=5971; us[04] :=9177;

can[05] := 6907; fra[05] := 4861; ger[05] := 5135; ita[05] := 3686; jpn[05] :=2108; uk[05] :=6158; us[05] :=9756;

can[06] := 7349; fra[06] := 5195; ger[06] := 5388; ita[06] := 3815; jpn[06] :=2249; uk[06] :=6238; us[06] :=9756;

can[07] := 7213; fra[07] := 5389; ger[07] := 5610; ita[07] := 3960; jpn[07] :=2394; uk[07] :=6322; us[07] :=9724;

can[08] := 7061; fra[08] := 5463; ger[08] := 5787; ita[08] := 4119; jpn[08] :=2505; uk[08] :=6340; us[08] :=9476;

can[09] := 7180; fra[09] := 5610; ger[09] := 6181; ita[09] := 4351; jpn[09] :=2714; uk[09] :=6569; us[09] :=9913;

can[10] := 7132; fra[10] := 5948; ger[10] := 6633; ita[10] := 4641; jpn[10] :=3052; uk[10] :=6813; us[10] :=9974;

can[11] := 7137; fra[11] := 6218; ger[11] := 6910; ita[11] := 5008; jpn[11] :=3453; uk[11] :=6974; us[11] :=10046;

can[12] := 7473; fra[12] := 6521; ger[12] := 7146; ita[12] := 5305; jpn[12] :=3666; uk[12] :=6994; us[12] :=10467;

can[13] := 7722; fra[13] := 6788; ger[13] := 7248; ita[13] := 5611; jpn[13] :=4008; uk[13] :=7220; us[13] :=10740;

can[14] := 8088; fra[14] := 7222; ger[14] := 7689; ita[14] := 5693; jpn[14] :=4486; uk[14] :=7570; us[14] :=11157;

can[15] := 8516; fra[15] := 7486; ger[15] := 8046; ita[15] := 5804; jpn[15] :=4663; uk[15] :=7686; us[15] :=11738;

can[16] := 8941; fra[16] := 7832; ger[16] := 8143; ita[16] := 6121; jpn[16] :=5115; uk[16] :=7811; us[16] :=12274;

can[17] := 9064; fra[17] := 8153; ger[17] := 8064; ita[17] := 6546; jpn[17] :=5655; uk[17] :=8012; us[17] :=12450;

can[18] := 9380; fra[18] := 8468; ger[18] := 8556; ita[18] := 6918; jpn[18] :=6358; uk[18] :=8265; us[18] :=12874;

simeq := New SmSimultaneousSystem.Create;

simeq.ModelPeriod.FirstPoint := 1;

simeq.ModelPeriod.LastPoint := 20;

simeq.MissingData.SpecifiedValue := 8000;

eqs := simeq.Equations;

// ПЕРВОЕ УРАВНЕНИЕ

eq := eqs.Add;

eq.DependentVariable.Value := can;

eq.EndogenousVariables.Add.Value := fra;

eq.EndogenousVariables.Add.Value := ger;

eq.ExogenousVariables.Add.Value := us;

eq.ExogenousVariables.Add.Value := uk;

eq.ExogenousVariables.Item(0).Include := False;

eq.Intercept.Mode := InterceptMode.None;

// ВТОРОЕ УРАВНЕНИЕ

eq := eqs.Add;

eq.DependentVariable.Value := fra;

eq.EndogenousVariables.Add.Value := ger;

eq.EndogenousVariables.Add.Value := ita;

eq.EndogenousVariables.Item(1).Include := False;

eq.ExogenousVariables.Add.Value := jpn;

eq.ExogenousVariables.Add.Value := us;

res := simeq.Execute;

If res <> 0 Then

Debug.WriteLine(simeq.Errors);

Else

Debug.WriteLine("=== Первое уравнение, сглаженный ряд ===");

Print(eqs.Item(0).Fitted);

Debug.WriteLine("=== Второе уравнение, сглаженный ряд ===");

Print(eqs.Item(1).Fitted);

End If;

End Sub Main;

После выполнения примера в окно консоли будут выведены сглаженные ряды для обоих уравнений:

Module execution started

=== Первое уравнение, сглаженный ряд ===

---Begin---

6 270.1755

6 603.6276

6 665.4289

6 832.1785

6 622.5757

7 048.9348

7 048.3493

7 023.8115

6 840.3984

7 160.5493

7 202.3486

7 257.2739

7 574.7042

7 775.4459

8 080.9483

8 512.7449

8 916.2668

9 049.8578

9 369.4562

0.0000

---End---

=== Второе уравнение, сглаженный ряд ===

---Begin---

4 107.7875

4 292.9825

4 387.6608

4 625.5403

4 824.2956

4 996.7653

5 132.9945

5 276.5276

5 367.6929

5 620.7603

5 981.4053

6 315.2656

6 418.6615

6 753.9412

7 245.1199

7 388.0783

7 692.1813

8 124.8321

8 668.5000

-8.9925

---End---

Module execution finished

См. также:

ISlSimultaneousEquations