Maple có khả năng tính toán trên số thực lẫn số phức, Maple có thểgiải phương trình vi phân, phương trình đạo hàm riêng,…Đặc biệt là khi phương trình đạo hàm riêng được ứng dụng trong vậ
Trang 1KHOA SƯ PHẠM
BỘ MÔN SƯ PHẠM VẬT LÝ - -
LUẬN VĂN TỐT NGHIỆP
SỬ DỤNG PHẦN MỀM MAPLE 12
Hồ Hữu Hậu Lớp: Sư Phạm Vật lý-Tin hoc K32 Nguyễn Thị Thúy Hằng
Cần Thơ, 2010
Trang 2Em xin chân thành cảm ơn:
Thầy Vương Tấn Sĩ đã tận tình hướng dẫn và đóng góp những ý kiến quý báu
để em có thể hoàn thành luận văn tốt nghiệp
Các thầy cô trong Bộ môn Vật lý đã cung cấp cho em những kiến thức để em
có thể vận dụng vào thực hiện đề tài
Mặc dù đã cố gắng hết sức nhưng vẫn không tránh khỏi những thiếu sót, rất mong được sự đóng góp ý kiến chân thành của quý thầy cô và các bạn để đề tài được hoàn chỉnh hơn
Em xin kính chúc quý thầy cô lời chúc sức khỏe, thành công và hạnh phúc
Nguyễn Quốc Toản
Trang 3
Vương Tấn Sĩ
Trang 4
Hồ Hữu Hậu
Trang 5
Nguyễn Thị Thúy Hằng
Trang 6PHẦN I: MỞ ĐẦU
1 Lý do chọn đề tài Trang 1
2 Mục đích đề tài 1
3 Phương pháp thực hiện đề tài 1
4 Các bước thực hiện đề tài 1
PHẦN II: NỘI DUNG A LÝ THUYẾT 2
1 Maple – công cụ tính toán toán học 2
1.1 Giới thiệu tổng quan về Maple 2
1.2 Các phép toán 4
1.3 Các hàm toán học thông dụng 4
1.4 Một số lệnh cơ bản tiện ích thường dùng 4
2 Ma trận và vector 7
2.1 Hàm array 7
2.2 Ma trận 7
2.3 Vector 8
2.4 Các phép toán trên ma trận và vec tor 8
3 Giải phương trình và hệ phương trình 9
3.1 Cách biểu diễn các nghiệm của phương trình theo dạng chuẩn 9
3.2 Cách xác định giá trị của RootOf 9
3.3 Giải phương trình và hệ phương trình 10
3.4 Giải gần đúng bằng thủ tục fsolve 10
4 Phép tính đạo hàm – giới hạn 10
4.1 Đạo hàm của biểu thức theo các biến 10
4.2 Toán tử vi phân D 11
4.3 Khai triển hàm thành chuổi tổng quát - Khai triển Taylor 11
4.4 Đạo hàm của hàm số ẩn 11
4.5 Giới hạn 12
5 Phép tính tích phân 13
5.1 Tích phân bất định và tích phân xác định 13
5.2 Tích phân bội 13
5.3 Tích phân từng phần 14
5.4 Đổi biến số 14
5.5 Tích phân mặt 14
5.6 Tích phân khối 15
6 Giải phương trình vi phân – phương trình đạo hàm riêng 15
6.1 Phương trình vi phân 15
6.2 Phương trình đạo hàm riêng 16
7 Đồ thị 16
7.1 Đồ thị hai chiều 16
7.1.1 Đồ thị hàm thực 16
Trang 77.2 Đồ thị ba chiều 21
7.2.1 Hàm trong tọa độ Descartes 21
7.2.2 Hàm trong tọa độ cực 23
7.2.3 Vẽ nhiều đồ thị trên cùng hệ trục tọa độ 25
7.3 Đồ thị động 26
7.3.1 Đồ thị động hai chiều 26
7.3.2 Biểu diễn các đồ thị động trên cùng hệ trục tọa độ 27
7.3.3 Đồ thị động ba chiều 28
B ỨNG DỤNG MAPLE ĐỂ GIẢI PHƯƠNG TRÌNH ĐẠO HÀM RIÊNG TRONG CƠ HỌC LƯỢNG TỬ VÀ VẬT LÝ THỐNG KÊ LƯỢNG TỬ 30
1 Phương trình Schrodinger trong không gian 3 chiều 30
1.1 Hàm cầu 30
1.2 Thế coulomb 33
1.3 Nguyên tử hyđrô 35
1.4 Điện thế đối xứng của electron 55
1.5 Obitan liên kết hỗn hợp 58
1.6 Hố thế sâu vô hạn 61
2 Thống kê lượng tử 66
2.1 Thống kê Maxwell-Boltzmann 66
2.2 Khí lí tưởng Bose 69
2.3 Mật độ thấp và khai triển Virial 70
2.4 Sự ngưng tụ Bose-Einstein ở nhiệt độ thấp 75
2.5 Khí lí tưởng Fermi 79
2.6 Nhiệt dung riêng của kim loại ở nhiệt độ thấp 80
2.7 Khí tương đối 88
PHẦN III: KẾT LUẬN
TÀI LIỆU THAM KHẢO
Trang 8PHẦN I: MỞ ĐẦU
1 Lý do chọn đề tài
Ngày nay, cùng với những thành tựu trong lĩnh vực công nghệ thông tin, người
ta đã xây dựng nhiều phần mềm để hỗ trợ công tác học tập và nghiên cứu Maple là phần mềm tính toán điển hình giúp việc giải các bài toán trở nên đơn giản và nhanh chóng, góp phần làm tăng hiệu suất làm việc của chúng ta trong học tập, nghiên cứu
và giảng dạy Maple có khả năng tính toán trên số thực lẫn số phức, Maple có thểgiải phương trình vi phân, phương trình đạo hàm riêng,…Đặc biệt là khi phương trình đạo hàm riêng được ứng dụng trong vật lý rất nhiều, và chúng ta thường gặp nhiều khó khăn khi giải phương trình đạo hàm riêng, để khắc phục những khó khăn
đó người ta phải sử dụng một phần mềm để hỗ trợ giải phương trình đạo hàm riêng Phần mềm hữu ích đó là Maple, và để giải phương trình đạo hàm riêng ta với Maple
ta phải hiểu biết về nó Với những lý do đó, tôi quyết định chọn đề tài luận văn tốt
nghiệp là “Giải phương trình đạo hàm riêng sử dụng phần mềm Maple 12”.
3 Phương pháp thực hiện đề tài
Thu thập tài liệu, các thông tin có liên quan, phân tích tài liệu, thông tin thu được và chọn lọc thông tin phù hợp
Nghiên cứu, tìm hiểu rõ các thành phần, cách sử dụng Maple và các bài toán
sẽ trình bày trong đề tài
Tổng hợp các yêu cầu của đề tài, các ý kiến đóng góp để xây dựng đề tài hoàn chỉnh lẫn nội dung và hình thức
4 Các bước thực hiện đề tài
Bước 1: Nhận đề tài
Bước 2: Nghiên cứu tài liệu liên quan đến đề tài
Bước 3: Tiến hành viết đề tài và trao đổi với giáo viên hướng dẫn
Bước 4: Viết báo cáo
Trang 9PHẦN II: NỘI DUNG
A LÝ THUYẾT
1 Maple-công cụ tính toán toán học
1.1 Giới thiệu tổng quan về Maple
Phần mềm toán học Maple, ta gọi tắt là Maple là phần mềm đa dụng có các đặc trưng quan trọng:
- Thực hiện tính toán toán học (kể cả trên các đối tượng hình thức, thường được cho dưới dạng một tên) bởi các qui tắc của các phép toán số học hay bằng các thủ tục, các hàm (được cho bởi tên đặc biệt của chúng)
- Cho phép tạo ra các hàm mới, các thủ tục mới, các phép toán mới theo cấu trúc dữ liệu của người dùng và như vậy, Maple cũng chính là một ngôn ngữlập trình, hơn nữa lại là ngôn ngữ rất dễ hiểu mà cũng hết sức hiệu quả vì bản thân mỗi câu lệnh của ngôn ngữ này đã là một chương trình con có khả năng tính toán rất mạnh
Maple sau khi được khởi động, sẽ xuất hiện dấu “>” trong cửa sổ làm việc (worksheet) của nó Các câu lệnh sẽ được xử lý khi được nhập vào từ sau dấu “>”, kết thúc bởi dấu “;” và nhấn phím Enter Nếu muốn kết quả của việc thực hiện một lệnh nào đó không cần hiện ra màn hình, thay cho dấu “;” ở cuối dòng lệnh, ta dùng dấu “:”
Để xóa các kết quả trung gian, các giá trị tồn tại do phép gán trị hay nói chung là mọi kết quả được lưu trữ trong bộ nhớ của Maple, nhằm thực hiện lại một công việc tính toán nào đó, ta gõ:
> restart;
Và để thoát khỏi Maple, ta gõ:
> quit ;
Để xem các trang trợ giúp (gọi tắt là các trang help), cung cấp các thông tin
chi tiết về mọi lệnh hay một chủ đề nào đó của Maple (chẳng hạn cung cấp về cú
pháp, chức năng, các chú ý và các ví dụ về cách sử dụng), ta gõ “ ?name ;”, với
name là tên hay chủ đề
Thủ tục là một chương trình được viết bằng ngôn ngữ của chính Maple, thực chất là một dãy của các chỉ thị (cũng là các câu lệnh của Maple) được sắp xếp theo một thứ tự nào đó nhằm giải quyết một bài toán, một mục đích mà kết quả cuối
Trang 10cùng của việc thực hiện thủ tục là kết quả của việc thực hiện lệnh cuối cùng trong thủ tục Thông thường, một thủ tục được gọi kèm theo các tham số của nó.
Hàm cũng là một thủ tục, nhưng thường mục đích của hàm là trả về một đối tượng cụ thể (nghĩa là một kiểu dữ liệu cụ thể) và trực tiếp Đối với hàm, ta gọi chung các tham số của nó là đối số Nếu đối số của hàm là một dãy các số và kết quả của lời gọi hàm thuộc kiểu dữ liệu numberic, thì nó chính là một hàm số Ta tìm
hiểu về các kiểu dữ liệu của Maple bằng lệnh “?type ;” Chú ý rằng ta có thể đổi
một kiểu dữ liệu này sang một kiểu dữ liệu khác cho cùng một đối tượng bằng thủ
tục convert Muốn kiểm tra đối tượng (obj) đang xét thuộc một kiểu dữ liệu nào, hãy gọi whattype(obj).
Maple chứa sẵn các hàm và thủ tục đặc biệt trong thư viện của nó và ta có
thể gọi chúng bằng câu lệnh “readlib(name) ;”, với name là tên hàm hay thủ tục
Ngoài ra, Maple đóng gói sẵn một số thủ tục và hàm đặc biệt cho một lĩnh vực tính
toán đặc thù nào đó trong những gói Các gói được sử dụng nhiều là linalg và student lần lượt chứa các hàm và thủ tục cho việc tính toán trên các ma trận, vector
và cho việc tính các loại tích phân
Để xét khái niệm biến (variable) và tên trong Maple, ta hay xét phương trình :
ax2+ bx + c= 0Trong đó, a,b,c là các tham số và x là ẩn Chúng cũng được gọi chung là các biến và trong cách dùng của chúng trong phương trình, chúng được xem là các biến
tự do, nghĩa là mỗi biến được xem đơn thuần là một ký hiệu và chỉ đến bản thân ký hiệu riêng của chúng khi được nhắc đến Các biến có thể được gán cho một giá trịbởi phép gán trị “ := ”, chẳng hạn, a := 2 thì a được gọi là biến bị gán trị, và khi a được nhắc đến thì số 2 sẽ được thay thế Mặc khác, trong quá trình tính toán, ta thường đặt tên cho các kiểu dữ liệu phức tạp để cách trình bày các phép toán được ngắn gọn và rõ ràng hơn Tên cũng được cho bởi phép gán, là một chuỗi ký tự có độdài không quá 499 ký tự và phải bắt đầu bằng một mẫu tự, chẳng hạn ta có thể đặt tên cho hàm sin là f bằng lời gọi :
> f :=->sin(x) ;
Các biến toàn cục trong Maple là các biến được gán sẵn một giá trị xác định
Trang 11tạm thời một giá trị khác bởi phép gán trị (khi khởi động lại chương trình hoặc khi
dùng restart, thì các biến toàn cục nhận lại giá trị ban đầu của chúng) Một số biến toàn cục của Maple thường dùng là Digits, Order hay –MaxSols Biến môi trường( thường có tên bắt đầu bởi các ký tự -Env) là biến toàn cục nhưng thường
nhận các giá trị logic true, false để xác nhận tình trạng đang xét thuộc hay không
thuộc một điều kiện qui ước nào đó Các biến môi trường của Maple thường dùng :
+ Nhất nguyên: cộng, trừ, phủ định ( +,-, not), giai thừa (!)
+ Ký hiệu %: Dùng để thay thế kết quả hay biểu thức gần nhất bằng (%), biểu thức trước đó bằng (%%), biểu thức trước đó nữa bằng (%%%)
1.4 Một số lệnh cơ bản tiện ích thường dùng
+ evalf (e,n): cho giá trị của một biểu thức e với n chữ số chính xác, có thểchọn đến 500000 !
+ value( F): cho giá trị thực tế của một kết quả hình thức F
Ví dụ :
> b:=Limit(sin(x)/x,x=0);
Trang 12> value(b);
+ expand(e,x1,x2 ): khai triển phép nhân đối với các tổng trong e
+ normal(e): thu gọn một biểu thức hữu tỉ e dạng chuẩn
+ simplify(e): đơn giản e
+ radsimp(e) và radsimp(e, ‘ratdenom’): đơn giản một biểu thức chứa căn thức và hữu tỉ hóa mẫu số của biểu thức e (nếu có)
subs(x,a,e): thay a cho x
subs(s1,…,sn,e): thay thế tuần tự s1, …,sn vào e
subs({s1,…,sn},e) hay subs([s1,…,sn],e): thay thế đồng thời s1,…,sn vào e
Ví dụ:
> p:=x+y+2^(x+y+z) +z:
> subs(y=c,p);
Trang 13> subs(x+y+z=c,p);
> subs([x=y,y=z,z=c], x*y*z+2*z);
+ student[powsubs](e,f): tương tự như subs nhưng tiến hành thay thế lần lượt
từ trái sang phải
Trang 142) if(cond) then (statm) else (statm) fi,
3) if(cond) then (statm) elif (cond) then (statm) fi,
4) if(cond) then (statm) elif (cond) then (statm) else (statm) fi,
Với cond: điều kiện
statm: một hay một số các câu lệnh
* Dùng hàm unapply
+ unapply(e,x1,x2 ); : e là biểu thức theo các biến x1,x2
+ map(f,x,y1,_ _,yn); : thay mỗi toán hạng x[i] của x bởi f(x[i],y[1], ,y[n])
+ is(x,prop); : x là tên biến hay biểu thức bất kỳ, prop là một tính chất, cặp tham sốx; đây là nhận một trong các giá trị logic
+ has(f,x); : f là một biểu thức, một danh sách hay một tập các biểu thức Nếu f chứa
x thì hàm has lấy giá trị true, ngược lại là false
+ evalb(x); : x là một biểu thức, dùng để tính giá trị: true, false, FAIL
+ select(f,x,y1, ,yn); : chọn ra các toán hạng của x thỏa f
+ remove(f,x,y1, ,yn); : có tác dụng ngược lại với select (bỏ đi các toán hạng thỏa f)
Trong đó: indexfcn: (tùy chọn) là hàm chỉ mục
bound: (tùy chọn) là dãy các range
list: (tùy chọn) là danh sách các giá trị ban đầu
Trong hàm này phải có ít nhất một tham số
2.2 Ma trận
Một ma trận được xem là một mảng hai chiều, với các hàng và cột được
đánh chỉ số từ L Ta có thể xác định một ma trận bằng lệnh matrix với các tham số
dùng trong ma trận như sau:
L: danh sách của các danh sách hay của vector,
m, n:các số nguyên dương (chỉ số hàng và cột),
Trang 15lv: danh sách hay vector của các thành phần.
Cú pháp:
+ matrix(m,n); : tạo ma trận cấp m x n, với các phần tử chưa xác định.
+ matrix(m,n,l); : tạo ma trận cấp m x n, trong đó hàng thứ i của ma trận được
xác định bởi danh sách l[i](i=1 m)
+ matrix(m,n,f); : tạo ma trận cấp m x n, các phần tử là kết quả của việc áp
dụng hàm f lên các cặp chỉ số hàng cột
Trong trường hợp f=0, ta xác định được một ma trận 0
+ matrix(m,n,lv); : tạo ma trận cấp m x n, các phần tử của nó đọc từ lv theo qui
tắc lấy n phần tử đầu của lv làm hàng thứ nhất, n phần tử kế tiếp làm hàng thứ hai
+ Linalg[det]; : tính định thức của ma trận vuông.
+ Linalg[det](A) và linalg[det](A,sparse); : A là ma trận vuông, sparse (tùy
chọn) xác định phương pháp tính theo các định thức con bù
f: hàm được dùng để tạo ra các thành phần của vector
+ vector[x1, ,xn] và vector(n,[x1, ,xn]); : tạo ra vector có n thành phần là
các phần tử của x[i]
+ vector(n,f); : tạo ra một vector có n thành phần nhận được bằng cách áp
dụng hàm f lên các chỉ số vị trí của chúng
2.4 Các phép toán trên ma trận và vector
Các phép toán trên ma trận gồm: so sánh hai ma trận, tổng hai ma trận, tích hai ma trận (cột ma trận này bằng hàng của ma trận kia), tích một số với một ma trận, lấy lũy thừa nguyên đối với một ma trận
Cú pháp: evalm(mate); : mate là một biểu thức của ma trận.
+ evalm(A^0); : cho kết quả là 1
+ evalm(A^(-1)); : cho kết quả là nghịch đảo của ma trận A
+ Toán tử &*: chỉ tích hai ma trận
+ Số 0: chỉ ma trận 0
Trang 16+ &*(): chỉ ma trận đơn vị.
* Các qui ước trên có thể được thay đổi tạm thời bằng lệnh alias.
+ Các ma trận có thể là đối số trong hàm
+ So sánh hai ma trận: bằng lệnh equal
Muốn so sánh hai ma trận xem chúng có bằng nhau không (tức là các phần
tử cùng vị trí tương ứng của chúng phải bằng nhau) ta dùng lệnh equal.
Chú ý: hai ma trận phải cùng số chiều như nhau mới có thể so sánh được
Do các vector là trường hợp đặc biệt của ma trận 1 hàng nên các phép toán cộng giữa các vector và phép nhân vector với một số cũng được thực hiện bởi hàm evalf, trong đó mate là một biểu thức vector
Ngoài ra đối với hai vector u, v ta có các phép toán tích vô hướng và tích cóhướng được gọi lần lượt từ gói linalg theo cú pháp sau:
+ linalg[dotprod](u,v,orthogonal); : u, v là các vector có cùng thành phần + linalg[crossprod](u,v); : u, v là các vector có 3 thành phần.
3 Giải phương trình và hệ phương trình
3.1 Cách biểu diễn các nghiệm của phương trình theo dạng chuẩn
Maple cung cấp thủ tục RootOf để biểu diễn các nghiệm của phương trình
và hệ phương trình đa thức, các giá trị riêng và các tích phân hàm hữu tỉ Thủ tục được gọi theo các trường hợp sau:
a RootOf(e)
b RootOf(e,x)
c RootOf(e,x,c)
d RootOf(e,x,a b)
Trong đó, e biểu thức đại số hay phương trình, x là một biến
3.2 Cách xác định giá trị của RootOf
Để xác định giá trị của RootOf ta dùng thủ tục allvalues Thủ tục này được
dùng trong các trường hợp sau:
a allvalues(e)
b allvalues(e,opt)
Trong đó, e là một biểu thức, bảng danh sách hay tập biểu thức,opt là tham số tùy chọn được xác định bởi kiểu ‘dependent’ hay ‘independent’
Trang 173.3 Giải phương trình và hệ phương trình
Ta dùng thủ tục solve để giải phương trình.
Cú pháp:
+ solve(eqn,var); : giải phương trình eqn theo ẩn var Kết quả là giá trị của ẩn
(thường là một biểu thức)
+ solve(eqn(s),vars); : Giải hệ các phương trình eqns theo tập các ẩn vars.
Kết quả lệnh này là tập các phương trình dạng var[i]=expr[i] (vế phải là giá trị của ẩn thứ i)
{var1=expr1,var2=expr2,…} nếu vars được cho dưới dạng {var1,var2,…}
3.4 Giải gần đúng bằng thủ tục fsolve
Trong trường hợp không thể dùng thủ tục solve để tìm nghiệm chính xác của
một (hệ) phương trình, ta có thể dùng thủ tục fsolve để tìm nghiệm gần đúng.
Cú pháp: fsolve(eqns,vars,options);
Trong đó, eqns: là phương trình hay hệ phương trình
vars: (tùy chọn) là ẩn hay tập các ẩn
options: là các tùy chọn nhằm xử lý các nghiệm
* Khi options là maxsols=n: xác định n nghiệm nhỏ nhất (đối với đa thức nhiều hơn một nghiệm)
* Khi options là complex:tìm một nghiệm (hay mọi nghiệm đối với đa thức) trên tập các số phức
4 Phép tính đạo hàm - giới hạn
4.1 Đạo hàm của biểu thức theo các biến
+ Cú pháp: diff(expr,x1,x2,…,xn);: tính đạo hàm của expr theo các biến
x1,x2,…,xn
+ Chú ý: lệnh trên có thể được viết: diff(expr,[x1,x2,…,xn]); Cách viết này
có lợi khi ta tính đạo hàm cấp 0 của f(x) Khi đó ta viết: diff(f(x),[0]);
Nếu n>=2 thì lệnh diff được thực hiện tuần tự theo số lần lấy đạo hàm đối với các biến Chẳng hạn: diff(f,x,y) tương đương với diff(diff(f,x),y);
Ta có thể dùng ký hiệu $ để thành lập các biểu thức
+ Ví dụ: tính diff(f,x,x,x,y,y) ta dùng diff(f,x$3,y$2);
Các đạo hàm riêng cùng cấp luôn được giả thiết là thỏa định lý SchwarzNếu lệnh diff được thay bởi Diff thì kết quả là ký hiệu chỉ đạo hàm cần tính
Trang 184.2 Toán tử vi phân D
Cú pháp:
+ D(f): tính đạo hàm của hàm một biến f
+ D[i](g): tính đạo hàm theo chỉ số biến i
Trong đó g là biểu thức dạng hàm, i là số nguyên dương hay một biểu thức hoặc một dãy các đối tượng
4.3 Khai triển hàm thành chuổi tổng quát - Khai triển Taylor
Cú pháp: series(expr,eqn); và series(expr,eqn,n); : khai triển expr thành chuỗi đối
với biến x trong lân cận của điểm a cho đến số hạng bậc n, nếu:
+ a là vô hạn thì khai triển được tính theo t=1/x (khai triển tiệm cận)
+ eqn chỉ là tên x thì khai triển được xét trong lân cận của điểm x=0
Trong đó, expr: là một biểu thức
eqn: là một phương trình (x=a) hay một tên (x)
n: (tùy chọn) là một số nguyên không âm
Chú ý:
- Nếu khai triển gần đúng thì số hạng bậc là số hạng cuối của chuỗi
- Kết quả của lệnh series là một khai triển chuỗi tổng quát.
Hàm taylor dùng để khai triển Taylor của expr theo x trong lân cận của điểm x=a cho đến bậc n như trường hợp giới hạn của hàm series Ta dùng lệnh sau:
Trong đó: f,f[1],…,f[m]: là các biểu thức hay phương trình,
y, y[1],…,y[n]: là các tên (biến) hay hàm theo các tên,
Trang 19u, u[1],…,u[r]: là các tên (của biến phụ thuộc).
Các trường hợp trên được dùng theo ý nghĩa tương ứng sau:
1 Tính đạo hàm dy/dx của hàm ẩn y=y(x) xác định từ phương trình f
Đối số thứ hai y xác định các biến phụ thuộc, các biến độc lập và các hằng số
a Nếu y là một tên thì y là biến phụ thuộc Mọi tên khác trong f và các biến lấy đạo hàm x (không phải là hằng số) đều được xem là biến độc lập Ví dụ lệnh implicitdiff (a=b*c/d,b,d) xác định rằng b là biến phụthuộc, được xem là hàm theo a, c, d với d là biến lấy đạo hàm
b Nếu y=y(x[1],…,x[i] thì lệnh) implicitdiff (a=b*c/d,b,d) xác định rằng
b là hàm của c, d và a được xem là hằng số
2 Có tác dụng như diff nếu không kể đối số f
3 Đối số thứ nhất là hệ phương trình gồm các phương trình f[1],…,f[m], xác định đối số thứ hai như là các hàm ẩn xác định từ hệ và u là một hàm trong
số đó, x là biến lấy đạo hàm
4 Lệnh dùng để tính các đạo hàm cấp cao của u tuần tự theo các biến x[1],…,x[k] đã chỉ ra
5 Lệnh dùng để tính các đạo hàm riêng của các hàm u[1],…,u[r] đối với x.Kết quả sẽ là một hệ phương trình dạng j i
J dx
du
với J i chứa các Jacobian của các hàm đối với các biến
6 Tương tự như trên, nhưng kết quả sẽ là hệ phương trình dạng
Nếu đối số tùy chọn là notation = D hoặc không có đối số này trong lệnh thứ
5 hay thứ 6 thì kết quả sẽ được ký hiệu là D(f) hay Di(f) tương ứng với f là hàm một biến hay nhiều biến Nếu đối số tùy chọn là notation =Diff thì kết quả sẽđược ký hiệu tương ứng với lệnh Diff(f,x) đối với hàm một biến hay tương ứng với Diff(f,x)[name] đối với hàm nhiều biến, trong đó name là một dãy các biến còn lại ngoài biến lấy đạo hàm
4.5 Giới hạn
Để tính giới hạn của hàm số tại a ta dùng lệnh có cú pháp sau:
> limit(f(x),x=a);
j j
i J dx
du
,
Trang 20Trong đó f(x) là biểu thức cần tìm giới hạn và a là điểm tại đó cần tính giới hạn (nếu a là vô cùng thì ta viết x= infinity).
Ngoài ra, ta có thể tính giới hạn theo hướng (trái hoặc phải)
Trong đó x=a b: khoảng lấy tích phân
Lệnh: evalf(Int(f,x=a b,digits,flag)); : lấy giá trị tích phân chính xác đến n(digits)
số, flag là tên phương pháp được dùng
5.2 Tích phân bội
Ta có thể tính tích phân hai lớp, tích phân ba lớp bằng Maple với các hàm
Doubleint, Tripleint trong gói student Hàm value được dùng để nhận được kết quả
Trong đó: g: là biểu thức dưới dấu tích phân,
x,y: các biến lấy tích phân,a,b,c,d: các cận trên và cận dưới xác định các khoảng lấy tích phân,Domain: tên miền lấy tích phân
Đối với tích phân ba lớp ta thực hiện cú pháp sau:
> student[Tripleint](g,x,y,z);
> student[Tripleint](g,x,y,z,Domain);
> student[Tripleint](g,x=a b,y=c d,z=e f);
Trang 215.3 Tích phân từng phần
Ta tính tích phân bằng công thức tích phân từng phần cho các kết quả chưa
được tính bằng cách dùng hàm intparts với cú pháp sau:
> student[intparts](f,u);
Trong đó, f: là biểu thức dạng Int(udv,x),
u: là thừa số khả vi của biểu thức dưới dấu tích phân
Lệnh trên sẽ cho kết quả uv-Int(vdu,x)
5.4 Đổi biến số
Khi tích phân trả lại kết quả chưa được tính, ta có thể đổi biến lấy tích phân
và như vậy sẽ thay đổi biểu thức dưới dấu tích phân Để thực hiện cách tính này ta
dùng hàm changevar trong gói student với cú pháp sau:
> student[changevar](s,f);
> student[changevar](s,f,u);
> student[changevar](t,g,v);
Trong đó, s: là biểu thức có dạng h(x)=g(u) xác định x như hàm của u,
f: là biểu thức được cho dưới dạng hình thức, chẳng hạn
Int(F(x),x=a b),u: là tên biến mới lấy tích phân,
t: là tập các phương trình xác định phép biến đổi nhiều lần,g: là ký hiệu hình thức của một tích phân bội,
v: là một danh sách các biến mới
Chú ý:
- Tham số thứ nhất trong các lệnh trên là một (hay tập các) phương trình xác định biến mới theo biến cũ Nếu có nhiều hơn hai biến thì biến mới phải được cho ở vị trí tham số thứ ba Tham số thứ hai là biểu thức thường chứa Int, Sum, Limit hay Doubleint hoặc Tripleint
- Phép biến đổi cũng có thể được cho dưới dạng ẩn
Nên dùng các dạng Int, Sum, Limit,… hơn là các dạng int, sum, limit,… và
chúng có thể được tính sau nhờ hàm value.
5.5 Tích phân mặt
Lệnh thực hiện:
> Doubleint(f(x,y),x=a b,y=c d);
Trang 22> Doubleint(g,x,y,Domain);
Với: x=a b,y=c d là khoảng lấy tích phân của biến đổi đối với hàm f(x,y),
Domain: miền xác định của tích phân
Ta có thể dùng Maple để tìm nghiệm chính xác của rất nhiều phương trình
vi phân thường và phương trình vi phân với điều kiện ban đầu và bài toán biên Hơn nữa, Maple cho phép ta tìm nghiệm xấp xỉ của bất kỳ phương trình vi phân nào Ngoài ra nó còn vẽ được đồ thị nghiệm của các phương trình vi phân thường
Một số ký hiệu cần nhớ:
- D(y) là đạo hàm bậc nhất của hàm y
- D(D)(y)(x) là đạo hàm bậc hai của y theo x
* Vẽ đồ thị nghiệm của phương trình và hệ phương trình vi phân:
Trong một số bài toán, ta không thể tìm được nghiệm ngay khi dùng tùy chọn method=laplace, do đó việc tìm nghiệm qua đồ thị trở nên thuận tiện
Lệnh vẽ:
> with(DEtools):
> Deplot(ode,dep-var,range,[init-conds]);
Với: ode: phương trình vi phân
dep-var: nghiệm của phương trình (biến phụ thuộc)
range: khoảng giá trị của biến độc lập
init-conds: các điều kiện ban đầu
Trang 236.2 Phương trình đạo hàm riêng
Phương trình đạo hàm riêng là phương trình chứa hàm cần tìm của hai hay nhiều biến với các đạo hàm riêng theo các biến này
Cấp của phương trình đạo hàm riêng là cấp cao nhất của đạo hàm có mặt trong phương trình này
2 3 , là phương trình đạo hàm riêng cấp hai.
Nghiệm của phương trình đạo hàm riêng là một hàm, nó thỏa mãn đồng nhất phương trình
Ở đây ta xét các phương trình đạo hàm riêng tuyến tính cấp hai
Bài toán biên của phương trình đạo hàm riêng là bài toán tìm kiếm các nghiệm của phương trình đạo hàm riêng trong miền xác định nào đấy thỏa mãn các điều kiện trên biên của miền gọi là điều kiện biên
Có nhiều phương pháp giải bài toán biên của phương trình đạo hàm riêng tuyến tính Phương pháp tách biến là một trong những phương pháp quan trọng nhất
+ Ý tưởng: đầu tiên ta tìm nghiệm tổng quát sau đó cho thỏa mãn điều kiện biên.+ Phương pháp: Giả thiết rằng nghiệm có được biểu diễn dưới dạng tích của các hàm chưa biết mà mỗi hàm chỉ phụ thuộc vào một biến độc lập Kết quả của phương pháp là có thể viết phương trình mà ở cả hai vế, mỗi vế chỉ phụ thuộc vào một biến, vì vậy mỗi vế phải bằng hằng số Ta lần lượt giải cho từng hàm chưa xác định Hợp các nghiệm này cho ta nghiệm cần tìm
- scaling=constrained (tỉ lệ hai trục như nhau), unconstrained
- discont=true: hàm biến thiên gián đoạn
Trang 24- style=point (điểm),line (liền nét), patch,patchnogrid.
- symbol=box, cross, circle, point, diamond
- linestyle=[m,n]: nét vẽ liên tục gạch chấm (solid, dash, dot)
m,n=1(solid),2(dot), 3(dash), 4(dash – dot)
- numpoints=….: số điểm vẽ
- coords=polar: tọa độ cực
- axes= none, normal
- thickness=0,1,2,3: độ lớn của nét vẽ (mặc nhiên là 0)
- filled=true: tô nền
- color= [color1,color2,…]: màu vẽ (red, blue, green, black, )
- view=[xmin xmax,ymin ymax]
- tickmarks=[m,n]: số khoảng chia trên hai trục, m=n=0: không chia
khoảng trên hai trục.(xtickmarks=m,ytickmarks=n)
- title=…: tên đồ thị
- titlefont=[family, style, size] Ví dụ: [HELVETICA,BOLD,24]
- labels=[‘Hor’, ‘Ver’]: nhãn trên trục ngang, đứng
Trang 25Trong đó : r(t) là hàm khoảng cách tính từ gốc, xác định trong khoảng t=t1 t2
x=a b,y=c d : khoảng xác định trên trục Ox và Oy
options : các tùy chọn
- scaling=contrained : tỉ lệ hai trục như nhau
- style=point, line: vẽ dạng điểm, đường
Trang 277.1.3 Vẽ nhiều đồ thị trên cùng một hệ trục tọa độ
1(2
),
x x
Trang 28expr1: biểu thức theo x và y
exprf, exprg, exprh: biểu thức theo s và t
- style=patch( hiển thị), contour, patchcontour, patchnogrid, wireframe
- title= ‘TEXT’: tên đồ thị
- labels=[‘Text1’, ‘Text2’, ‘Text3’]: tên các trục tọa độ
- axes= boxed, framed, normal, none( có thể chọn từ taskbar)
- color=c(x,y)
- shading=xyz, xy, z, zhue, zgrayscale, none: màu tại một điểm trên plot
- lightmodel=light1, , light4, none
- grid=[m,n], (mặc nhiên m=n=25, giá trị càng lớn hình càng mịn)
Trang 29m: số điểm dùng trong tọa độ thứ nhất
n: số điểm dùng trong tọa độ thứ hai
- orientation=[theta,phi]: vi trí quan sát plot trong không gian 3d
Trang 30- labels=[‘Text1’, ‘Text2’, ‘Text3’,…].
- axes= boxed, framed, normal, none (có thể chọn từ taskbar)
Trang 327.2.3 Vẽ nhiều dồ thị trên cùng hệ trục tọa độ
Trang 33> with(plots): hay with(plots,animate):, plots(animate):
> animate(f(x,t), x=a b, t=c d, options) ;
Trong đó: f(x,t) : hàm thực theo x và t
x=a b : khoảng vẽ trên trục ngang
t=c d : khoảng thông số khung, định sự thay đổi tọa độ giữa hai khung.Options: các tùy chọn
- coords= spherical, cylinderical, polar
- numpoints: số điểm vẽ
- frame= số khung
- scaling= constrained, unconstrained
- view= [m n, p q] : khoảng quan sát animate trên hai trục
- style= point, line
- color= red, blue, green, black…
- symbol= box, circle, cross, diamond, point
- linestyle= [m,n]: kiểu nét vẽ ( solid: 1, dot: 2, dash: 3, dash-dot: 4)
- thickness= 0,1,2,3 ( 0: default)
- resolution= n
Trang 34+ Lệnh thực hiện animate: Nhấp chuột vào đồ thị, trên màn hình xuất hiện taskbar
để điều khiển animate
> display([L]): animate đồng thời các đồ thị.
> display([L], insequence= true): animate tuần tự các đồ thị
Trang 35Trong đó: [L]: danh sách các lệnh vẽ đồ thị.
Ví dụ: Biểu diễn đồ thị của hàm sin(x) và cos(x):
a animate đồng thời hai đồ thị
> display([a1,a2], title= ‘SINE-COSINE’);
b animate tuần tự hai đồ thị
> restart;
> with(plots) :
> a3:= animate( sin(x+t), x=- Pi Pi, t=- Pi Pi, frames= 15, color= red) :
> a4:= animate( cos(x+t), x=- Pi Pi, t=- Pi Pi, frames= 15, color= blue) :
> display([a3,a4], insequence= true);
c Biểu diễn đồ thị tĩnh và động của hàm sin(x) trên cùng hệ trục tọa độ.
> restart;
> with(plots, animate, display) :
> a:= plots[animate]( sin(i+x), x=- Pi Pi, i=- Pi Pi, color= red) :
> b:= plots( sin(x), x=- Pi Pi, color= blue) :
> plots[display]({a,b});
7.3.3 Đồ thị động ba chiều
+ Lệnh vẽ:
> with(plots): hay with(plots, animate):
> animate(f(x,y,t), x=a b, y=c d, t=p q, options) ;
Trong đó: f(x,y,t) : hàm thực theo x, y và t
x=a b, y=c d : khoảng vẽ trên trục Ox và Oy
t=p q : khoảng thông số khung, định sự thay đổi tọa độ giữa hai khung.Options: các tùy chọn
- coords= spherical, cylinderical, polar
- numpoints: số điểm vẽ
Trang 36- frame= số khung
- scaling= constrained, unconstrained
- view= [m n, p q] : khoảng quan sát animate trên hai trục
- style= patch, patchcontour
- color= red, blue, green, black…c(x,y)
+ Lệnh thực hiện animate: Nhấp chuột vào đồ thị, trên màn hình xuất hiện taskbar
để điều khiển animate
+ Biểu diễn các đồ thị trên cùng hệ trục toạ độ
Lệnh thực hiện:
> with(plots):
> display([L]): animate đồng thời các đồ thị.
> display([L], insequence= true): animate tuần tự các đồ thị
Trang 37B ỨNG DỤNG MAPLE ĐỂ GIẢI PHƯƠNG TRÌNH ĐẠO HÀM RIÊNG TRONG CƠ HỌC LƯỢNG TỬ VÀ VẬT LÝ THỐNG KÊ LƯỢNG TỬ
1 Phương trình Schrodinger trong không gian 3 chiều
1.1 Hàm cầu
Phương trình Legendre liên kết:
21
2)
1(2
2
22
l dx
x dP x dx
x P d x
Bài tập: Thay vì sử dụng hàm Legendre như được định nghĩa trong Maple
thì ta sử dụng công thức Rodrigue (1 2)2 ( 2 1)
!2
1)
m l dx
m l d
m x l
x lm
*)1(),(
0m cho )
(cos)!
(
)!
(4
12)1(),(
m lm
Y
im e lm
P m l
m l l m lm
Trang 38ứng với mỗi giá trị của l, m ta thu được kết quả tương ứng:
Trang 40df d
f d
f (2)
Bài tập 1: Kỹ thuật lấy đạo hàm một hệ thức đệ quy dùng Maple Trước tiên
ta cần xác định phương trình chỉ số và các nghiệm của nó Chọn nghiệm l, ta lại trởlại phương trình vi phân; tổng hợp 5 số hạng liên tục là đủ để lấy đạo hàm hệ thức