Trang chủ > Mastering mathematica > Mọi thứ là một biểu thức

Mọi thứ là một biểu thức

Tháng Mười Hai 19, 2009 Để lại bình luận Go to comments

Nguyên tử

Các biểu thức sẽ được biểu diễn một cách đệ quy và sự đệ quy phải bắt đầu từ một nơi nào đó. Nơi bắt đầu đó chính là các nguyên tử. Trong Mathematica, các nguyên tử là mỗi kí hiệu, số hoặc chuỗi. Kí hiệu là một dãy các kí tự và số tự nhiên (có thể là $), không bắt đầu với một số tự nhiên. Ví dụ như a2Dd là một kí hiệu. “Một số” ở đây có nghĩa là một số tự nhiên hoặc là một số thực. Bốn dạng khác là số hữu tỷ, số nguyên Gauss, số hữu tỷ Gauss và số phức thì không phải là những nguyên tử. Cuối cùng, chuỗi là dãy các kí tự ASCII được đặt giữa 2 dấu ngoặc kép (“A book ”).

Ý nghĩa của biểu thức

Có một vài cách nghĩ về biểu thức giúp chúng ta sử dụng chúng có hiệu quả.

Function[argument]……………………………ví dụ: Sin[x]
Command[argument]………………………….ví dụ: Expand[(x+y)^10]
Operator[Operands]……………………………ví dụ: Plus[x,y]
Type[parts]……………………………………….ví dụ: List[a, b, c, d]

Dạng (form) của biểu thức

Chúng ta có thể truy suất form bằng lệnh FullForm. Xem ví dụ sau:

Biểu thức……………… Head ……………………FullForm
abc ……………………… Symbol………………………. abc
27 ………………………..Integer ………………………..27
¾ ………………………..Rational ………………….Rational[3,4]

Bây giờ chúng ta sẽ xem xét một vài biểu thức phức tạp hơn:

Biểu thức …………………………FullForm
x+y+z ………………………………Plus[x, y, z]
x y z ………………………………..Times[x, y, z]
x/y……………………………. Times[x, Power[y, -1]]
{x, y, z} ……………………………..List[x, y, z]

Cuối cùng là một vài kí hiệu kì quái:

Biểu thức………………………… FullForm
% ……………………………………….. Out[]
%%……………………………………… Out[-2]
%5………………………………………. Out[5]
_ …………………………………………Blank[]
x_ ………………………………….Pattern[x, Blank[]]
x_Integer…………………. Pattern[x, Blank[Integer]]
# ………………………………………….Slot
#& …………………………………Function[Slot[1]]

Các phần của biểu thức

Xem ví dụ sau:

exp=f[x1, x2, x3, x4];
{exp[[0]], exp[[1]], exp[[2]], exp[[3]], exp[[4]]}
{exp[[-4]], exp[[-3]], exp[[-2]], exp[[-1]]}

{f, x1, x2, x3, x4}
{x1, x2, x3, x4}

Như vậy, số dương trong cặp ngoặc vuông tương ứng với việc đếm từ trái sang phải, còn số âm thì ngược lại.

Cấu trúc cây của biểu thức

Chúng ta thử một vài ví dụ lấy các phần của biểu thức exp1
exp1[[0]] …………………..kq: Plus
exp1[[1]]…………………… kq: x3
exp1[[1]][[2]]……………. kq: 3
Có thể dùng dạng sau để thay cho lệnh cuối ở trên
exp1[[1, 2]] ………………..kq: 3
Tiếp tục thử các trường hợp khác
exp1[[1, 2, 1]] ……………..kq: báo lỗi vì thành phần đó không tồn tại
exp1[[2, 1, 2]] …………….kq: z

Nếu biểu thức quá dài thì chúng ta sẽ rất khó để thấy được dạng cấu trúc cây của nó. Chúng ta có hai phương pháp để xem xét được biểu thức: Short Shallow.

