Что нового
  • Что бы вступить в ряды "Принятый кодер" Вам нужно:
    Написать 10 полезных сообщений или тем и Получить 10 симпатий.
    Для того кто не хочет терять время,может пожертвовать средства для поддержки сервеса, и вступить в ряды VIP на месяц, дополнительная информация в лс.

  • Пользаватели которые будут спамить, уходят в бан без предупреждения. Спам сообщения определяется администрацией и модератором.

  • Гость, Что бы Вы хотели увидеть на нашем Форуме? Изложить свои идеи и пожелания по улучшению форума Вы можете поделиться с нами здесь. ----> Перейдите сюда
  • Все пользователи не прошедшие проверку электронной почты будут заблокированы. Все вопросы с разблокировкой обращайтесь по адресу электронной почте : info@guardianelinks.com . Не пришло сообщение о проверке или о сбросе также сообщите нам.

Array And Matrix Operations With Analytics 2.2

Sascha

Заместитель Администратора
Команда форума
Администратор
Регистрация
9 Май 2015
Сообщения
1,071
Баллы
155
Возраст
51
New version 2.2 of

Пожалуйста Авторизируйтесь или Зарегистрируйтесь для просмотра скрытого текста.

includes total support of operations with N-element arrays and MxN matrices. The operations realized in the Linear Algebra extension package. Array and matrix operations allow advanced calculations with small, compact formulae.

Let us consider the examples of using the array/matrix operations for solving some common math/statistics problems. First of all we need to add special variables to the translator instance:


var
av: TArray<TFloat>;
mv: TArray<TArray<TFloat>>;
begin
translator:= TTranslator.Create;

translator.Add('µ', 0.0);

av:=TArray<TFloat>.Create(0.2, -0.1, -0.25, 0.4);
translator.Add('A', av);

av:=TArray<TFloat>.Create(-0.2, 0.2, -0.1, 0.25, 0.35, 0.15, -0.04, 0.01, -0.12, 0.1);
translator.Add('B', av);

SetLength(mv, 4, 3);
mv[0,0]:= 0.5; mv[0,1]:=-0.4; mv[0,2]:= 0.33;
mv[1,0]:=-0.3; mv[1,1]:= 0.1; mv[1,2]:= 0.28;
mv[2,0]:=-0.4; mv[2,1]:=-0.2; mv[2,2]:=-0.75;
mv[3,0]:=0.44; mv[3,1]:=0.25; mv[3,2]:= 1.00;
translator.Add('M', mv);
end;

The code above adds to the translator instance the &#145;µ&#146; variable with value 0.0, the array variable &#145;A&#146; with 4 components, the array variable &#145;B&#146; with 10 components and the 4x3 matrix &#145;M&#146;.

The first problem to solve is calculation of statistics square deviation from the mean value for the &#145;B&#146; array. Math formula for the deviation of discrete random variable is (

Пожалуйста Авторизируйтесь или Зарегистрируйтесь для просмотра скрытого текста.

):


where µ is the mean value


N is the number of elements.

This formula can be evaluated with using array operations by the following code:

var
m, d: TValue;
begin
m:= translator.Calculate('∑B/#B');
translator.Variables['µ'].Value:= m;
d:= translator.Calculate('∑((B-µ)^2)/#B');
// print the &#145;d&#146; value
end;
First we calculate the mean value. The number operator &#145;#&#146; in the formula returns the array element count. Then we assign the calculated value to the &#145;µ&#146; variable and, finally, calculate the deviation value. Notice that there are the parentheses for the square operation in the formula, because the summation operation has higher priority. Here is the output for the evaluation:

µ = ∑B/#B = 0.06
D = ∑((B-µ)^2)/#B = 0.02876


Next problem is solving an over-determined linear equation system with the least squares approach (

Пожалуйста Авторизируйтесь или Зарегистрируйтесь для просмотра скрытого текста.

). Let the system is set up by the &#145;M&#146; matrix and the &#145;A&#146; vector. Then the solution &#145;X&#146; is defined by the formula:



where MT &#150; is the transposed matrix, 1 means the inversed matrix.

This formula can be evaluated with the Analytics library as the following &#145;M'*A/(M'*M)&#146;. Here the apostrophe &#145;'&#146; operator is for transposition operation and the division is equivalent to the multiplication by the inversed matrix. Evaluating the formula we get the following output:

X = M'*A/(M'*M) = TArray<TFloat>[3]=
(0.459953357586789 0.163947437790482 0.113927221302585 )

Here the &#145;X&#146; array is the solution vector that minimizes the square error for the over-determined system.

As can be seen from the examples above, the realized array/matrix operations allow easily solve complicated problems with small, compact formulae. The complicated code for the array/matrix operations implemented inside the Analytics library and totally integrated with analytical evaluations. For an example, linear algebra operations allow solving so called &#145;matrix&#146; ordinary differential equations (

Пожалуйста Авторизируйтесь или Зарегистрируйтесь для просмотра скрытого текста.

).

The TMS Analytics and Physics pack version 2.2 can be downloaded

Пожалуйста Авторизируйтесь или Зарегистрируйтесь для просмотра скрытого текста.

. Total source code of the example application can be downloaded

Пожалуйста Авторизируйтесь или Зарегистрируйтесь для просмотра скрытого текста.

.


Пожалуйста Авторизируйтесь или Зарегистрируйтесь для просмотра скрытого текста.

 
Вверх