1. Trang chủ
  2. » Thể loại khác

SKKN Ứng dụng lý thuyết toán để giải các bài toán tin Phần 3 Hình học tính toán

25 339 0
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 25
Dung lượng 356,73 KB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

SKKN Ứng dụng lý thuyết toán để giải các bài toán tin Phần 3 Hình học tính toánSKKN Ứng dụng lý thuyết toán để giải các bài toán tin Phần 3 Hình học tính toánSKKN Ứng dụng lý thuyết toán để giải các bài toán tin Phần 3 Hình học tính toánSKKN Ứng dụng lý thuyết toán để giải các bài toán tin Phần 3 Hình học tính toánSKKN Ứng dụng lý thuyết toán để giải các bài toán tin Phần 3 Hình học tính toánSKKN Ứng dụng lý thuyết toán để giải các bài toán tin Phần 3 Hình học tính toánSKKN Ứng dụng lý thuyết toán để giải các bài toán tin Phần 3 Hình học tính toánSKKN Ứng dụng lý thuyết toán để giải các bài toán tin Phần 3 Hình học tính toánSKKN Ứng dụng lý thuyết toán để giải các bài toán tin Phần 3 Hình học tính toánSKKN Ứng dụng lý thuyết toán để giải các bài toán tin Phần 3 Hình học tính toánSKKN Ứng dụng lý thuyết toán để giải các bài toán tin Phần 3 Hình học tính toánSKKN Ứng dụng lý thuyết toán để giải các bài toán tin Phần 3 Hình học tính toánSKKN Ứng dụng lý thuyết toán để giải các bài toán tin Phần 3 Hình học tính toán

Trang 1

I.2/ Mục tiêu nghiên cứu

I.3/ Nhiệm vụ nghiên cứu

I.4/ Đối tượng nghiên cứu

I.5/ Các phương pháp nghiên cứu

II PHẦN NỘI DUNG

II.1/ Lịch sử của vấn đề nghiên cứu

II.2/ Cơ sở lý luận của đề tài

II.3/ Thực trạng của vấn đề nghiên cứu

II.4/ Nội dung nghiên cứu và kết quả nghiên cứu

A/ NỘI DUNG NGHIÊN CỨU

A.1) Lý thuyết cơ bản về hình học tính toán

Trang 2

I PHẦN ĐẶT VẤN ĐỀ

I.1/ Lý do chọn đề tài

Để tiếp tục hoàn chỉnh chuyên đề bồi dưỡng HSG chuyên Tin “ỨNG DỤNG

LÝ THUYẾT TOÁN ĐỂ GIẢI CÁC BÀI TOÁN TIN”; qua quá trình nghiên cứu, giảng dạy, tham khảo ý kiến đồng nghiệp, tôi thấy rằng hàng năm các đề thi tin học trong khu vực cũng như Quốc gia có một số các bài toán trong lập trình tin học đề cập nhiều đến các yếu tố hình học, cụ thể là hình học tính toán Chính vì vậy tôi tiếp tục chọn viết tiếp đề tài về chuyên đề “ỨNG DỤNG LÝ THUYẾT TOÁN ĐỂ GIẢI

CÁC BÀI TOÁN TIN” (Phần 3: Hình học tính toán)

I.2/ Mục tiêu nghiên cứu

Như đã biết, toán học có ảnh hưởng rất lớn đến mọi lĩnh vực của cuộc sống Các bài toán tin nếu có được thuật toán dựa trên cơ sở lý thuyết toán học vững chắc

sẽ đem lại kết quả tốt hơn rất nhiều so với các thuật toán khác Giúp các em học sinh

có kiến thức tốt, tư duy tốt về lập trình; hình học tính toán là một trong những vấn đề

về kỹ thuật lập trình có ứng dụng tư duy toán học, cụ thể là hình học mà bất cứ người lập trình tin học đều cần phải biết xử lý

I.3/ Nhiệm vụ nghiên cứu

