【发布时间】:2018-05-01 11:33:57
【问题描述】:
我有一个 MATLAB 代码,它生成一个 3 变量函数 f(x, y, z) 的一般泰勒级数的指数。在下面的示例中,我正在计算三阶泰勒级数。
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。
【问题讨论】: