三元三次多项式储存并求值
时间: 2023-05-29 08:06:17 浏览: 236
三元三次多项式可以表示为:
p(x,y,z) = a00 + a10*x + a01*y + a20*x^2 + a11*xy + a02*z + a30*x^3 + a21*x^2y + a12*xy^2 + a03*z^3 + a22*x*y*z + a31*x^3y + a13*xy^3 + ...
其中,a00, a10, a01, a20, a11, a02, a30, a21, a12, a03, a22, a31, a13 等系数都是实数。
可以使用一个三维数组 coef 存储这些系数,其中 coef[i][j][k] 表示 x 的指数为 i,y 的指数为 j,z 的指数为 k 的系数。
例如,coef[2][1][0] 表示 x^2*y 的系数,coef[3][0][1] 表示 x^3*z 的系数。
求值时,给定 x,y,z 的值,可以通过以下方式计算 p(x,y,z) 的值:
```python
def evaluate(coef, x, y, z):
n = len(coef)
m = len(coef[0])
l = len(coef[0][0])
result = 0
for i in range(n):
for j in range(m):
for k in range(l):
result += coef[i][j][k] * (x ** i) * (y ** j) * (z ** k)
return result
```
这个函数使用三重循环遍历 coef 数组,计算每一项系数与对应的 x,y,z 的幂的乘积,并累加到结果中。最终返回结果即可。
例如,对于三元三次多项式 p(x,y,z) = 2 + 3x + 4y + 5x^2 + 6xy + 7z + 8x^3 + 9x^2y + 10xy^2 + 11z^3 + 12xyz + 13x^3y + 14xy^3,可以将系数存储在一个三维数组中:
```python
coef = [
[[2, 3, 0, 5, 0, 0, 8, 0, 0, 0, 0, 0, 13],
[4, 0, 6, 0, 11, 0, 0, 9, 10, 0, 12, 0, 14],
[0, 0, 7, 0, 0, 1, 0, 0, 0, 11, 0, 0, 0]],
[[0, 0, 0, 0, 0, 0, 0, 21, 0, 0, 0, 39, 0],
[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]],
[[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]]
]
```
然后,给定 x=1,y=2,z=3,可以调用 evaluate 函数计算 p(1,2,3) 的值:
```python
>>> evaluate(coef, 1, 2, 3)
627
```
因此,p(1,2,3) = 627。
阅读全文