Vẽ đồ thị hàm số trong LaTeX


Ngày trước để có được đồ thị của một hàm số tôi thường chọn giải pháp là vẽ hình trong một số phần mềm sau đó lưu lại thành file ảnh và chèn vào $\LaTeX$. Tuy nhiên cách làm này có nhược điểm là ảnh thường bị vỡ. Giải pháp thứ hai là dùng GeoGebra để vẽ đồ thị rồi chèn vào file $\TeX$, dù vậy chất lượng ảnh cũng không thật ưng ý.
1. Tạo Marco có tên plot.mp (tập tin plot,mp) có nội dung:
numeric Pi,E;
Pi:= 3.1416;
E:= 2.7183;
u:=0.8cm; % tạo một hằng số độ dài
mark_size:=.1;
xinc:=.01;
% định nghĩa các hàm lượng giác, lôgarit, mũ.
vardef sin(expr x) =
sind(x/Pi*180)
enddef;
vardef cos(expr x) =
cosd(x/Pi*180)
enddef;
vardef tan(expr x) =
sin(x)/cos(x)
enddef;
vardef exp(expr x) =
mexp(x*256)
enddef;
vardef ln(expr x) =
mlog(x)/256
enddef;
%ve luoi trong he truc
def grid(expr xmin, xmax, ymin, ymax)=
drawoptions(withpen pencircle scaled .1pt withcolor .4white);
for i=xmin upto xmax: draw u*(i,ymin)--u*(i,ymax); endfor;
for i=ymin upto ymax: draw u*(xmin,i)--u*(xmax,i); endfor;
enddef;
%ve cac truc toa do
def axes(expr xmin, xmax, ymin, ymax)=
drawoptions(withpen pencircle scaled 0.7pt);
drawarrow u*(xmin,0)--u*(xmax,0);
drawarrow u*(0,ymin)--u*(0,ymax);
label.lrt(btex $y$ etex,u*(0,ymax));
label.top(btex $x$ etex,u*(xmax,0));
label.urt(btex $O$ etex,u*(0,0));
enddef;
%ve cac dau gach tren cac truc toa do
def unit_tick(expr xmin, xmax, ymin, ymax)=
for i=xmin upto xmax: label.llft(decimal(i), u*(1.25i,0)) scaled .8; endfor;
for i=ymin upto ymax: label.llft(decimal(i), u*(0,i)); endfor;
enddef;

def tick(expr xmin, xmax, ymin, ymax)=
drawoptions(withpen pencircle scaled .2pt);
for i=(xmin+1) upto (xmax-1): draw u*(i,-mark_size)--u*(i,mark_size); endfor;
for i=(ymin+1) upto (ymax-1): draw u*(-mark_size,i)--u*(mark_size,i); endfor;
enddef;

def curve(suffix f)(expr xmin, xmax) =
( (xmin,f(xmin))*u
for x=xmin+xinc step xinc until xmax:
.. (x,f(x))*u
endfor )
enddef;

def mplot(suffix f)(expr xmin, xmax) =
drawoptions(withpen pencircle);
draw
( (xmin,f(xmin))*u
for x=xmin+xinc step xinc until xmax:
.. (x,f(x))*u
endfor )
enddef;
2. Tạo file function.mp với cấu trúc vẽ đồ thị hàm số có nội dung:
input mplot.mp; % chèn marco mplot.mp vào file
beginfig(1) % bắt đầu vẽ hình
axes(-1,5,-5,4); %vẽ trục hoành độ từ -1 đến 5, tung độ từ -5 đến 4
tick(1,4,-4,-5); % đánh các dấu tick trên các trục
vardef f(expr x)=2*x*x*x-9*x*x+12*x-4 enddef; %khai báo đồ thị cần vẽ
mplot(f,-0.081,2.9) withcolor red; %vẽ đồ thị từ -0,081 đến 2.9 với màu đỏ
draw (u,0) -- (u,u) dashed evenly; %vẽ đường chỉ điểm đặc biệt
draw (0,u) -- (u,u) dashed evenly;
dotlabel.top(btex $\cal $ etex, (u,u)); %vẽ ``nốt ruồi'' tại các điểm đặc biệt
dotlabel.top(btex $\cal $ etex, (0,-4u));
dotlabel.top(btex $\cal $ etex, (2u,0));
label.lft(btex $-4$ etex, (0,-4u)); % chèn số vào các điểm
label.bot(btex $1$ etex, (u,0));
label.bot(btex $2$ etex, (2u,0));
label.lft(btex $1$ etex, (0,u));
label.bot(btex $3$ etex, (3u,0));
endfig; % kết thúc vẽ hình
end;
3. Biên dịch file function.mp: Nếu dùng TeXmaker thì chọn Tool --> Mpost, nếu dùng VieTeX thì chọn Tools --> Window accessories --> Command Prompt (hoặc chọn biểu tượng trên thanh công cụ) ở cửa sổ hiện ra đánh dòng lệnh mpost function.mp. Khi đó máy sẽ tiến hành biên dịch, nếu thành công sẽ cho ta file hình function.mp.
4. Tạo file tex có nội dung dưới đây để chuyển từ $\TeX$ ---> PDFLaTeX (chú ý không được chuyển qua DVI).
\documentclass{book}
\usepackage{amsmath,amsxtra,amssymb,latexsym, amscd,amsthm}
\usepackage{indentfirst}
\usepackage[mathscr]{eucal}
\usepackage{color}
\usepackage[utf8]{vietnam}
\begin{document}
\begin{figure}[hb]
\centering
\parbox{10cm}{\convertMPtoPDF{funtion.1}{1}{1}}
\caption{Đồ thị hàm số $y=2x^3-9x^2+12x-4$}
\end{figure}
\end{document}
Công sức nãy giờ là đây. Rất tuyệt, đúng không nào?

Vận dụng: Bạn hãy vẽ đồ thị của các hàm số dưới đây và so sánh hình vẽ với sản phẩm của các chương trình khác như Graph, GSP, GeoGebra,...chẳng hạn.
a) $y=-x^3+3x^2-2$
b) $y=x^4-2x^2$
c) $y=\dfrac{x-1}{x+1}$
d) $y=\dfrac{x^2}{x-1}$
Chúc các bạn thành công và ngày càng yêu $\TeX$ hơn.
Share on Google Plus

Trung tâm Hỗ trợ nghiên cứu

Email: dichvuspss@hotronghiencuu.com / phantichso247@gmail.com
Phone 24/7: 086 978 6862 (Mr Hùng)
Từ khóa: dịch vụ spss | phân tích spss | hỗ trợ spss | dịch vụ dữ liệu

0 nhận xét:

Đăng nhận xét