Java数据结构:多项式的乘法和除法

1,多项式的乘法:

A(x)*B(x)   思路:用A多项式的每一项乘以B多项式的每一项,相加

public class 一维多项式乘积 {
	public static void main(String[] args) {
		int a[] = { -4, 5, 2, -1, 3, 2 };
		int b[] = { -3, -2, 1, 3 };
		int R[] = new int[9]; // 9为多项式乘后的项数,利用公式
			// a.length+b.length-1=项数,用于储存乘积多项式的每一项的
		int m = a.length;
		int n = b.length;
		int k = R.length;
		for (int i = 0; i < m; i++) { // 外层循环,先确定第一个多项式的一个项
			for (int j = 0; j < n; j++) { // /内层循环遍历第二个多项式的每一项
				R[i + j] += a[i] * b[j];
			}
		}
		for (int i = 0; i < k; i++) {	//输出
			System.out.println(R[i]);
		}
	}
}

2,多项式的除法

A(x)/B(x)  思路:A除以B得到余数,在用A将B*余数减去。。。。等等

public class 一维多项式的除法 {
	public static void main(String[] args) {
		double a[] = { -3.0, 6.0, -3.0, 4.0, 2.0 };
		double b[] = { -1.0, 1.0, 1.0 };
		double R[] = new double[3];
		double L[] = new double[2];
		int m = a.length;
		int n = b.length;
		int k = R.length;
		int l = L.length;
		int ll = m - 1;
		int mm;
		for (int i = k; i > 0; i--) {
			R[i - 1] = a[ll] / b[n - 1];		//得到多项式系数
			mm = ll;
			for (int j = 1; j <= n - 1; j++) {		//遍历A多项式减去之前得到的余数*B多项式
				a[mm - 1] -= R[i - 1] * b[n - j - 1];
				mm -= 1;
			}
			ll -= 1;		
		}
		for (int i = 0; i < l; i++) {	//余数项系数
			L[i] = a[i];
		}
		for(int i=0;i<=2;i++){			//输出系数
			System.out.println("R("+i+")="+R[i]);
		}
		System.out.println();
		for(int i=0;i<=1;i++){		//输出余数
			System.out.println("L("+i+")="+L[i]);
		}
	}
}

猜你喜欢

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