LaTeX mạnh hơn bạn tưởng

\LaTeX là một công cụ mạnh mẽ.
\LaTeX mạnh đến nỗi mà trong thực tế, nó có thể được sử dụng để xử lý nhiều việc hơn là một hệ sắp chữ đơn thuần. Ví du, có thể nói \LaTeX là một máy Turing hoàn chỉnh. Nghĩa là, nó có thể lập trình được để tính toán về bất cứ cái gì.

Để chứng minh khả năng lập trình được của \LaTeX, chúng tôi giới thiệu một ví dụ về việc tính toán các con số của dãy số Fibonacci. Tuy điều này không phải là một bằng chứng về việc \LaTeX là một máy Turing hoàn thiện, nó cũng là một ví dụ tốt về một thuật toán hoàn toàn thực hiện trong \LaTeX.

chỉ để tham khảo.

\documentclass[12pt]{book}
\usepackage[utf8]{inputenc}
\usepackage[vietnam]{babel}
\usepackage{amsmath}
\usepackage{amsfonts}
\usepackage{amssymb}
\usepackage[left=2cm,right=2cm,top=2cm,bottom=2cm,paperwidth=21cm,paperheight=29.7cm]{geometry}
\begin{document}

\newcount\n
\newcount\np
\newcount\npp
\newcount\m
\newcount\f

\def\fibonacci#1{{\ifnum #1\np=1\npp=1\m=3
\loop
\ifnum\m<#1\f=\npp
\npp=\np\advance\np by\f\advance\m by 1\repeat
\f=0\advance\f by\np\advance\f by\npp
\number\f\fi}}

\def\printfibonacci#1{\m=#1\advance\m by 1
\n=1
\loop\ifnum\n<\m\fibonacci{\n}, \advance\n by 1\repeat...}

\printfibonacci{38}

\end{document}

Khi thời gian cho phép, tôi sẽ giải thích mã lập trình giúp các bạn sinh viên hiểu được ngôn ngữ này và vận dụng cho công việc của mình.

Khi thực hiện lệnh \printfibonacci{38} ta được kết quả trong “nháy mắt” như sau:

1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, 233, 377, 610, 987, 1597, 2584, 4181, 6765, 10946, 17711,28657, 46368, 75025, 121393, 196418, 317811, 514229, 832040, 1346269, 2178309, 3524578,5702887, 9227465, 14930352, 24157817, 39088169, …

Khi n > 46 thuật toán mắc lỗi tràn số nguyên. Tạm thời ta thực hiện với n \leqslant 46. Khi  n = 46 dãy số Fibonacci là:

1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, 233, 377, 610, 987, 1597, 2584, 4181, 6765, 10946, 17711, 28657, 46368, 75025, 121393, 196418, 317811, 514229, 832040, 1346269, 2178309, 3524578, 5702887, 9227465, 14930352, 4157817, 39088169, 63245986, 102334155, 165580141, 267914296, 433494437, 701408733, 1134903170, 1836311903, …

file fibonacci.doc về đổi tên thành file fibonacci.tex


fibonacci.tex (file lưu trữ của Thầy Sơn trên scribtex.com)

Advertisements

Trả lời

Mời bạn điền thông tin vào ô dưới đây hoặc kích vào một biểu tượng để đăng nhập:

WordPress.com Logo

Bạn đang bình luận bằng tài khoản WordPress.com Đăng xuất / Thay đổi )

Twitter picture

Bạn đang bình luận bằng tài khoản Twitter Đăng xuất / Thay đổi )

Facebook photo

Bạn đang bình luận bằng tài khoản Facebook Đăng xuất / Thay đổi )

Google+ photo

Bạn đang bình luận bằng tài khoản Google+ Đăng xuất / Thay đổi )

Connecting to %s