Trước hết là thực hiện đổi mới phương pháp giảng dạy Tin học làm cho học sinh sáng tạo tìm những kết quả, lời giải hay trên một “dạng bài toán tin có sử dụng toán học”; giúp bản thân nắm vững hơn nữa về lập trình, tư duy thuật toán, kỹ thuật lập trình về hình học tính toán, đồng thời trao đổi và học tập kinh nghiệm ở Quý Thầy Cô ở Tổ Tin học

I.4/ Đối tượng nghiên cứu

Trong nghiên cứu này, các học sinh được chọn là các em học lớp chuyên Tin học khối 10, 11, 12 và những học sinh bồi dưỡng chuẩn bị thi HSG cấp Tỉnh, cấp Quốc gia thuộc một trường THPT Chuyên Tiền Giang và một số giáo viên đứng lớp dạy tin học ở trường THPT đó

I.5/ Các phương pháp nghiên cứu

Trang 3

* Phương pháp suy luận, tổng hợp: kết hợp từ nhiều nguồn tài liệu tham khảo của các tác giả và tra cứu trên mạng internet với các đề thi Học sinh Giỏi rút ra những kinh nghiệm, hệ thống lại kiến thức, mở ra các hướng mới

* Phương pháp trò chuyện – phỏng vấn: trao đổi tâm tình với nhiều học sinh giỏi để nắm tình hình trong việc giải các bài toán tin về hình học

* Phương pháp khảo sát: bản thân được tham gia giảng dạy các lớp chuyên tin, đội tuyển HSG, các kỳ tập huấn, ra đề; tham khảo đồng nghiệp, quý Thầy Cô đã giảng dạy đội tuyển nhiều năm nên có nắm được tình hình sử dụng các phương pháp làm bài của các em học sinh

* Phương pháp phân tích lý luận: phân tích giúp học sinh nắm thật rõ bản chất vấn đề, lựa chọn được phương pháp giải cho phù hợp

Trang 4

II PHẦN NỘI DUNG

II.1/ Lịch sử của vấn đề nghiên cứu

Trong những năm liên tiếp dạy học sinh các lớp chuyên tin, bồi dưỡng HSG lớp 10, 11, 12 và đội tuyển thi HSG cấp Tỉnh, cấp Quốc Gia môn Tin học và bản thân tôi được tham dự lớp “BỒI DƯỠNG TẬP HUẤN GIẢNG DẠY CHUYÊN ĐỀ MÔN CHUYÊN TIN HỌC THPT” nhiều năm do Bộ GD&ĐT tổ chức Tôi nhận thấy kiến thức về Tin học của mình được nâng lên rõ rệt Các bài giảng của các Thầy NGUYỄN THANH TÙNG, Thầy ĐỖ ĐỨC ĐÔNG, Thầy LÊ MINH HOÀNG, cũng như tham khảo ý kiến các đồng nghiệp chuyên dạy bồi dưỡng đội tuyển ở các Tỉnh bạn, ở các trường THPT Chuyên, tôi rút ra một điều là “KIẾN THỨC TOÁN HỌC RẤT QUAN TRỌNG DẠY LẬP TRÌNH TRONG TIN HỌC” Được sự động viên khuyến khích của quý Thầy Cô trong tổ, cũng như thầy LÊ NGỌC LINH, tôi mạnh dạng tiếp tục chọn viết phần ba cho đề tài này là “Hình học tính toán”;

II.2/ Cơ sở lý luận của đề tài

Kết hợp bài giảng và các tài liệu tham khảo, kiến thức của bản thân để phân tích, tổng hợp, hệ thống

II.3/ Thực trạng của vấn đề nghiên cứu

Đa số học sinh chuyên tin rất ngại, sợ khi giải các bài toán tin về hình học trong toán; rất lúng túng trong quá trình phân tích, tổ chức dữ liệu, thuật toán, kỹ thuật lập trình để tìm ra bản chất và vận dụng kiến thức một cách thích hợp

II.4/ Nội dung nghiên cứu và kết quả nghiên cứu

A/ NỘI DUNG NGHIÊN CỨU

A.1) Lý thuyết cơ bản về hình học tính toán

