Home Page
|
CoCoA System
Computations in
Commutative
Algebra
CoCoA là gì?
|
|
This pages counts
visits
by
visitors
- CoCoA là một chương trình máy tính dùng để tính toán với các số và các đa thức.
- Chương trình này là miễn phí.
- Nó làm việc được trên nhiều hệ điều hành máy tính.
- Nó được sử dụng bởi nhiều nhà nghiên cứu, nhưng cũng hữu ích ngay cả đối với các tính toán "đơn giản".
Những cái gì chúng ta có thể tính toán được với CoCoA
Những số nguyên rất lớn
Số nguyên lớn nhất bạn có thể sử dụng trên một máy tính 32-bit là 2^32-1, nhưng dựa vào thư viện GMP lớn mạnh, CoCoA thậm chí có thể tính các số lớn chừng 2^300000: Hay thử xem!
2^32-1;
4294967295
2^64-1;
18446744073709551615
Các số hữu tỷ
CoCoA rất chính xác với các phân số: nó không bao giờ xấp xỉ chúng. Do vậy, 1/3 là hoàn toàn khác với 0.3333333333333.
(1/3) * 3;
1
0.3333333333333 * 3;
9999999999999/10000000000000
Các đa thức
CoCoA đặc biệt dành cho tính toán với đa thức: nó có thể nhân, chia, nhân tử hóa,…
(x-y)^2 * (x^4-4*z^4) / (x^2+2*z^2);
x^4 -2*x^3*y +x^2*y^2 -2*x^2*z^2 +4*x*y*z^2 -2*y^2*z^2
Factor(x^4 -2*x^3*y +x^2*y^2 -2*x^2*z^2 +4*x*y*z^2 -2*y^2*z^2);
record[
RemainingFactor := 1,
factors := [x^2 -2*z^2, x -y],
multiplicities := [1, 2]]
]
Các hệ phương trình tuyến tính
CoCoA có thể giải các hệ phương trình tuyến tính. Bạn chỉ cần viết mọi phương trình
f =c
như là đa thức
f-c
. CoCoA cũng có thể giải hệ phương trình đa thức, nhưng điều này là phức tạp hơn và chúng ta có thể thấy sau này. Bây giờ chúng ta giải
System := ideal(x-y+z-2, 3*x-z+6, x+y-1);
ReducedGBasis(System);
[x +3/5, y -8/5, z -21/5]
Như vậy, nghiệm của hệ phương trình là (z=21/5, x=-3/5, y=8/5)
Các nghiệm nguyên không âm
Bạn có thể tìm các bộ nghiệm nguyên không âm của hệ phương trình sau không?
3x - 4y + 7z | =2 |
2x - 2y + 5z | =10 |
M := mat([[3, -4, 7, -2], [2, -2, 5, -10]]);
H := HilbertBasisKer(M);
L := [h In H | h[4] <= 1];
L;
[[0, 10, 6, 1], [6, 11, 4, 1], [12, 12, 2, 1], [18, 13, 0, 1]]
Cách hiểu ở tính toán trên là chỉ có 4 bộ nghiệm:
(0, 10, 6), (6, 11, 4), (12, 12, 2), (18, 13, 0).
Ví dụ về Logic
A nói : "B nói dối."
B nói: "C nói dối."
C nói: "A và B nói dối."
Người nào nói dối ở tình huống này?
Để trả lời câu hỏi này chúng ta mã hóa TRUE bằng 1 và FALSE bằng 0 trong ZZ/(2):
use ZZ/(2)[a,b,c];
I1 := ideal(a, b-1);
I2 := ideal(a-1, b);
A := intersect(I1, I2);
I3 := ideal(b, c-1);
I4 := ideal(b-1, c);
B := intersect(I3, I4);
I5 := ideal(a, b, c-1);
I6 := ideal(b-1, a, c);
I7 := ideal(b, a-1, c);
I8 := ideal(b-1, a-1, c);
C := IntersectList([I5, I6, I7, I8]);
ReducedGBasis(A + B + C);
[b +1, a, c]
Nghiệm duy nhất ở trên chỉ ra rằng A và C nói dối và B nói sự thật.
Tô màu bản đồ địa lý
Các quốc gia trên một bản đồ có thể được tô màu bằng ba màu sao cho không có hai quốc gia kề cận nào có cùng màu không?
use P ::= ZZ/(3)[x[1..6]];
define F(X) return X*(X-1)*(X+1); enddefine;
VerticesEq := [ F(x[i]) | i in 1..6 ];
edges := [[1,2],[1,3], [2,3],[2,4],[2,5], [3,4],[3,6],
[4,5],[4,6], [5,6]];
EdgesEq := [ (F(x[edge[1]])-F(x[edge[2]]))/(x[edge[1]]-x[edge[2]])
| edge in edges ];
I := ideal(VerticesEq) + ideal(EdgesEq) + ideal(x[1]-1, x[2]);
ReducedGBasis(I);
[x[2], x[1] -1, x[3] +1, x[4] -1, x[6], x[5] +1]
Cách giải thích ở đây là có một cách tô màu trong trường hợp cụ thể này. Ví dụ: nếu 0 có nghĩa là màu xanh, 1 có nghĩa là màu đỏ, và -1 có nghĩa là màu lục, thì chúng ta nhận được [Quốc gia 1 = màu đỏ, Quốc gia 2 = màu xanh, Quốc gia 3 = màu lục, Quốc gia 4 = màu đỏ, Quốc gia 5 = màu lục, Quốc gia 6 = màu xanh]
Công thức Heron
Có thể biểu diễn diện tích của một tam giác như là một hàm của các chiều dài của các cạnh của nó không?
use QQ[x[1..2],y,a,b,c,s];
A := [x[1], 0];
B := [x[2], 0];
C := [ 0, y];
Hp := ideal(a^2 - (x[2]^2+y^2), b^2 - (x[1]^2+y^2),
c - (x[2]-x[1]), 2*s - c*y);
E := elim(x[1]..y, Hp);
f := monic(gens(E)[1]);
f;
a^4 -2*a^2*b^2 +b^4 -2*a^2*c^2 -2*b^2*c^2 +c^4 +16*s^2
factor(f - 16*s^2);
record[
RemainingFactor := 1,
factors := [a +b -c, a -b +c, a +b +c, a -b -c],
multiplicities := [1, 1, 1, 1]
]
Điều này có nghĩa là bình phương của diện tích hình tam giác với các cạnh a, b, c là p(p-a)(p-b)(p-c), trong đó p = 1/2(a+b+c) là nửa chu vi của tam giác này. Như vậy, câu trả lời là CÓ.
Written by Ngoc Long
Please send comments or suggestions to cocoa(at)dima.unige.it
Last Update: 20 November 2018