3.3.1.Thiết lập các hàm kép (hàm hợp, hàm lồng nhau)
Mô tả
• Maple là ngôn ngữ lập trình đồng thời cũng là công cụ dùng cho tính toán, do vậy mà Maple cung cấp rất nhiều hàm (hàm toán học cũng nh− hàm đáp ứng cho việc lập trình) để từ đó ng−ời dùng có thể tự xây dựng các chu trình tính toán để đáp ứng cho các nhu cầu tính toán của riêng mình. Để sử dụng một cách hiệu quả các hàm do Maple cung cấp, ta phải kết hợp chức năng giữa các hàm đó mới có thể phát huy hết sức mạnh của hệ thống các hàm có trong th− viện có sẵn của Maple.
• Để làm đ−ợc điều này, ta có nhiều cách thức, trong đó cách đơn giản nhất là lập hàm kép (hàm lồng nhau). Ta có thể gọi các hàm lồng nhau nhờ cơ chế cho giá trị của các hàm, tức là các hàm sau khi thực hiện một thao tác theo các tham số ta cung cấp chúng th−ờng cho các giá trị là kết quả của các phép tính. Ta có thể lấy ngay kết quả của phép tính này để làm tham số cho các hàm tiếp theo, và cứ tiếp tục nh− vậy cho đến khi ta thu đ−ợc kết quả mong muốn. Minh họa Thí dụ Tính đạo hàm của hàm kép: [>diff(sin(ln(x^2+1)/3),x); 2 3 cos 13ln(x2 + 1) x + x2 1
Một ví dụ khác là tìm hạng của một họ hữu hạn các véc tơ. Vì Maple không cung cấp hàm tìm hạng của một hệ véc tơ, do đó ta tính hạng của hệ véc tơ bằng cách kết hợp hàm tìm cơ sở của hệ véc tơ đó và hàm đếm số phần tử của một danh sách để thu đ−ợc hạng của chúng. Hàm basis(v) cho kết quả là danh sách các véc tơ là cơ sở của hệ véc tơ v. Hàm nops(ds) cho kết quả là số phần tử của danh sáchds, kết hợp hai hàm này, ta thu đ−ợc hạng của hệ véc tơ. Trong ví dụ sau ta tính hạng của hệ gồm 8 véc tơ 9-chiều đ−ợc sinh một cách ngẫu nhiên:
[>with(linalg):
[>v:=[seq(randvector(9),i=1..8)];
v := [[64, -34, 60, 99, 48, 36, 73, -40, 49], [55, 24, 65, 6, -65, 52, 99, -39, 49], [-76, -15, 44, -98, 27, 36, 18, 32, 5], [0, 8, 63, -80, -97, 25, -76, -53, -57], [-99, 90, 86, -84, 8, -10, 63, -39, -48], [-94, 10, -20, 70, 98, 58, 45, -12, 28],
[3, 13, -5, -45, -41, 84, -49, -79, 93], [-81, -47, 28, 73, -24, 8, 27, -18, 62]] [>r:=nops(basis(v));
:=
r 8