在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个项。
答案 0 :(得分:1)
我想你可以直接做。这是一个示例:
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