intTypePromotion=1
zunia.vn Tuyển sinh 2024 dành cho Gen-Z zunia.vn zunia.vn
ADSENSE

Sử dụng lý thuyết đại số giải một số bài toán trong hình học

Chia sẻ: Hoang Son | Ngày: | Loại File: PDF | Số trang:4

61
lượt xem
3
download
 
  Download Vui lòng tải xuống để xem tài liệu đầy đủ

Lý thuyết về không gian véc tơ trong đại số tuyến tính có vai trò rất quan trọng. Bài báo này trình bày một số phép biến đổi affine dựa trên phép đổi cơ sở trong không gian véc tơ. Trong phần cuối có đƣa ra một số ví dụ minh hoạ và mã nguồn được viết bằng ngôn ngữ C++.

Chủ đề:
Lưu

Nội dung Text: Sử dụng lý thuyết đại số giải một số bài toán trong hình học

Ôn Ngũ Minh<br /> <br /> Tạp chí KHOA HỌC & CÔNG NGHỆ<br /> <br /> 78(02): 8 - 11<br /> <br /> SỬ DỤNG LÝ THUYẾT ĐẠI SỐ GIẢI MỘT SỐ BÀI TOÁN TRONG HÌNH HỌC<br /> Ôn Ngũ Minh*<br /> Trường Đại học Kỹ thuật Công nghiệp – ĐHTN<br /> <br /> TÓM TẮT<br /> Lý thuyết về không gian véc tơ trong đại số tuyến tính có vai trò rất quan trọng. Bài báo này trình<br /> bày một số phép biến đổi affine dựa trên phép đổi cơ sở trong không gian véc tơ. Trong phần cuối<br /> có đƣa ra một số ví dụ minh hoạ và mã nguồn đƣợc viết bằng ngôn ngữ C++.<br /> Từ khoá: Phép tịnh tiến song song, phép xoay quanh gốc toạ độ, toạ độ homogen<br /> <br /> MỘT SỐ PHÉP BIẾN ĐỔI CƠ BẢN*<br /> 1. Phép tịnh tiến song song<br /> Giả sử M(x, y) là điểm bất kỳ. Xác định toạ độ<br /> của M trong hệ O'x'y' với O' có toạ độ (x0, y0)<br /> và các trục toạ độ của hai hệ đồng phƣơng<br /> chiều.<br /> Gọi (x', y') là toạ độ của M trong hệ trục O'x'y'.<br /> Khi đó<br />  x   x '  x 0 <br />  y    y'   y <br />      0<br />  x '  x    x 0 <br /> (1)<br />  y'   y     y <br />      0<br /> Nhƣng để thực hiện đƣợc bởi phép nhân ma<br /> trận, ta sử dụng toạ độ homogen, khi đó (1)<br /> đƣợc viết lại dƣới dạng:<br />  x '  1 0  x 0   x <br />  y '  0 1  y   y <br /> 0 <br />   <br />  1  0 0 1   1 <br /> <br /> hay<br /> <br />  x ' 1 0  x 0   x <br /> x <br /> <br /> <br /> <br /> <br /> <br /> <br /> ta có  y '  0 1  y0   y   H1  y <br />  1  0 0 1   1 <br />  1 <br /> 2. Phép xoay hệ Oxy quanh gốc toạ độ<br /> Giả sử M(x, y) là điểm bất kỳ. Xác định toạ độ<br /> của M trong hệ Ox'y' nhận đƣợc từ hệ Oxy<br /> sau khi xoay theo chiều dƣơng một góc .<br /> Trong R2, xét hai cơ sở:<br /> S = {e1 = (1, 0), e2 = (0, 1)} và<br /> S' = {e1' = (cos, sin), e2' = (–sin, cos)}<br /> <br /> *<br /> <br /> Tel: 0913351286<br /> <br /> 8<br /> <br /> Rõ ràng e1 và e2 tƣơng ứng là các véc tơ đơn<br /> vị của các trục Ox và Oy, còn e1' và e2' tƣơng<br /> ứng là các véc tơ đơn vị của các trục Ox' và<br /> Oy'. Dễ thấy, ma trận của phép biến đổi từ cơ<br /> sở S sang cơ sở S' chính là<br />  cos  sin  <br /> P =<br /> <br />  sin  cos <br /> Vì là phép biến đổi trực giao nên P–1 = Pt, do<br /> đó sử dụng toạ độ homogen ta có:<br /> <br />  x '  cos sin  0   x <br /> x <br />  y'    sin  cos 0   y   H  y <br /> 2 <br />   <br />  <br />  1   0<br />  1 <br /> 0<br /> 1   1 <br /> <br /> 3. Phép lấy đối xứng qua trục Ox<br /> Gọi M'(x', y') là điểm đối xứng của điểm M(x,<br /> y) qua trục Ox, dễ thấy x' = x, y' = –y. Trong<br /> R2, xét hai cơ sở:<br /> S = {e1 = (1, 0), e2 = (0, 1)}<br /> và<br /> S' = {e1' = (1,0), e2' = (0, –1)}<br /> Dễ thấy, ma trận của phép biến đổi từ cơ sở S'<br /> sang cơ sở S chính là:<br /> 1 0 <br /> P =<br /> <br /> 0 1<br /> Viết theo toạ độ homogen ta có<br /> <br />  x ' 1 0 0   x <br /> x <br />  y '  0 1 0   y   H  y  .<br /> 3 <br />   <br />  <br />  1  0 0 1   1 <br />  1 <br /> <br /> MỘT SỐ ỨNG DỤNG<br /> 1. Xác định toạ độ của điểm N(xN, yN) là đối<br /> xứng của điểm M(x, y) qua đƣờng thẳng có<br /> phƣơng trình y = ax + b<br /> Ta thực hiện 5 bƣớc sau:<br /> <br /> Ôn Ngũ Minh<br /> <br /> Tạp chí KHOA HỌC & CÔNG NGHỆ<br /> <br /> a) Tịnh tiến song song Oxy thành O'x'y' với<br /> O' có toạ độ (0, b)<br /> Toạ độ mới của M(x', y') đƣợc tính theo công<br /> thức<br />  x '<br /> x <br />  y '  A  y  , với A =<br />  <br />  <br />  1 <br />  1 <br /> <br /> 1 0 0 <br /> 0 1 b <br /> <br /> <br /> 0 0 1 <br /> <br /> b) Xoay hệ O'x'y' quanh gốc O' theo chiều<br /> dƣơng một góc  = atan(a) thành hệ O'x"y"<br /> Toạ độ mới của M(x", y") đƣợc tính theo<br /> công thức<br />  x"<br />  x '<br /> x <br />  y"  H  y ' = H A  y <br /> 2 <br /> 2<br />  <br />  <br />  1 <br />  1 <br />  1 <br /> <br /> c) Lấy đối xứng qua trục O'x"<br /> Gọi (xN", yN") là toạ độ của N trong hệ trục<br /> O'x"y", khi đó<br /> <br /> x <br />  x N "<br />  x"<br />  y "  H  y" = H H A  y <br /> 3<br /> 3 2<br />  N <br /> <br />  <br />  1 <br />  1 <br />  1 <br /> d) Xoay hệ O'x"y" quanh gốc O' theo chiều<br /> âm một góc  thành hệ O'x'"y'"<br /> Toạ độ của N trong hệ O'x'"y'" đƣợc tính theo<br /> công thức<br />  x N '"<br />  x N "<br /> x <br />  y '"  H t  y " = H t H H A  y <br /> 2  N <br /> 2<br /> 3 2<br />  N <br />  <br />  1 <br />  1 <br />  1 <br /> <br /> e) Tịnh tiến O' về O, nhận đƣợc hệ trục ban<br /> đầu Oxy<br /> Toạ độ của N trong hệ Oxy đƣợc tính theo<br /> công thức<br />  x N  1 0 0   x N "'<br /> x <br />  y   0 1 b   y "' = H H t H H A  y  ,<br /> 4 2<br /> 3 2<br />  N <br />  N <br />  <br />  1  0 0 1   1 <br />  1 <br /> Dễ kiểm tra lại rằng H = H4H2tH3H2A =<br /> <br /> b sin 2 <br /> cos 2 sin 2<br /> <br /> <br /> = sin 2  cos 2 b(1  cos 2) .<br /> <br /> <br />  0<br /> <br /> 0<br /> 1<br /> <br /> 78(02): 8 - 11<br /> <br /> Vậy toạ độ của điểm N đối xứng với M(x, y)<br /> qua đƣờng thẳng y = ax + b là<br /> <br />  x N  xcos2  ysin2  bsin 2<br /> <br />  y N  x sin 2  ycos2  b 1  cos2 <br /> <br />  x N  x cos 2   y  b  sin 2<br /> <br />  y N  x sin 2   y  b  cos 2  b<br /> <br /> hay <br /> <br /> Đó chính là công thức chúng ta cần tìm.<br /> 2. Xác định toạ độ điểm N(xN, yN) nhận đƣợc<br /> bằng cách xoay điểm M(x, y) quanh điểm (x0,<br /> y0) một góc <br /> Ta thực hiện 3 bƣớc sau:<br /> a) Tịnh tiến song song Oxy thành O'x'y' với<br /> O' có toạ độ (x0, y0)<br /> Toạ độ mới của M(x', y') đƣợc tính theo công<br /> thức<br />  x '<br /> x <br />  y '  H  y  ,<br /> 1 <br />  <br />  1 <br />  1 <br /> <br /> b) Xoay hệ O'x'y' quanh gốc O' theo chiều<br /> dƣơng một góc – thành hệ O'x"y"<br /> Toạ độ mới của M(x", y") đƣợc tính theo<br /> công thức<br />  x"<br />  x '<br /> x <br />  y"  H t  y ' = H t H  y <br /> 2  <br /> 2<br /> 1 <br />  <br />  1 <br />  1 <br />  1 <br /> <br /> c) Tịnh tiến O' về O, nhận đƣợc hệ trục ban<br /> đầu Oxy<br /> Toạ độ của N trong hệ Oxy đƣợc tính theo<br /> công thức<br />  x N  1 0 x 0   x N "<br /> x <br />  y   0 1 y   y " = H H t H  y  =<br /> 0 N <br /> 5 2<br /> 1 <br />  N <br />  1  0 0 1   1 <br />  1 <br /> <br />  cos sin   x 0 cos  y0 sin   x 0 <br /> <br /> <br /> =   sin  cos x 0 sin   y0 cos  y0 <br />  0<br /> <br /> 0<br /> 1<br /> <br /> x <br /> y<br />  <br />  1 <br /> <br /> Từ đó ta có<br /> 9<br /> <br /> Ôn Ngũ Minh<br /> <br /> Tạp chí KHOA HỌC & CÔNG NGHỆ<br /> <br />  x N   x  x 0  cos   y  y0  sin   x 0<br /> <br />  y N   x  x 0  sin    y  y0  cos   y0<br /> MỘT SỐ VÍ DỤ<br /> 1. Xác định toạ độ điểm đối xứng qua đƣờng<br /> thẳng y = ax + b.<br /> Xét điểm M(1,2).<br /> a) Đƣờng thẳng d có phƣơng trình y = x: Khi<br /> đó  = 45o nên cos2 = 0, sin2 = 1.<br />  x N  0 1 0  1   2 <br />  y   1 0 0   2    1  ,<br />  N <br />    <br />  1  0 0 1  1  1 <br /> <br /> tức là N(2,1).<br /> b) Đƣờng thẳng d có phƣơng trình y = x + 1:<br />  = 45o nên cos2 = 0, sin2 = 1.<br />  x N  0 1 1 1  1 <br />  y   1 0 1   2    2  ,<br />  N <br />    <br />  1  0 0 1  1  1 <br /> <br /> tức là N  M. Đúng vì M thuộc d.<br /> c) Đƣờng thẳng d có phƣơng trình y = x – 1:<br />  = 45o nên cos2 = 0, sin2 = 1.<br />  x N   0 1 1  1   3<br />  y   1 0 1  2  0 ,<br />  N <br />    <br />  1  0 0 1  1  1 <br /> <br /> tức là N(3, 0).<br /> 2. Xác định toạ độ của điểm M sau khi quay<br /> đi một góc  quanh điểm P.<br /> Xét điểm M(2,1) và P(1, 1).<br /> <br /> a) Với  = : cos = 0, sin = 1<br /> 2<br /> xN = 1, yN = 2.<br /> <br /> 2<br /> b) Với  = : cos = sin =<br /> 4<br /> 2<br /> 2<br /> xN = yN =<br /> +1<br /> 2<br /> MÃ LỆNH TRONG NGÔN NGỮ C++<br /> 1. Xác định toạ độ điểm đối xứng qua đƣờng<br /> thẳng y = ax + b<br /> Hàm point mirror(const point &p, double a,<br /> double b) trả lại điểm đối xứng của điểm p.<br /> 10<br /> <br /> 78(02): 8 - 11<br /> <br /> #include <br /> #include <br /> struct point<br /> {<br /> double x, y;<br /> point (double _x = 0, double _y = 0)<br /> {x = _x; y = _y;}<br /> };<br /> point mirror(const point &p,<br /> double a, double b)<br /> {<br /> double anpha = atan(a);<br /> double _cos = cos(2*anpha),<br /> _sin = sin(2*anpha);<br /> return point(p.x*_cos + (p.y-b)*_sin,<br /> p.x*_sin - (p.y-b)*_cos + b);<br /> }<br /> void main()<br /> {<br /> point p(1,2), q;<br /> q = mirror(p, 1, 0);<br /> printf("\nq(%lf, %lf)\n",q.x,q.y);<br /> q = mirror(p, 1, 1);<br /> printf("\nq(%lf, %lf)\n",q.x,q.y);<br /> q = mirror(p, 1, -1);<br /> printf("\nq(%lf, %lf)\n",q.x,q.y);<br /> }<br /> 2. Xác định toạ độ của điểm M sau khi quay<br /> đi một góc  quanh điểm P<br /> Hàm point rotate(const point &p, double x0,<br /> double y0, double anpha) trả lại điểm là sự<br /> quay của điểm p quanh điểm có toạ độ (x0,<br /> y0) một góc anpha.<br /> #include <br /> #include <br /> struct point<br /> {<br /> double x, y;<br /> point (double _x = 0, double _y = 0)<br /> {x = _x; y = _y;}<br /> };<br /> <br /> Ôn Ngũ Minh<br /> <br /> Tạp chí KHOA HỌC & CÔNG NGHỆ<br /> <br /> point rotate(const point &p, double x0,<br /> double y0, double anpha)<br /> {<br /> double _cos = cos(anpha);<br /> double _sin = sin(anpha);<br /> return<br /> point((p.x-x0)*_cos - (p.y-y0)*_sin +<br /> x0,<br /> (p.x-x0)*_sin + (p.y-y0)*_cos + y0);<br /> }<br /> void main()<br /> {<br /> <br /> 78(02): 8 - 11<br /> <br /> point p(2,1), q;<br /> double quarterPI = atan(1);<br /> q = rotate(p, 1,1, 2*quarterPI);<br /> printf("\nq(%lf, %lf)\n",q.x,q.y);<br /> q = rotate(p, 1,1, quarterPI);<br /> printf("\nq(%lf, %lf)\n",q.x,q.y);<br /> }<br /> TÀI LIỆU THAM KHẢO<br /> [1]. Brown, William A. (1991), Matrices and<br /> vector spaces, New York: M. Dekker,<br /> [2].Weisstein, Eric W., Homogeneous Coordinates<br /> <br /> SUMMARY<br /> On Ngu Minh*<br /> Thai Nguyen University of Technology – TNU<br /> <br /> The theory of vector spaces in linear algebra plays a very important role. This paper presents some<br /> affine transformation based on the exchange of basis of vector space. In the last section give some<br /> examples and source code written in C++ language.<br /> <br /> *<br /> <br /> Tel: 0913351286<br /> <br /> 11<br /> <br />
ADSENSE

CÓ THỂ BẠN MUỐN DOWNLOAD

 

Đồng bộ tài khoản
2=>2