1. Trang chủ
  2. » Luận Văn - Báo Cáo

ỨNG DỤNG MAPLE TRONG GIẢI BÀI TOÁN HÌNH HỌC GIẢI TÍCH

13 788 6
Tài liệu đã được kiểm tra trùng lặp

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 13
Dung lượng 102,08 KB

Nội dung

MÔ TẢ, PHÂN TÍCH VÀ VIẾT THỦ TỤC BÀI TOÁN 1/ Bài toán Viết phương trình đường thẳng qua một điểm vuông 1 đường thẳng dạng tham số và cắt một đường thẳng là giao tuyến 2 mặt phẳng... Yêu

Trang 1

ĐẠI HỌC QUỐC GIA THÀNH PHỐ HỒ CHÍ MINH TRƯỜNG ĐẠI HỌC CÔNG NGHỆ THÔNG TIN



BÁO CÁO MÔN HỌC

LẬP TRÌNH SYMBOLIC VÀ ỨNG DỤNG

ĐỀ TÀI:

ỨNG DỤNG MAPLE TRONG GIẢI BÀI TOÁN

HÌNH HỌC GIẢI TÍCH

Giảng viên : PGS.TS ĐỖ VĂN NHƠN Học viên thực hiện : ĐÀM THANH LONG

Mã số học viên : CH1101020

TP.HCM 2013

Trang 2

CHƯƠNG I.GIỚI THIỆU 1

CHƯƠNG II.MÔ TẢ, PHÂN TÍCH VÀ VIẾT THỦ TỤC BÀI TOÁN 2

1/ Bài toán 2

2/ Cơ sở lý thuyết và phương hướng giải quyết 4

3/ Phân tích bài toán 5

4/ Viết thủ tục 8

5/ Dữ liệu thử nghiệm 13

CHƯƠNG III.TỔNG KẾT VÀ HƯỚNG PHÁT TRIỂN 13

TÀI LIỆU THAM KHẢO 14

CHƯƠNG I. GIỚI THIỆU

Trang 3

Ngày nay, cùng với những thành tựu tuyệt vời 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ợ cho công tác học tập và nghiên cứu Một thực tiễn đã được biết từ lâu là những bài toán đặt ra trong thực tiễn thường không được giải quyết bằng những mẹo tính toán thủ công mà phải dùng đến năng lực tính toán của máy tính điện tử Phần mềm tính toán ra đời nhằm đáp ứng yêu cầu của thực tiễn, đưa các tính

toán phức tạp (cả phổ thông lẫn cao cấp) trở thành công cụ làm việc dễ dàng cho mọi

người

Toán học là thống nhất nên các phần mềm tính toán cũng có cấu trúc cơ bản giống nhau

Vì vậy, nếu biết sử dụng phần mềm toán học nào đó thì cũng dễ dàng sử dụng được các phần mềm khác Phần mềm tính toán Maple đã làm cho 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 là phần mềm do một nhóm các nhà khoa học của Canada thuộc trường đại học Waterloo làm ra với mục đích giải quyết mọi công việc liên quan đến tính toán

Mục tiêu của bài viết là sử dụng tính năng mạnh mẽ của phần mềm Maple để phân tích giải những bài toán khó và phức tạp

CHƯƠNG II. MÔ TẢ, PHÂN TÍCH VÀ VIẾT THỦ TỤC BÀI TOÁN 1/ Bài toán

Viết phương trình đường thẳng qua một điểm vuông 1 đường thẳng (dạng tham số) và

cắt một đường thẳng là giao tuyến 2 mặt phẳng

Trang 4

Yêu cầu bài toán suy ra đường thẳng cần tìm là giao tuyến của 2 mặt phẳng được xác định như sau Mặt phẳng thứ nhất qua 1 điểm đề bài và chứa đường thẳng là giao tuyến

2 mặt phẳng

Về mặt phẳng

Mặt phẳng phương trình chính tắc có dạng là: Ax +By + Cz +D=0

 Vector pháp tuyến của mặt phẳng và các vấn đề liên quan:

 Là vector có giá vuông gốc với mặt phẳng

