迭代 Julia 的动态多项式中的项
Iterate over terms in Julia's dynamic polynomials
在 Julia 中,我使用 DynamicPolynomials
定义了一个多项式,例如:
using DynamicPolynomials
@polyvar x y
p = x + y + x^2 + x*y + y^2
cx = rand(10)
cy = rand(10)
现在我想迭代多项式的项并计算 x=cx[i]
和 y=cy[i]
处的项。我怎样才能做到这一点?最后,我想创建一个矩阵 M[i, j] = t[j]([cx[i], cy[i]])
,其中 t[j]
是多项式 p
.
的第 j 项
我想你可以直接做。这是一个例子:
using DynamicPolynomials
@polyvar x y
p = x + y + x^2 + x*y + y^2
cx = 1:10
cy = 11:20
现在
julia> res = [t(x=>vx,y=>vy) for (vx, vy) in zip(cx,cy), t in p]
10×5 Array{Int64,2}:
1 11 121 1 11
4 24 144 2 12
9 39 169 3 13
16 56 196 4 14
25 75 225 5 15
36 96 256 6 16
49 119 289 7 17
64 144 324 8 18
81 171 361 9 19
100 200 400 10 20
您可以通过以下方式对行和列进行注释,以更轻松地检查您是否获得了所需内容:
julia> using NamedArrays
julia> NamedArray(res, (collect(zip(cx,cy)), collect(p)), ("point", "term"))
10×5 Named Array{Int64,2}
point ╲ term │ x^2 xy y^2 x y
─────────────┼────────────────────────
(1, 11) │ 1 11 121 1 11
(2, 12) │ 4 24 144 2 12
(3, 13) │ 9 39 169 3 13
(4, 14) │ 16 56 196 4 14
(5, 15) │ 25 75 225 5 15
(6, 16) │ 36 96 256 6 16
(7, 17) │ 49 119 289 7 17
(8, 18) │ 64 144 324 8 18
(9, 19) │ 81 171 361 9 19
(10, 20) │ 100 200 400 10 20
在 Julia 中,我使用 DynamicPolynomials
定义了一个多项式,例如:
using DynamicPolynomials
@polyvar x y
p = x + y + x^2 + x*y + y^2
cx = rand(10)
cy = rand(10)
现在我想迭代多项式的项并计算 x=cx[i]
和 y=cy[i]
处的项。我怎样才能做到这一点?最后,我想创建一个矩阵 M[i, j] = t[j]([cx[i], cy[i]])
,其中 t[j]
是多项式 p
.
我想你可以直接做。这是一个例子:
using DynamicPolynomials
@polyvar x y
p = x + y + x^2 + x*y + y^2
cx = 1:10
cy = 11:20
现在
julia> res = [t(x=>vx,y=>vy) for (vx, vy) in zip(cx,cy), t in p]
10×5 Array{Int64,2}:
1 11 121 1 11
4 24 144 2 12
9 39 169 3 13
16 56 196 4 14
25 75 225 5 15
36 96 256 6 16
49 119 289 7 17
64 144 324 8 18
81 171 361 9 19
100 200 400 10 20
您可以通过以下方式对行和列进行注释,以更轻松地检查您是否获得了所需内容:
julia> using NamedArrays
julia> NamedArray(res, (collect(zip(cx,cy)), collect(p)), ("point", "term"))
10×5 Named Array{Int64,2}
point ╲ term │ x^2 xy y^2 x y
─────────────┼────────────────────────
(1, 11) │ 1 11 121 1 11
(2, 12) │ 4 24 144 2 12
(3, 13) │ 9 39 169 3 13
(4, 14) │ 16 56 196 4 14
(5, 15) │ 25 75 225 5 15
(6, 16) │ 36 96 256 6 16
(7, 17) │ 49 119 289 7 17
(8, 18) │ 64 144 324 8 18
(9, 19) │ 81 171 361 9 19
(10, 20) │ 100 200 400 10 20