aboutsummaryrefslogtreecommitdiffstats
path: root/buch/chapters/30-endlichekoerper/rechnungen/invbeispiel.maxima
blob: f227f3a308595cf3e6d294975149a987faa74e41 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
/*
 * invbeispiel.maxima
 *
 * (c) 2021 Prof Dr Andreas Müller, OST Ostschweizer Fachhochschule
 */

m: X^3 + 2*X^2 + 2*X + 3;

modulus:7;
factor(m);
modulus:false;

M: matrix(
	[ 0, 0, -3 ],
	[ 1, 0, -2 ],
	[ 0, 1, -2 ]
);
M: mod(M, 7);
M0: identfor(M);
M1: M;
M2: M.M1;

a0: 1;
a1: 2;
a2: 2;

a: a0 + a1*X + a2*X^2;

A: a0*M0 + a1*M1 + a2*M2;
A: mod(A, 7);

T: matrix(
	[ A[1,1], A[1,2], A[1,3], 1, 0, 0 ],
	[ A[2,1], A[2,2], A[2,3], 0, 1, 0 ],
	[ A[3,1], A[3,2], A[3,3], 0, 0, 1 ]
);

t: inv_mod(T[1,1], 7);
T[1]: mod(t * T[1], 7);
T[2]: mod(T[2] - T[2,1]*T[1], 7);
T[3]: mod(T[3] - T[3,1]*T[1], 7);
T;

t: inv_mod(T[2,2], 7);
T[2]: mod(t * T[2], 7);
T[3]: mod(T[3] - T[3,2] * T[2], 7);
T;

t: inv_mod(T[3,3], 7);
T[3]: mod(t * T[3], 7);
T;

T[2]: mod(T[2] - T[2,3] * T[3], 7);
T[1]: mod(T[1] - T[1,3] * T[3], 7);
T;

T[1]: mod(T[1] - T[1,2] * T[2], 7);
T;

C: matrix(
	[ T[1,4], T[1,5], T[1,6] ],
	[ T[2,4], T[2,5], T[2,6] ],
	[ T[3,4], T[3,5], T[3,6] ]
);

mod(A.C, 7);

b0: C[1,1];
b1: C[2,1];
b2: C[3,1];

Cc: mod(b0*M0 + b1*M1 + b2*M2, 7);
C - Cc;

b: b0 + b1*X + b2*X^2;
p: expand(a*b);

pp: 3*X^4 + X^3 + 3*X^2 + 6*X;

divide(pp, m, X);