Exemple #1
0
		public Polynome Dérivée () {
			var poly = new Polynome ();
			for (int k = 1; k <= Degré; k++) {
				poly.AddCoefficient (k - 1, k * GetCoefficient (k));
			}
			return poly;
		}
Exemple #2
0
		public static Polynome operator /(Polynome A, Polynome B) {
			var Q = new Polynome ();

			while (A.Degré >= B.Degré) {
				var C = new Polynome ();
				C.AddCoefficient ((A.Degré - B.Degré) * Convert.ToInt32(A.Degré >= B.Degré), A.GetCoefficient (A.Degré) / B.GetCoefficient (B.Degré));
				A -= B * C;
				Q += C;
			}

			return Q;
		}
Exemple #3
0
		public static Polynome operator *(Polynome A, Polynome B) {
			var poly = new Polynome ();

			for (int k = 0; k <= A.Degré; k++) {
				for (int l = 0; l <= B.Degré; l++) {
					poly.AddCoefficient (k+l, A.GetCoefficient (k) * B.GetCoefficient (l));
				}
			}
			return poly;
		}
Exemple #4
0
		public static Polynome operator -(Polynome A, Polynome B) {
			var poly = new Polynome ();

			for (int k = 0; k <= Math.Max(A.Degré, B.Degré); k++) {
				poly.AddCoefficient (k, A.GetCoefficient(k)-B.GetCoefficient(k));
			}
			return poly;
		}
Exemple #5
0
		public static Polynome[] Bezout(Polynome A, Polynome B) {
			Polynome Uk = 1;
			Polynome Vk = 0;
			Polynome UkPlus1 = 0;
			Polynome VkPlus1 = 1;

			while (B != 0) {
				var Uk_save = Uk;
				var Vk_save = Vk;
				Uk = UkPlus1;
				Vk = VkPlus1;

				UkPlus1 = Uk_save - UkPlus1 * (A / B);
				VkPlus1 = Vk_save - VkPlus1 * (A / B);

				var X = B;
				B = A % B;
				A = X;
			}
			return new Polynome[] { Uk / A.GetCoefficient (A.Degré), Vk / A.GetCoefficient (A.Degré) };
		}
Exemple #6
0
		public static Polynome[] Bezout (Polynome[] polynomes) {
			if (polynomes.Length == 1)
				return polynomes;

			var bezouts = new Polynome[polynomes.Length];
			for (int i = 0; i < bezouts.Length; i++) {
				bezouts [i] = 1;
			}

			for (int k = 1; k <= polynomes.Length; k++) {
				var pgcd = polynomes [0];
				for (int i = 1; i < polynomes.Length - k; i++) {
					pgcd = PGCD(pgcd, polynomes[i]);
				}
				var b = Bezout (pgcd, polynomes [polynomes.Length - k]);
				bezouts [bezouts.Length - k] *= b [1];
				for (int l = 0; l < bezouts.Length-k; l++) {
					bezouts [l] *= b [0];
				}
			}  
			return bezouts;
		}
Exemple #7
0
		public static Polynome PGCD (Polynome[] polynomes) {
			var pgcd = polynomes [0];
			for (int k = 1; k < polynomes.Length; k++) {
				pgcd = PGCD (polynomes [k], pgcd);
			}
			return pgcd;
		}
Exemple #8
0
		public static Polynome PGCD (Polynome A, Polynome B) {
			while (B != 0) {
				var X = B;
				B = A % B;
				A = X;
			}
			return A / A.GetCoefficient (A.Degré);
		}