0
Tải bản đầy đủ (.pdf) (58 trang)

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

Một phần của tài liệu LÀM QUEN VỚI MATHEMATICA 9.0 PDF (Trang 48 -52 )

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: ShortShallow.

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}

Một phương trình với nghiệm chính xác không được tìm

Một phần của tài liệu LÀM QUEN VỚI MATHEMATICA 9.0 PDF (Trang 48 -52 )

×