1. Tính toán trực tiếp trong LTEX
A
Với SageTEX, chúng ta có thể dùng Sage để tính toán và đặt kết quả tính toán được vào tài liệu LTEX của mình.
A
1. Ví dụ, giải phương trình vi phân:
y − 3y + 2y = ex (3 − 4x)
Trước hết ta khai báo biến số, hàm số và phương trình:
begin{sageblock}
x = var(’x’)
y = function(’y’,x)
DE = diff(y, x, 2) -3*diff(y, x) + 2*y-exp(x)*(3-4*x)
end{sageblock}
LTEX sẽ chạy và tạo ra một file trung gian, sau đó Sage sẽ vận hành file trung gian này để tính toán và LTEX
A A
lấy kết quả tính toán nói trên nhập vào văn bản để thông báo kết quả như sau:
y = 2 x2 + x + 1 ex + k1 e(2 x) + k2 ex
Nếu ta không muốn cho người đọc biết các khai báo trong Sage, thay vì dùng môi trường sageblock ta dùng
môi trường sagesilent. Ví dụ, giải phương trình vi phân:
y − y = x cos2 x
Không quá vài giây đồng hồ, LTEX và Sage cho ta nghiệm của phương trình vi phân là:
A
1 1 2
y = k1 ex + k2 e(−x) − x cos (2 x) − x + sin (2 x)
10 2 25
ở trên ta khai báo biến số, hàm số và phương trình vi phân với biến môi trường (ẩn) là sagesilent
begin{sagesilent}
x = var(’x’)
y = function(’y’,x)
DE = diff(y, x, 2) -y -x*cos(x)^2
end{sagesilent}
1
2. 2. Một ví dụ khác liên quan đến các phép tính tích phân. Ví dụ, ta “hiếu kỳ” muốn biết
1
1
I= dx
0 x4 +1
Sở dĩ gọi là “hiếu kỳ” là vì, nếu không bị bắt buộc, ta chẳng bao giờ muốn tính tích phân này, nhưng lại
muốn có kết quả “ngay tức thì”. Thì đây:
1 √ 1√ √ 1√ √
I= π 2− 2 log − 2 + 2 + 2 log 2+2
8 8 8
lưu ý, ký hiệu log x ở đây chỉ ln x.
Về đồ thị, ví dụ ta muốn vẽ đồ thị của hàm số
y = f (x) = 3x3 − 5x2 + 4x − 5
thì đây:
200
100
-4 -2 2 4
-100
-200
-300
-400
-500
3. Những ai đã từng đau đầu với ma trận, các phép tính ma trận, ma trận đảo và định thức mới hiểu việc tính
toán này giá trị nhường nào!
Khai báo ma trận 4 dòng 4 cột:
2
3. A = matrix([[1,9,5,9],[1,8,9,0],[1,9,6,9],[1,9,7,5]])
Sau đó ta ra lệnh cho LTEX hiển thị ma trận A
A
1 9 5 9
1 8 9 0
A=
1
9 6 9
1 9 7 5
♥ Hãy tính định thức của ma trận A coi
det A = 4
Chỉ với một dòng lệnh:
$$detA= sage{A.determinant()}$$
♦ Hãy tìm ma trận đảo của A xem sao, nhớ không được quá 3 giây! (là thời gian biên dịch)
15 9 −5 −18
− 3 −1 − 1 9
A−1 = 4
−1
2 4
0 1 0
−14
0 1
2
−1
4
quá siêu vì chỉ một dòng lệnh và thời gian không quá 3 giây:
$$A^{-1} = sage{A.inverse()}$$
♣ Cho thêm ma trận B
B = matrix([[3,0,0,4],[1,9,7,5],[0,2,0,9],[1,9,4,5]])
3 0 0 4
1 9 7 5
B=
0 2 0 9
1 9 4 5
B là ma trận không suy biến vì det B = 663
($det B=sage{B.determinant()}$)
Hãy tính B T A−1 B. Chuyện nhỏ “như con thỏ”. Đây:
106 −264 −26 −89
−24 85 9 19
B T A−1 B =
267 1
−11 10
4 4
107 −301 −31 −70
3
4. $$B^TA^{-1}B=sage{transpose(B)*A.inverse()*B}$$
♠ Xét không gian các ma trận 3 dòng, 3 cột trên vành số nguyên. Và Gọi A là ma trận như ở dưới:
begin{sagesilent}
A = MatrixSpace(IntegerRing(),3)( [[2,0,0], [0,3,4],[0,4,9]] )
f = A.charpoly()
end{sagesilent}
2 0 0
• Ma trận A là A = 0 3 4
0 4 9
• Đa thức đặc trưng của ma trận A là f (x) = x3 − 14x2 + 35x − 22
• Các giá trị riêng của A là: [11, 2, 1] .
1
• Các vectơ riêng của A là: (11, [(0, 1, 2)] , 1) , (2, [(1, 0, 0)] , 1) , 1, 0, 1, − 2 ,1 . (phần nằm
trong ngoạc đơn)
4