计算P(x,y)=∑(i=0---i=3)∑(j=0---j=4)a(ij)X^iY^j;的值,可以直接带入求,但如果出现i=30,j=30,过于麻烦
给出以下算法,P(x,y)=∑(i=0---i=3)∑(j=0---j=4)a(ij)X^iY^j==》P(x,y)=∑(i=0---i=3)[∑(i=0---i=3)a(ij)X^i]*Y^j==》根据前一篇博客一维多项式的求解,得到,∑(j=0---j=4)a(ij)X^j的递推表达式为R(n-1)=a(i,n-1)X^j==》Rj=Rj+1y+aijX^j
将aij按如下排列
Y^4 Y^3 Y^2 Y^1 1 排列
1
X^1
X^2
X^3
按照如下算法即可求得
public class 多项式计算2 {
public static void main(String[] args) {
int result;
int x, y;
int a[][] = { { 1, 2, 3, 4, 5 }, { 6, 7, 8, 9, 10 }, //多项式的系数
{ 11, 12, 13, 14, 15 }, { 16, 17, 18, 19, 20 } };
x = 1; //x=1,y=2时的值
y = 2;
result = polynomial(a, 4, 5, x, y);
System.out.println(result);
}
private static int polynomial(int[][] a, int m, int n, int x, int y) {
int result, temp, tt;
result = 0;
tt = 1;
for (int i = 0; i < m; i++) { //遍历m行
temp = a[i][n - 1] * tt; //temp是当i,j=4时的值,此时y的幂为0,为纯x
for (int j = n - 2; j >= 0; j--) { //遍历n列
temp = temp * y + a[i][j] * tt; //每次乘xy杂交项中y系数+1,x的系数不变
}
result += temp;
tt *= x; //每行x的幂+1
}
return result;
}
}