Short[exp, n] – in biểu thức ra với chiều dài là n hàng.

Các mức độ (level) của biểu thức, chiều sâu (depth) của biểu thức

Có thể hiểu ý nghĩa từ “mức độ” như thế này: theo cây cấu trúc ở trên, đỉnh trên cùng của cây cấu trúc là mức độ 0, hàng tiếp theo là mức độ 1, v.v… Các mức độ được miêu tả bởi các số nguyên n hoặc –n nằm trong ngoặc nhọn {n}, {-n}, hoặc {n1, n2} hoặc Infinity.
Chúng ta gọi lại biểu thức exp1 = x^3 + (1+z)^2 ở trên và phân tích một vài ví dụ:

Level[exp1, {2}]………………. kq: {x, 3, 1+z, 2}

Kết quả cho thấy rằng, các cây con có gốc ở mức độ 2 cũng được liệt kê dưới dạng biểu thức. Để thấy các phần (kể cả cây con) tại mức độ 2 và cao hơn (nghĩa là tính luôn mức độ 1), chúng ta bỏ đi dấu ngoặc nhọn:

Level[exp1, 2]………………….. kq: {x, 3, x^3, 1+z, 2, (1+z)^2}

Nếu viết dạng {n1, n2} sẽ cho các cây con mà gốc của chúng nằm giữa n1 và n2.

Level[f0[f1[f2[f3[f4[f5]]]]], {2, 4]

{f4[f5], f3[f4[f5]], f2[f3[f4[f5]]]}

Chiều sâu của một biểu thức là số nút lớn nhất dọc theo đường đi từ gốc đến lá trên biểu thức.

Depth[exp1]……………………… kq: 4

Cũng có các mức độ âm được sử dụng để đếm từ dưới lên. Thực chất cái được đếm chính là chiều sâu (depth) của các biểu thức con. Chẳng hạn như {-1} sẽ cho các biểu thức con có depth đúng bằng 1 (tức là những cái lá của cây cấu trúc), còn -1 (không có ngoặc nhọn) sẽ cho ra tất cả các biểu thức con với depth tối thiểu là 1 (tức là, liệt kê tất cả các biểu thức con đúng nghĩa).

Level[exp1, {-1}]……………….. kq: {x, 3, 1, z, 2}
Level[exp1, -1] ……………………kq: {x, 3, x^3, 1, z, 1+z, 2, (1+z)^2}

Nếu viết {-2} sẽ cho tất cả các cây con depth bằng 2, còn -2 sẽ cho tất cả các cây con với depth tối thiểu bằng 2.

Level[exp1, {-2}] ………………..kq: {x^3, 1+z}
Level[exp1, -2]…………………… kq: { x^3, 1+z, (1+z)^2}
Level[exp1, Infinity]…………. kq: {x, 3, x^3, 1, z, 1+z, 2, (1+z)^2}

Chuyên mục:Mastering mathematica
  1. hạ nhất sĩ
    Tháng Tư 24, 2014 lúc 11:14 sáng

    Cho mình hỏi lệnh tách phân số ra thành tổng các phân số (đồng nhất thức). Mong các bạn chỉ giúp! thanks!

  2. Hoàng Yến
    Tháng Mười Hai 19, 2009 lúc 1:06 sáng

    Haha, cái này hay nha, rất thú vị.

    • mathlemin
      Tháng Mười Hai 19, 2009 lúc 2:21 sáng

      >:P chọc quê anh hả @-)

  1. No trackbacks yet.

Gửi phản hồ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 Log Out / Thay đổi )

Twitter picture

Bạn đang bình luận bằng tài khoản Twitter Log Out / Thay đổi )

Facebook photo

Bạn đang bình luận bằng tài khoản Facebook Log Out / Thay đổi )

Google+ photo

Bạn đang bình luận bằng tài khoản Google+ Log Out / Thay đổi )

Connecting to %s

%d bloggers like this: