1.6.1 Đặt vấn đề bài toán
Xây dựng các tính toán cho bài toán vectơ 3 chiều trong không gian
1.6.2 Biểu diễn bài toán
+ Vectơ 3 chiều trong không gian có dạng: + Các tính chất:
+ Mặt phẳng trong không gian:
1.6.3 Thuật toán
Input: Nhập giả thiết các Vectơ cho trước
Output: Các tính chất của vector đã mô tả trong mục Biểu diễn bài toán
1.6.4 Cài đặt thuật toán
> HieuVector := proc(A,B)#Hiệu 2 vector return [B[1]-A[1],B[2]-A[2],B[3]-A[3]]; end proc:
ModuleVector := proc(vector)#Chiều dài vectơ
return sqrt(vector[1] ^2+vector[2]^2+vector[3]^2); end proc:
TongVector := proc(A,B)#Tổng 2 vectơ
return [A[1]+B[1],A[2]+B[2],A[3]+B[3]]; end proc:
TichVoHuong := proc(A,B)#Tích vô hướng 2 vectơ
return A[1].B[1]+ A[2].B[2] + A[3].B[3]; end proc:
TichHuuHuong := proc(A,B)#Tích có hướng 2 vectơ
return [ A[2].B[3] - A[3].B[2], A[3].B[1]-A[1].B[3], A[1].B[2] - A[2].B[1] ]; end proc:
CosGoc := proc(A,B)#Cos của góc tạo bởi 2 vectơ
return TichVoHuong(A,B)/(ModuleVector(A)*ModuleVector(B)); end proc:
SinGoc := proc(A,B)//Sin của góc tạo bởi 2 vectơ
return ModuleVector(TichHuuHuong(A,B))/(ModuleVector(A)*ModuleVector(B)); end proc:
KiemTra2VectorCungPhuong := proc(A,B)
if(B[1]=0 and B[2] = 0 and B[3] =0) then return 1
elif (B[1]=0 or B[2]=0 or B[3] = 0) then return 0
elif (A[1]/B[1] = A[2]/B[2]) and (A[1]/B[1] = A[3]/B[3]) then return 1 else return 0 end if; end proc: KiemTra3VectorDongPhang := proc(A,B,C) if TichVoHuong(A, TichHuuHuong(B,C)) = 0 then return 1 else return 0 end if; end proc: KiemTra3DiemThangHang := proc(A,B,C)
return KiemTra2VectorCungPhuong( HieuVector(A,B),HieuVector(A,C)); end proc:
DiemTheoTiVector := proc(A,B,k)
if k=1 then return [0,0,0] else
return [(A[1] -k*B[1])/(1-k),(A[2] -k*B[2])/(1-k),(A[3] -k*[3])/(1-k) ] end if; end proc: TrungDiemC1 := proc(A,B) return DiemTheoTiVector(A,B,-1); end proc: TrungDiemC2 := proc(A,B)
return [(A[1] +B[1])/2,(A[2] +B[2])/2,(A[3] +B[3])/2 ]; end proc:
TrongTamTamGiac := proc(A,B,C)
return [(A[1] +B[1] +C[1])/3,(A[2] +B[2] +C[3])/2,(A[3] +B[3]+C[3])/3 ]; end proc: TrucTamTamGiac := proc(A,B,C) local H,pt1,pt2,pt3,vectAH,vectBC,vectBH,vectAC,vectABC,hpt; H:= [x,y,z]; vectAH:= HieuVector(A,H); vectBC:= HieuVector(B,C); vectBH:= HieuVector(B,H); vectAC:= HieuVector(A,C); vectABC:= TichHuuHuong(vectBC,vectAC); pt1:=TichVoHuong(vectAH,vectBC) = 0; pt2:= TichVoHuong(vectBH,vectAC) = 0; pt3:= TichVoHuong(vectAH, vectABC) = 0; hpt:={pt1,pt2,pt3}; return solve(hpt,{x,y,z}); end proc:
vectAB:= HieuVector(A,B); vectAC:= HieuVector(A,C); AB:= ModuleVector(vectAB); AC:= ModuleVector(vectAC); k:= -AB/AC; DiemTheoTiVector(B,C,k); end proc:
TamNoiTamGiac := proc(A,B,C)#Tâm đường tròn nội tiếp tam giác
local chanA,chanB;
chanA := ChanDuongPhanGiac(A,B,C); return ChanDuongPhanGiac(B, chanA,A); end proc: DienTich := proc(A,B,C) local vectAB,vectAC,vectHH; vectAB:= HieuVector(A,B); vectAC:= HieuVector(A,C); vectHH:= TichHuuHuong(vectAB,vectAC); return ModuleVector(vectHH)/2; end proc:
LayPhapMP := proc(P) #ex: P:= 2*x+y+z-8 = 0;
return [coeff(lhs(P),x),coeff(lhs(P),y), coeff(lhs(P),z)]; end proc:
PTMP1Diem1Phap := proc(A,n)#A la diem, n la vector phap tuyen
return n[1].(x-A[1]) + n[2].(y-A[2]) +n[3].(z-A[3]) = 0; end proc:
PTMP3Diem := proc(A,B,C)#Phương trình mặt phẳng tạo bởi 3 điểm
local vectAB,vectAC,n; vectAB := HieuVector(A,B); vectAC:= HieuVector(A,C); n:= TichHuuHuong(vectAB,vectAC); return PTMP1Diem1Phap(A,n); end proc:
PTMP2Diem1Chi := proc(A,B,a)#Hai diem A,B va n la vector chi phuong
local vectAB,n;
vectAB:= HieuVector(A,B); n:=TichHuuHuong(vectAB,a); return PTMP1Diem1Phap(A,n); end proc:
PTMP1Diem2Chi := proc(A,a,b)#Diem A va 2 vector chi phuong a,b
local n;
n:=TichHuuHuong(a,b);
return PTMP1Diem1Phap(A,n); end proc:
PTDTTS1Diem1Chi := proc (A, a) #1 diem va 1 vector chỉ phương a
return [x = A[1]+a[1]*h, y = A[2]+a[2]*h, z = A[3]+a[3]*h] end proc:
PTDTTS2Diem := proc(A,B)#2diem
local a;
a:= HieuVector(A,B);
end proc:
1.6.5 Chạy thử nghiệm
Kết quả:
KẾT LUẬN
Bài thu hoạch đã trình bày những kiến thức cơ bản để sử dụng các thư viện có sẵn của Mapple, đồng thời hướng dẫn một số công cụ cơ bản cho việc lập trình trong Mapple cũng như cách viết các thủ tục, cách gọi thực thi các thủ tục. Từ nền tảng này có thể xây dựng nên nhiều chương trình khác phục vụ cho công việc học tập, nghiên cứu khoa học và ứng dụng trong thực tiễn.
TÀI LIỆU THAM KHẢO
1. Tài liệu giảng dạy môn học Lập trình Symbolic cho Trí tuệ nhân tạo của thầy PGS. TS Đỗ Văn Nhơn – Đại học Công nghệ thông tin – Đại học Quốc gia TP.HCM.
2. Trang chủ Maple: http://mapplesoft.com 3. Tại mục Help của chương trình Mapple v.16.
4. Bài báo “Một số ứng dụng của Mapple vào các bài toán khảo sát hàm số và tích phân” trong dạy học toán ở Trung học phổ thông và cao đẳng sư phạm của Th.S Hồ Xuân Thắng.