Giải bài toán hình học vectơ trong mặt phẳng hình học không gian:

Một phần của tài liệu Tiểu luận LẬP TRÌNH SYMBOLIC VÀ ỨNG DỤNG (Trang 32 - 38)

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: (adsbygoogle = window.adsbygoogle || []).push({});

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 (adsbygoogle = window.adsbygoogle || []).push({});

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.

Một phần của tài liệu Tiểu luận LẬP TRÌNH SYMBOLIC VÀ ỨNG DỤNG (Trang 32 - 38)