Java数据结构:二维多项式的求解

计算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                          排列

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;
	}
}

猜你喜欢

转载自blog.csdn.net/qq_42192693/article/details/82562024