A.1.1) Kiến thức cơ bản của hình học

Trang 5

O A

thì AB AB + Nếu A(a), B(b) thì ABb a

+ Hệ thức Sa–lơ: Với A, B, C tuỳ ý trên trục, ta có: AB BC AC

b) Hệ trục toạ độ

 Hệ gồm hai trục toạ độ Ox, Oy vuông góc với nhau Vectơ đơn vị trên Ox, Oy

lần lượt là i j  ,

O là gốc toạ độ, Ox là trục hoành, Oy là trục tung

 Toạ độ của vectơ đối với hệ trục toạ độ: u   ( ; )x yu x i.y j.

A.1.1.2) Tích vô hướng (tích chấm)

a) Góc giữa hai vectơ

Cho a b ,  0

Từ một điểm O bất kì vẽ OAa OB, b

   

Khi đó a b , AOB

= 0 0  a b ,

cùng hướng + a b ,

= 180 0  a b ,

ngược hướng + a b ,  b a ,

Trang 6

b) Tích vô hướng của hai vectơ

; a2  0;a2  0 a 0 

+ a b 2 a2  2 a b b    2

A.1.1.3) Tích hữu hướng (tích chéo)

Tích chéo của hai vectơ u

v

nhân với sin của góc xen giữa hai vectơ đó Góc xen

giữa hai vecto này là góc định hướng, có số đo từ  tới  , số đo mang dấu dương

nếu chiều quay từ u

tới v

là chiều thuận (ngược chiều kim đồng hồ) và mang dấu

âm nếu chiều quay từ u

tới v

là chiều nghịch (theo chiều kim đồng hồ)

Bằng công cụ đại số tuyến tính, người ta chứng minh được công thức của tích chéo giữa hai vecto ux y u, u

Trang 7

tức là giá trị của tích chéo bằng định thức của ma trận u v

Tích chéo có một ứng dụng quan trọng trong việc khảo sát chiều: Giả sử ta đi

từ điểm A sang điểm B theo đường thẳng và đi tiếp sang điểm C theo đường thẳng, khi đó:

b) Vectơ pháp tuyến của đường thẳng

Trang 8

Cho đường thẳng  đi qua M x y0( ;0 0) và có VTCP u  ( ;u u1 2)

d) Phương trình chính tắc của đường thẳng

Cho đường thẳng  đi qua M x y0( ;0 0) và có VTCP u  ( ;u u1 2)

e) Phương trình tổng quát của đường thẳng

PT ax by c   0 với a2b2  0 đgl phương trình tổng quát của đường thẳng

thì phương trình của 

là:

a x x(  0) b y y(  0)  0

Các trường hợp đặc biệt:

Các hệ số Phương trình đường thẳng  Tính chất đường thẳng 

c = 0 ax by  0  đi qua gốc toạ độ O

Trang 9

  đi qua hai điểm A(a; 0), B(0; b) (a, b  0): Phương trình của  : x y

ab 1 (phương trình đường thẳng theo đoạn chắn)

  đi qua điểm M x y0( ;0 0) và có hệ số góc k: Phương trình của  :

y y 0 k x x(  0)

(phương trình đường thẳng theo hệ số góc)

f) Vị trí tương đối của hai đường thẳng

Cho hai đường thẳng 1: a x b y c1  1  1 0 và 2: a x b y c2  2  2  0

Toạ độ giao điểm của 1 và 2 là nghiệm của hệ phương trình:

g) Góc giữa hai đường thẳng

Cho hai đường thẳng 1: a x b y c1  1  1 0 (có VTPT n 1 ( ; )a b1 1

h) Khoảng cách từ một điểm đến một đường thẳng

 Khoảng cách từ một điểm đến một đường thẳng

Cho đường thẳng : ax by c   0 và điểm M x y0( ;0 0)

 Vị trí tương đối của hai điểm đối với một đường thẳng

Cho đường thẳng : ax by c   0 và hai điểm M x( M;y M), N x( N;y N) 

Trang 10

– M, N nằm cùng phía đối với   (ax Mby Mc ax)( Nby Nc) 0 

