У меня есть код MATLAB, который генерирует показатель общего ряда Тейлора функции с тремя переменными f (x, y, z). В приведенном ниже примере я вычисляю ряд Тейлора 3-го порядка.
order = 3;
nTuple = 3;
allExponents = [];
for n = 1 : order
[~,x] = nsumk(nTuple, n); % nsumk can be downloaded from: https://www.mathworks.com/matlabcentral/fileexchange/28340-nsumk
allExponents = [allExponents; x]
end
Функция генерирует следующие коэффициенты:
0 0 1 % This means z with exponent 1; x and y with zero exponent.
0 1 0 % This means y with exponent 1; x and z with zero exponent.
1 0 0 % This means x with exponent 1; y and z with zero exponent.
0 0 2
0 1 1
0 2 0
1 0 1
1 1 0
2 0 0
0 0 3
0 1 2
0 2 1 % This means x with exponent 0, y with exponent 2 and z with exponent 1, i,e, y^2*z
0 3 0
1 0 2
1 1 1
1 2 0
2 0 1
2 1 0 % This means x with exponent 2 and y with exponent 1 and z with exponent 0, i,e, x^2*y
3 0 0
Как мне отсортировать их в следующей форме (для ясности пустая строка между ними):
1 0 0 % x
0 1 0 % y
0 0 1 % z
2 0 0 % x^2
0 2 0 % y^2
0 0 2 % z^2
3 0 0 % x^3
0 3 0 % y^3
0 0 3 % z^3
1 1 0 % x*y
1 0 1 % x*z
0 1 1 % y*z
1 2 0 % x*y^2
1 0 2 % x*z^2
0 1 2 % y*z^2
2 1 0 % x^2*y
2 0 1 % x^2*z
0 2 1 % y^2*z
1 1 1 % x*y*z
Обновление:
Порядок следующий:
Сначала x ^ n, y ^ n, z ^ n, где n от 1 до порядка ряда Тейлора, в данном конкретном примере 3.
Затем кросс-умножение каждой из двух переменных, показатели которых добавляются к 2, например, xy, xz и yz.
Затем кросс-умножение каждых двух переменных, показатели которых добавляются к 3, с первой переменной, имеющей показатель 1, то есть xy ^ 2, xz ^ 2, yz ^ 2.
Затем кросс-умножение каждых двух переменных, показатели степени которых прибавляются к 3, с первой переменной, имеющей показатель 2, то есть x ^ 2y, x ^ 2z, y ^ 2z.
Наконец, умножение всех трех переменных, показатели которых добавляют к 3, т. Е. Xyz.