Cho phương trình là Ax +By + Cz +D=0 thì vector pháp tuyến là n=(A, B, C)

Về đường thẳng

 Xác định đường thẳng cho điểm A(x0, y0, z0) và vector chỉ phương a⃗ = (a1, a2, a3) thì

 Phương trình tham số là {x=x0+a1t

y= y0+a2t z=z0+a3t

 Phương trình đường thẳng dạng này luôn được biểu diễn bởi 3 phương trình:

 Phương trình dạng chính tắc là x−x 0 a 1 = y− y 0 a2 = z−z 0 a 3

 Phương trình đường thẳng là giao của 2 mặt phẳng

Trang 5

d ={Phươngtrình mặt phẳng thứ 1 Phươngtrình mặt phẳng thứ 2

2/ Cơ sở lý thuyết và phương hướng giải quyết

Vector:

Được tạo từ hai điểm bất kỳ không trùng nhau

Cho A(a1, a2, a3) và B(b1, b2, b3) thì ⃗AB= (b1 – a1, b2 – a2, b3 – a3)

Tích hữu hướng hai vector: là một vector vuông góc với từng vector thành phần, có

phương được xác định theo nguyên tắc mở nút chai

Cho a⃗=( a1, a2, a3), b⃗=( b1, b2, b3) và c⃗=( c1, c2, c3) thì

a , ⃗b ⌉= (a2b3−a3b2, a3−a1b3, a1b2−a2b1,)

Hai vector cùng phương: khi tỷ lệ thành phần bằng nhau

Cho a⃗=( a1, a2, a3) và b⃗=( b1, b2, b3) ⃗a , b⃗ được gọi là cùng phương nếu và chỉ nếu a b1

1 = a b2

2

=a b3

3 Suy ra hai vector không cùng phương khi và chỉ khi tồn tại một thành phần có tỉ lệ không bằng các thành phần khác

Mặt phẳng:

Nếu có phương trình mặt phẳng thì ta luôn lấy được 1 vector pháp tuyến và 1 điểm

Nếu có 1 vector pháp tuyến và 1 điểm thì ta luôn viết được phương trình mặt phẳng Như vậy, mọi bài toán viết phương trình mặt phẳng ta đều có thể đưa về dạng bài toán trên (1 điểm và 1 vector pháp tuyến)

Chứng minh:

Đưa bài toán 3 điểm về bài toán 1 điểm và 1 vector pháp tuyến.

Trang 6

Từ 3 điểm, ta lập được 2 vector chỉ phương của mặt phẳng Từ 2 vector chỉ phương đó ta được vector pháp tuyến của mặt phẳng

Lấy 1 điểm tùy ý trong 3 điểm kết hợp với vector pháp tuyến mới tìm được, ta có bài toán

1 điểm và 1 vector pháp tuyến

Đưa bài toán 2 điểm và 1 vector chỉ phương về bài toán 1 điểm và 1 vector pháp tuyến.

Từ 2 điểm, ta lập được 1 vector chỉ phương Kết hợp với vector chỉ phương đề bài, ta được vector pháp tuyến của mặt phẳng

Lấy tùy ý 1 trong 2 điểm kết hợp với vector pháp tuyến mới tìm được, ta được bài toán 1 điểm và 1 vector pháp tuyến

Đưa bài toán 1 điểm và 2 chỉ về bài toán 1 điểm và 1 vector pháp tuyến.

Từ 2 vector chỉ phương ta tìm được vector pháp tuyến của mặt phẳng Kết hợp với điểm

đề bài ta có bài toán 1 điểm và 1 vector pháp tuyến

Đường thẳng:

Nếu có phương trình đường thẳng thì ta luôn lấy được 1 điểm và 1 vector chỉ phương Nếu có 1 điểm và 1 vector chỉ phương ta luôn viết được phương trình đường thẳng hoặc nếu có 2 điểm thì ta cũng viết được phương trình đư ờng thẳng bằng 2 cách

Giải quyết bài toán phương trình đường thẳng có rất nhiều cách Tuy nhiên ta sẽ giải quyết bài toán gọn nhẹ dễ dàng

Mọi bài toán viết phương trình đường thẳng ta đều đưa về được dạng cơ bản là điểm và vector chỉ phương

Như vậy, muốn viết được phương trình đường thẳng ta cần một điểm và một vector chỉ phương

3/ Phân tích bài toán

Trang 7

Đây là một bài toán khó và khá phức tạp, ta giải bài toán này theo các bước sau.

Yêu cầu: Nếu có phương trình đường thẳng dạng chính tắc ta cũng dễ dàng chuyển tham

số được Do đó ta chỉ xét đối với bài toán phương trình đường thẳng có dạng phương trình tham số

Hàm th i ế t l ập: PTMPQua1DiemChuaDTGiao2MP(điểm, mặt phẳng 1, mặt phẳng 2)

Mặt phẳng thứ 2 qua 1 điểm đề bài và vuông góc đường thẳng dạng tham số

Hàm thiết lập: PTMPQua1DiemVuong1DTTS(điểm, phương trình 1, phương trình 2,

phương trình 3).

Chuyển phương trình đường thẳng dạng giao tuyến của 2 mặt phẳng về dạng tham số

Hàm thi ế t l ập: PTDTTSGiao2MP(mặt phẳng 1, mặt phẳng 2 ).

Thử lại xem đường thẳng cần tìm có cắt đường thẳng dạng tham số hay không

Hàm th i ế t l ập: KiemTra2VectorCungPhuong(vector, vector).

Cách l ậ p m ặ t p hẳ ng t h ứ 1

Ta có mặt phẳng cần tìm chứa đường thẳng đề bài suy ra vector chỉ phương của đường thẳng là vector chỉ phương 1 của mặt phẳng

Ta lấy 1 điểm thuộc đường thẳng là điểm thuộc 2 mặt phẳng (LayDiemThuoc2MP)

Cách 1: Bài toán 2 điểm và 1 vector chỉ phương.

Cách 2: Từ điểm đề bài và điểm lấy từ đường thẳng, ta tìm được vector chỉ phương 2

của mặt phẳng

Cách 2a: Bài toán 1 điểm và 2 vector chỉ phương.

Cách 2b: Lấy tích hữu hướng 2 vector chỉ phương ta được vector pháp tuyến của

mặt phẳng

Trang 8

Đây là bài toán 1 điểm và 1 vector pháp tuyến

Cách l ậ p m ặ t p hẳ ng t h ứ 2

Ta có mặt phẳng vuông góc đường thẳng suy ra vector chỉ phương của đường thẳng là vector pháp tuyến của mặt phẳng

Ta có bài toán viết phương trình m ặt phẳng qua 1 điểm và có 1vector pháp tuyến

Như vậy ta có được phương trình đư ờng thẳng cần tìm là giao tuyến của 2 mặt phẳng Bây giờ, ta chuyển dạng phương trình trên v ề phương trình tham s ố

Bài toán viết phương trì nh đường thẳng là giao tuyến 2 mặt phẳng.

Từ mặt phẳng thứ 1 ta có được vector pháp tuyến 1 (LayPhapMP).

Từ mặt phẳng thứ 2 ta có được vector pháp tuyến 2 (LayPhapMP).

Lấy tích hữu hướng 2 vector pháp tuyến đó ta có vector chỉ phương của đường thẳng cần tìm

Từ hệ 2 phương trình mặt phẳng, ta chọn điểm đặc biệt thuộc đường thẳng thì thỏa hệ 2 phương trình đó

Gọi Z xZ , yZ , 0 thuộc 2 mặt phẳng thì xZ , yZ thỏa phương trình của 2 mặt phẳng Giải hệ tìm được xZ và yZ (LayDiemDTGiao2MP).

Đây chính là bài toán viết phương trình đường thẳng qua 1 điểm và có 1 vector chỉ phương

T

h ử l ạ i

Từ phương trình đường thẳng mới tìm được ta lấy được vector chỉ phương (laychiDTTS).

Ta cũng có vector ch ỉ phương của đường thẳng dạng tham số.(LayChiDTTS).

Ta kiểm tra xem 2 vector này có cùng phương không? (KiemTra2VectorCungPhuong).

Trang 9

 Nếu không cùng phương thì nhận đường thẳng mới tìm.

 Ngược lại, kết luận không có đường thẳng cần tìm

4/ Viết thủ tục

> TaoVector := proc(A, B)

return B[1]-A[1], B[2]-A[2], B[3]-A[3]

end proc;

> LayPhapMP := proc(pt)

return Vector([coeff(lhs(pt), x, 1), coeff(lhs(pt), y, 1),

coeff(lhs(pt), z, 1)])

end proc;

> TichHuuHuong := proc(u, v)

return u[2].v[3]-u[3]*v[2], u[3]*v[1]-u[1]*v[3],

u[1]*v[2]-u[2]*v[1]

end proc;

> LayChiDTTS := proc(pt1, pt2, pt3)

return Vector([coeff(rhs(pt1), t, 1), coeff(rhs(pt2), t, 1),

coeff(rhs(pt3), t, 1)])

end proc;

> LayChiDTGiao2MP := proc(pt1, pt2)

return TichHuuHuong(LayPhapMP(pt1), LayPhapMP(pt2))

end proc;

> PTDTTS1Diem1Chi := proc(A, a)

local t;

print(Bai toan viet PTDT qua mot diem va co motVTCP);

lprint(Ta co diem ma duong thang di qua la(A[1], A[2], A[3])); lprint(VTCP cua duong thang la(a[1], a[2], b[3]));

lprint(PTDT tham so co dang);

print(x = A[1]+a[1]*t);

print(y = A[2]+a[2]*t);

print(z = A[3]+a[3]*t);

print(voi t in R))

end proc;

> LayDiemDTGiao2MP := proc (mp1, mp2)

return rhs(subs(z = 0, solve({mp1, mp2}, {x, y})[1])), rhs(subs(z

= 0, solve({mp1, mp2}, {x, y})[2])), 0

end proc;

> LayDiemThuoc2MP := proc(mp1, mp2)

lprint(Chon Z(k, 1, 0)mat phang Ta co);

lprint(subs(y = 1, subs(x = k, subs(z = 0, mp1)))); lprint(subs(x

= k, subs(y = 1, sub(z = 0, mp2))));

lprint(`Suy ra`);

lprint(subs(x = k, subs(z = 0, solve({mp1, mp2}, {x, y})[1]))); lprint(subs(y = 1, subs(z = 0, solve({mp1, mp2}, {x, y})[2]))); lprint(Vay diem mat phang la(rhs(subs(z = 0, solve({mp1, mp2}, {x,

Trang 10

return rhs(subs(z = 0, solve({mp1, mp2}, {x, y})[1])), rhs(subs(z

= 0, solve({mp1, mp2}, {x, y})[2])), 0);

end proc;

> PTMP1Diem1Phap := proc(A, n)

local ptmp;

print(Bai toan PTMP qua mot diem va co mot VTPT);

lprint(Ta co VTPT cua mat phang la(n[1], n[2], n[3]));

lprint(PTMP co dang);

print(n[1]*x+n[2]*y+n[3]*z+d = 0);

lprint(Ta co diem(A[1], A[2], A[3]));

lprint(Vi diem thuoc mat phang nen d

=(-n[1]*A[1]-n[2]*A[2]-n[3]*A[3]);

lprint(Nen PTMP la);

print(n[1]*x+n[2]*y+n[3]*z-n[1]*A[1]-n[2]*A[2]-n[3]*A[3] = 0);

return n[1]*x+n[2]*y+n[3]*z-n[1]*A[1]-n[2]*A[2]-n[3]*A[3] = 0: end proc;

> PTMP1Diem2Chi := proc(A, n, m)

print(Baitoan PTMP Diem va co VTCP);

lprint(Ta co VTCP1 la(n[1], n[2], n[3]));

lprint(Ta co VTCP2 la(m[1], m[2], m[3]));

lprint(Suy ra VTPT cua mat phang la(TichHuuHuong(n, m)[1],

TichHuuHuong(n, m)[2], TichHuuHuong(n, m)[3]));

lprint(Bai toan tro thanh);

PTMP1Diem1Phap(A, TichHuuHuong(n, m))

end proc;

> PTMP2Diem1Chi := proc(A, B, a)

print(Bai toan PTMP qua hai Diem va co mot VTCP);

lprint(Ta co diem mot(A[1], A[2], A[3]);

lprint(`diem 2`(B[1], B[1], B[3]));

lprint(Suy ra VTCP2 cua mat phang la(TaoVector(A, B)[1],

TaoVector(A, B)[2], TaoVector(A, B)[3]));

lprint(Ta co VTCP1 cua mat phang la(a[1], [2], [33])); lprint(Bai toan tro thanh);

PTMP1Diem2Chi(A, a, TaoVector(A, B))

end proc;

# Mặt phẳng thứ nhất qua một điểm đề bài và chứa đường thẳng là giao tuyến 2 mặt phẳng

> PTMPQua1DiemChua1DTGiao2MP := proc(A, mp1, mp2)

print(Bai toan viet PTMP qua mot diem va chua duong thang la giao tuyen hai mat phang);

lprint(Ta co Phuong trinh duong thang la giao tuyen hai mat

phang);

lprint(mp1);lprint(mp2);

lprint(Vector phap tuyen mat phang thu nhat la(LayPhapMP(mp1)[1], LayPhapMP(mp1)[2], LayPhapMP(mp1)[3]));

lprint(Vector phap tuyen mat phang thu hai la(LayPhapMP(mp2)[1],

Trang 11

LayPhapMP(mp2)[2], LayPhapMP(mp2)[3]));

lprint(Vector huu huong hai mat phang la(LayChiDTGiao2MP(mp1, mp2) [1], LayChiDTGiao2MP(mp1, mp2)[2], LayChiDTGiao2MP(mp1, mp2)[3])); lprint(Suy ra Vector chi Phuong cua duong thang la

(LayChiDTGiao2MP(mp1, mp2)[1], LayChiDTGiao2MP(mp1, mp2)[2],

LayChiDTGiao2MP(mp1, mp2)[3]));

lprint(Suy ra VTCP1 cua mat phang la(LayChiDTGiao2MP(mp1, mp2)[1], LayChiDTGiao2MP(mp1, mp2)[2], LayChiDTGiao2MP(mp1, mp2)[3])); LayDiemThuoc2MP(mp1, mp2);

lprint(Taco diem ban dau la(A[1], A[2], A[3]));

lprint(Bai toan tro thanh);

PTMP2Diem1Chi(A, LayDiemThuoc2MP(mp1, mp2), LayChiDTGiao2MP(mp1, mp2))

end proc;

# Mặt phẳng thứ 2 qua 1 điểm đề bài và vuông góc đường thẳng dạng tham số

> PTMPQua1DiemVuong1DTTS := proc(A, pt1, pt2, pt3)

print(Bai toan viet PTMP qua mot diem va vuong goc mot duong

thang);

lprint(Ta co phuong trinh duong thang la);

lprint(pt1);

lprint(pt2);

lprint(pt3);

lprint(Suy ra VTPT cua duong thang la(LayChiDTTS(pt1, pt2, pt3) [1], LayChiDTTS(pt1, pt2, pt3)[2], LayChiDTTS(pt1, pt2, pt3)[3])); lprint(Bai toan tro thanh);

PTMP1Diem1Phap(A, LayChiDTTS(pt1, pt2, pt3))

end proc;

# Chuyển phương trình đường thẳng dạng giao tuyến của 2 mặt phẳng về dạng tham số

> PTDTTSGiao2MP := proc(mp1, mp2)

local t, a, b, c, m, n, p, X, Y, T;

print(Bai toan viet ptdt la giao cua hai mat phang);

lprint(Ta co phuong trinh hai mat phang la);

lprint(mp1);

lprint(mp2);

a := coeff(lhs(mp1), x, 1);

b := coeff(lhs(mp1), y, 1);

c := coeff(lhs(mp1), z, 1);

m := coeff(lhs(mp2), x, 1);

n := coeff(lhs(mp2), y, 1);

Trang 12

X := Vector([a, b, c]);

Y := Vector([m, n, p]);

lprint(Ta co VTPT cua mat phang mot la(a, b, c));

lprint(Ta co VTPT cua mat phang hai la(m, n, p));

lprint(Suy ra vector huu huong la(TichHuuHuong(X, Y)[1],

TichHuuHuong(X, Y)[2], TichHuuHuong(X, Y)[3]));

lprint(Suy ra vector VTCP cua duong thang la(TichHuuHuong(X, Y) [1], TichHuuHuong(X, Y)[2], TichHuuHuong(X, Y)[3])); lprint(Bai toan tro thanh);

T := LayDiemThuoc2MP(mp1, mp2);

lprint(Bai toan tro thanh);

PTDTTS1Diem1Chi(T, TichHuuHuong(X, Y))

end proc;

# Thử lại xem đường thẳng cần tìm có cắt đường thẳng dạng tham số hay không?

> KiemTra2VectorCungPhuong := proc(u, v)

local T, m, n, p;

print(Bai toan kiem tra hai vector cung phuong);

print(Vector thu nhat la(u[1], u[2], u[3]));

print(Vector thu hai la(v[1], v[2], v[3]));

m := u[1]*v[2]-u[2]*v[1];

n := u[2]*v[3]-u[3]*v[2];

p := u[1]*v[3]-u[3]*v[1];

if m = n and n = p then

lprint(Ta co cac thanh phan cua hai vector bang nhau);

lprint(Suy ra hai vector cung phuong);

return 1

else

lprint(Ta co cac ty le thanh phan cua hai vector khong bang nhau);

lprint(Suy ra hai vector khong cung phuong)

end if

end proc;

5/ Dữ liệu thử nghiệm

> PTMPQua1DiemChua1DTGiao2MP([30, 15, 6], x+2*y+2*z+30 = 0, x+y+6*z-43 = 0)

> PTMPQua1DiemVuong1DTTS([30, 15, 6], (x=30+2*t, y=15+1*t, z=6 +3*t), (x=30+9*t,

y=15+1*t, z=6 +3*t), (x=30+2*t, y=15+5*t, z=6 +2*t)

> PTDTTSGiao2MP(1*x+2*y+5*z+30 = 0, 3*x+1*y+6*z-43 = 0)

> KiemTra2VectorCungPhuong([2, 4, 3], [2, 4, 3])

Trang 13

CHƯƠNG III.TỔNG KẾT VÀ HƯỚNG PHÁT TRIỂN

Bài viết này sử dụng các hàm có sẳn và một số hàm người viết định nghĩa trong Maple, cách viết các thủ tục và từ đó có thể xây dựng nhiều chương trình khác phục vụ cho việc giải những bài toán phổ thông, việc vận dụng giải bài toán là nhằm mục đích giúp chúng

ta có những suy luận trong hướng tiếp cận lập trình symbolic mà sử dụng công cụ lập trình Maple

Vấn đề ở đây không phải là đi giải một bài toán, mà là làm thế nào để xây dựng một công

cụ trên máy tính để có hướng tư duy để giải quyết bài toán như thế nào chủ động hơn và phát huy tối ta khả năng của công cụ để từ đó nâng lên một tầm cao hơn trong thời đại cộng nghệ mới ngày nay

TÀI LIỆU THAM KHẢO

[1] PGS.TS Đỗ Văn Nhơn, Bài giảng lập trình symbolic, ĐHCNTT, 2012.

[2] J J O’Connor and A P Naughton, Symbolic computation, 2009.

Ngày đăng: 10/04/2015, 01:35

TỪ KHÓA LIÊN QUAN

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

w