– M, N nằm khác phía đối với   (ax Mby Mc ax)( Nby Nc) 0 

 Phương trình các đường phân giác của các góc tạo bởi hai đường thẳng

Cho hai đường thẳng 1: a x b y c1  1  1 0 và 2: a x b y c2  2  2  0cắt nhau

Phương trình các đường phân giác của các góc tạo bởi hai đường thẳng 1 và

A.1.1.5) Đa giác

Đa giác là một đường gấp khúc khép kín Trong lập trình, một đa giác được

lưu bởi một dãy các đỉnh liên tiếp nhau A 1 , A 2 , …,A n

Diện tích đại số của một đa giác không tự cắt có thể được xác định bởi công

S chính là diện tích của đa giác

Đặc biệt, diện tích tam giác

Đường tròn (O; R) là tập hợp các điểm cách đều tâm O(x; y) một khoảng cách

R Đường tròn được hoàn toàn xác định bởi bộ ba số (x; y; R) với R > 0

Trang 11

A.1.2) Các giải thuật về hình học trong tin học

A.1.2.1) Khai báo kiểu các đối tượng trong Pascal

A.1.2.2) Biểu diễn tuyến tính

song song với nhau, khi đó:

+ (p; q) = (Nan; Nan) nếu c

Trang 12

A.1.2.3) Tìm giao điểm hai đường thẳng

Trên mặt phẳng với hệ tọa độ Đề-các vuông góc cho hai đường thẳng với phương trình tổng quát:

Tích chéo của hai vector

A.1.2.4) Tìm giao điểm hai đoạn thẳng

Tương tự, ta có thể tìm giao điểm của hai đoạn thẳng AB và CD:

- Viết phương trình tổng quát của hai đường thẳng AB và CD;

- Tìm giao điểm M của hai đường thẳng;

- Kiểm tra M có nằm trên đoạn thẳng AB và trên đoạn thẳng CD hay không

Phương trình đường thẳng đi qua hai điểm phân biệt A(x A ; y A ); B(x B ; y B) là

Function Vector (x, y : Float) : Tvector;

Trang 13

A.1.2.5) Tìm giao điểm giữa một đoạn thẳng và một tia

Tương tự, để tìm giao điểm duy nhất giữa đoạn thẳng AB và tia CD, ta có thể

sử dụng phương pháp tương tự như trên: Nếu M là giao điểm duy nhất của đoạn

thẳng AB và tia CD thì sẽ tồn tại duy nhất một cặp số thực p, q, trong đó

A.1.2.6) Tìm diện tích đa giác

Bài toán: Tính diện tích đa giác (lồi hoặc lõm và không tự cắt) gồm n đỉnh

A[1], A[2], …, A[n] (n>2)

Thuật toán: Ta có thể giải bài toán này bằng cách chia đa giác thành n − 2 tam

giác rồi tính tổng diện tích của các tam giác ấy Tuy nhiên phương pháp này phức tạp, ta làm cách khác như sau: chia đa giác thành các hình thang bằng cách chiếu các cạnh xuống trục hoành (hoặc trục tung) Hình thang được xác định bởi cạnh A[i]A[i+1] có diện tích là Abs(S) với:

S = (A[i].x - A [i+1].x).(A[i].y + A[i+1].y) /2;

sau khi gán đỉnh A[n+1] = A[1], ta tính diện tích toàn phần của đa giác như sau:

Trang 14

A.2) Một số bài tập áp dụng

I Dạng mối quan hệ giữa các yếu tố hình học

Bài 1 Kiểm tra tính lồi lõm của một đa giác

Trong mặt phẳng toạ độ có n điểm có toạ độ tương ứng là (x1, y1), (x2, y2) ,…, (xn, yn) Biết rằng n điểm đã cho theo thứ tự tạo thành các đỉnh của một đa giác không tự cắt

Yêu cầu: hãy kiểm tra đa giác lồi hay lõm

Dữ liệu vào: ghi trong file dagiac.inp dòng đầu ghi một số n (n>2), n dòng tiếp

