Vẽ đồ thị hàm số trong LaTeX
Thứ Ba, 17 tháng 11, 2015
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;
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;
\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}
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.