theo, trên dòng thứ i ghi hai số thực theo thứ tự là hoành độ và tung độ của đỉnh thứ i-1 của đa giác

Dữ liệu ra: ghi vào file dagiac.out gồm một số 0 hoặc 1, ghi 0 nếu đa giác lõm

và ghi 1 nếu đa giác lồi

Thuật toán: Gọi diện tích của đa giác là S0 Ta sẽ so sánh S0 với các Si,

trong đó Si là diện tích của đa giác thu được từ đa giác ban đầu sau khi bỏ đi đỉnh thứ i (i=1, 2,…, n) Nếu $ i sao cho Si > S0 thì đa giác đã cho lõm (tại đỉnh thứ i), ngược lại thì đa giác đã cho lồi

s0:=abs(s0)/2 end;

Procedure Inkq(i:byte);

var f:text;

begin

Trang 15

for j:=1 to i-1 do b[j]:=a[j];

for j:=i+1 to n+1 do b[j-1]:=a[j];

s1:=0;

for j:=1 to n-1 do

b[j].x)*(b[j+1].y+b[j].y);

s1:=s1+(b[j+1].x-s1:=abs(s1)/2;

if s1>s0 then begin

inkq(0);

halt end;

end;

inkq(1);

End;

begin init;

resolve;

end

Bài 2 Chia đa giác (đề thi HS giỏi quốc gia lớp 12, bảng B, năm 1999- 2000)

Trong mặt phẳng toạ độ có n điểm có toạ độ tương ứng là (x1, y1), (x2, y2),…,(xn, yn) Biết rằng n điểm đã cho theo thứ tự tạo thành các đỉnh của một đa giác không tự cắt

Yêu cầu: hãy chia đa giác đã cho thành hai đa giác bởi một cạnh nối hai đỉnh

không kề nhau sao cho diện tích của chúng chênh lệch nhau ít nhất

Dữ liệu vào: ghi trong file dagiac.inp: dòng đầu ghi một số n (n>3), n dòng

tiếp theo, trên dòng thứ i ghi hai số thực theo thứ tự là hoành độ và tung độ của đỉnh thứ i-1của đa giác

Dữ liệu ra: ghi vào file dagiac.out gồm hai số nguyên dương chỉ số thứ tự của

hai đỉnh được nối sao cho thoả mãn điều kiện đầu bài

Thuật toán: Ta đưa ra thuật toán rất đơn giản như sau: thử tìm mọi cách chia

và ghi nhận lại cách chia tốt nhất Dễ thấy độ phức tạp của thuật toán trong trường hợp này là O(n3)

Trang 16

var a:array [1 100] of diem;

for j:= i to h do begin

s1:=abs(s1)/2;

if del>abs(2*s1-s0) then begin

vt1:=i;

vt2:=j;

del:=abs(2*s1-s0); end;

resolve;

end

Bài 3 Cho một đa giác và một điểm Hãy cho biết điểm đã cho có thuộc đa

giác hay không (điểm đó thuộc cạnh đa giác cũng coi như là thuộc đa giác)

Dữ liệu vào: n (số đỉnh của đa giác)

x1, y1

Trang 17

xn yn

x0, y0: tọa độ điểm cần xét

Dữ liệu ra: 'Thuộc đa giác' hoặc 'Không thuộc đa giác'

Thuật toán:

- Qua điểm A cần xác định, dựng tia Ax’ sao cho Ax’//Ox

- Xác định số giao điểm tia Ax’ với cạnh đa giác

- Xét số giao điểm

+ lẻ: điểm A thuộc đa giác

+ chẵn: điểm A không thuộc đa giác

 Đặc biệt hóa bài 3

a Chúng ta xét trường hợp đặc biệt của bài 3 Ta sẽ thay 'đa giác' bằng tam giác

Khi xét 1 tam giác, chúng ta sẽ nảy ra một 'ý tưởng' khác từ nhận xét sau:

Xét 1 điểm M thuộc ABC thì: SABC = SMAB + SMBC + S MAC

Còn nếu M không thuộc ABC thì: SABC < SMAB + SMBC + S MAC

Như vậy, với tam giác, ta có giải thuật sau:

- Tính SABC {có thể dùng công thức Herong hay bằng công thức:

II Dạng lớp bài toán về diện tích

1 Tính diện tích đa giác cho trước Đây là bài toán quen thuộc, cần nhớ để

vận dụng các bài toán khác

2 Bài toán về diện tích phủ: Cho một số hình chữ nhật, hãy tính diện tích mà

các hình chữ nhật trên phủ VD: - Tính SMAB + SMBC + S MAC =S’

Trang 18

- Xét:

+ SABC = S’ → M thuộc ABC + SABC ≠ S’ → M không thuộc ABC

3 Tổng quát hóa bài toán 2: Bây giờ, chúng ta thử tổng quát bài toán 2 từ 'tam

giác' lên 'tứ diện' xem sao: {Các tọa độ điểm bây giờ có dạng (x,y,z)}

Chúng ta cũng xuất phát từ nhận xét:

- M thuộc ABCD thì VABCD = VMABC + VMBCD +VMCDA + VMDAB

- M không thuộc ABCD thì VABCD < VMABC + VMBCD +VMCDA + VMDAB Chúng

ta hoàn toàn có thể tính được dễ dàng thể tích 1 tứ diện bằng công thức:

Chính vì thế, giải thuật trở nên đơn giản hơn:

- Tính V’ = VMABC + VMBCD +VMCDA + VMDAB

- Xét: + Nếu V’=V suy ra M thuộc tứ diện

+ Nếu V’ ≠ V suy ra M không thuộc tứ diện

4 Qua những bài toán trên, bạn hãy tham khảo 2 bài toán tổng hợp sau:

a Cho 1 đa giác trên mặt phẳng Đa giác có thể lõm Hãy cho biết số giao điểm của nó với 1 đa giác khác (đa giác này lồi)

VD:

b Cho tứ diện Hãy cho biết tâm hình cầu ngoại tiếp tứ diện nằm trong hay ngoài tứ diện

Trang 19

A.3) Một số bài tập đề nghị

Bài 1: Diện tích phủ bởi các tam giác

Trên mặt phẳng cho N tam giác được xác định bởi toạ độ của ba đỉnh (x1i, y1i), (x2i, y2i), (x3i, y3i) (i=1,2 ,N) Tất cả các toạ độ đều là số nguyên Cần tìm diện tích của phần mặt phẳng bị phủ bởi các tam giác này Giả thiết là tất cả các tam giác không suy biến (nghĩa là 3 đỉnh của tam giác là ba điểm phân biệt và không nằm trên cùng một đường thẳng)

Input: File văn bản TAMGIAC.INP

 Dòng đầu tiên ghi số nguyên dương N (N≤10)

 Dòng thứ i trong N dòng tiếp theo chứa 6 số nguyên x1i, y1i, x2i, y2i, x3i, y3i xác định tam giác thứ i (i=1,2, ,N) Các số nguyên có giá trị tuyệt đối không vượt quá 1000

Output: Ghi ra file TAMGIAC.OUT duy nhất một số là giá trị của diện tích cần tìm với 2 chữ số phần thập phân

Bài 2: Đa giác

Cho N đa giác lồi thoả mãn các tính chất sau:

- Với 2 đa giác bất kỳ luôn có một đa giác mà mọi điểm của nó nằm trong đa giác kia

- Các cạnh của chúng không có điểm chung

Bài toán đặt ra là: Với mỗi đa giác i, có bao nhiêu đa giác trong N đa giác nói

trên bao nó (i nằm trong bao nhiêu đa giác)?

Dữ liệu vào: Vào từ file văn bản DAGIAC.INP

- Dòng đầu tiên ghi số tự nhiên N (3N10000)

Ngày đăng: 28/12/2017, 17:24

TỪ KHÓA LIÊN QUAN

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

TÀI LIỆU LIÊN QUAN

🧩 Sản phẩm bạn có thể quan tâm

w