Mavzu : O'rnatilgan hisoblagichlardan foydalanish
Download 0.69 Mb.
|
Latex dasturlash asoslari
Toshkent axbarot tehnalogiyalari unversiteti AKT sohasida kasb talim fakulteti 650-20 uruh talabasi Davlatov Og’abekning LaTeX fanidan mustaqil ish . Mavzu : O'rnatilgan hisoblagichlardan foydalanish. Reja:
LATEX to'plami oddiy va murakkab hujjatlarni joylashtirishni LaTeX-da matematik dasturlash LATEX to'plami oddiy va murakkab hujjatlarni joylashtirishni LATEX to'plami oddiy va murakkab hujjatlarni joylashtirishni osonlashtish imkoniyatiga ega. Biz mavjud buyruqlarni bekor qilib yangi buyruqlarni qo’shish imoniyatiga ega bo’lamiz Yangi buyruqlarni aniqlash uchun LATEX buyrug'i mavjud \newcommand{name}[num]{definition}, bu erda yangi buyruq nomi va tarkibini ko'rsatadigan birinchi va uchinchi qatorlarda yozish talab qilinadi. Ixtiyoriy num argumenti 1 dan 9 gacha bo'lgan buyruq nomlari sonini belgilaydi, buyruqni aniqlash matnidagi argumentlar ikkita belgi bilan belgilanadi: "#" va buyruq raqami. Mavjud buyruqlarni bekor qilish uchun buyruqdan foydalaning \renewcommand{name}[num]{definition}. Parametrlarning ma'nosi buyruq uchun tavsiflangan bilan bir xil \newcommand. Bunday matnni yaratadigan buyruqni aniqlash uchun tez-tez uchraydigan so'zlar birikmasi yoki formula uchun qulaydir. Masalan : \ newcommand {\ o} {ortogonal} \\ {\ o} th ko'p sonli to'plamlar {\ o} shartlarini qondiradi. Natija: Ortogonal polinomiyalar to'plami ortogonalizm holatini qondiradi. Matnning haqiqiy ko’rinishi $ \ omega $ - to'liqlik. \ yangilash komandasi {\ omega} {Omega} \ omega - to'liqlik. Natija: ω - to'liqlik. Omega - to'liqlik. Matnning haqiqiy ko’rinishi \ yangi kelganlar {\ Func} [2] {\ frac {\ sqrt {# 2}} {\ sqrt [3] {{# 1} ^ 4 + ({# 2} -6)}}} \\ $ \ Func {1} {2} $, $ \ Func {a + b} {c + d} $ Natija: Yangi operatorlarni ushbu buyruqlar yordamida aniqlash mumkin. Ammo bu amsmath to'plamida mavjudligini esga olish kerak buning uchun maxsus buyruq: \ DeclareMathOperator \ {name} {definition}. Buyruqning dalillari mos keladigan \ newcommand argumentlari bilan bir xil. Agar operator matnda faqat bir yoki ikki marta paydo bo'lsada formulalar ichida operatorlar formatlash qoidalariga muvofiq ism argumentini formatlash uchun \ operatorname {\ name} buyrug'idan foydalanamiz. Yangi muhitni aniqlash va mavjudini o'zgartirish uchun quyidagi buyruqlardan foydalaniladi: \newenvirorment{name}[num]{before}{after}, \renewenvironment{name}[num]{before}{after} Bu erda talab qilinadigan nom argumenti atrof-muhit nomini, ixtiyoriy num argumenti esa atrof-muhitning rasmiy argumentlari sonini belgilaydi. Oldingi argument bu yerda buyruqlar to'plamini anglatadi, ularning bajarilishi atrof-muhit ichidagi matnni tahlil qilishdan oldin, keyin esa buyruqlar bajariladi. Amsmath to'plamida \ newtheorem \ {name} {definition} yordamida yangisini aniqlash imkoniyati mavjud. Biz bu buyruq yordamida o'zimizning dizaynimizni o'rnatishimiz va lemmalar, bayonotlar, oqibatlar, misollar va boshqalarni avtomatik ravishda raqamlashni tashkil qilishimiz mumkin. LaTeX-da matematik dasturlash Odatda dasturlarni Matlab-da yozib, so'ngra rasmni LaTeX-ga joylashtirganda osonroq bo`ladi. Ba'zida, dasturning LaTeX ning o'zida bo'lishi uchun yanada samarali ishlashi yoki moslashuvchanligi bor, yoki siz grafikalar ustidan yanada ko'proq nazoratga kirishingiz yoki ish oqimining osonroq bo'lishiga ishonchingiz komil. Python kodini LaTeX hujjatingizga pythontex. Mana oddiy misol: \documentclass{article} \usepackage[gobble=auto]{pythontex} \usepackage{pgfplots} \begin{document} \begin{pycode} from sympy import * x = symbols('x') f = integrate(cos(x)*sin(x), x) \end{pycode} \begin{pysub} \begin{tikzpicture} \begin{axis}[xlabel=$x$,ylabel=$y$,samples=200,no markers,title=!{latex(f)}] \addplot[black] gnuplot {!{f}}; \end{axis} \end{tikzpicture} \end{pysub} \end{document} Mana shunga o'xshash bir osilator uchun ODEni hal qilishning yana bir misoli: \documentclass{article} \usepackage[gobble=auto]{pythontex} \usepackage{pgfplots} \pgfplotsset{compat=1.15} \begin{document} \begin{pycode} import numpy as np from scipy.integrate import odeint omega = 3 omega_ext = 2 c = 0.1 d = 0.5 m = 1 e = 1 k = omega**2*m def Force(t,x,v): return -k*x + np.sin(omega_ext*t) - d*v def dgl(xv, t): x, v = xv return [v, 1/m*Force(t,x,v)] xv0 = [1, 0] tmax = 30 t_out = np.arange(0, tmax, 0.05) xv_res = odeint(dgl, xv0, t_out) x,v = xv_res.T tv = list(zip(t_out,v)) np.savetxt('osciTV.dat',tv) \end{pycode} \begin{pysub} \begin{tikzpicture} \begin{axis}[xlabel=$t$,ylabel=$v$,samples=200,no markers] \addplot[black] table {osciTV.dat}; \addplot[dashed,variable=t,domain=0:!{tmax}] gnuplot {sin(!{omega_ext}*t)}; \end{axis} \end{tikzpicture} \end{pysub} \end{document} Shuningdek, pythontex-gallereyadan olingan misollarni ko'ring. Python ilmiy hisoblash uchun ko'plab kutubxonalarni taqdim etadi. Agar boshqa variant sagetex dan foydalansangiz, siz Shaxsanim - hujjatga kodlash. Bir hujjatda ikkita tilni almashtirishni qo'llab-quvvatlaydigan tahrirlovchini tanlash haqida o'ylash mantiqan to'g'ri. Emacs , masalan, polimode . LaTeX-ga Python kodini integratsiyalashning muqobilligi LaTeX kodini Pythonga birlashtirishdir. Buni Python yoki LaTeX kodi bo'lishi mumkin bo'lgan "hujayra" ga ega bo'lgan Jupyter noutbuklari yordamida amalga oshirish mumkin. Kod chiqishi va Python grafikalari va natijalari kombinatsiyasini yaratish uchun ishlatilishi mumkin. Menimcha, Jupyter noutbuklari Matlab va Juliani hamda Pythonni qo'llab-quvvatlamoqda. Bu chiroyli matbaa qo'lyozmalari bilan bir xil emas, shuningdek, yoqimli Jupiter noutbukiga o'xshash naqshli qo'lyozma. MetaPost shuningdek, LuaTeX-ga integratsiyalashgan. Dasturlash tili sifatida ba'zi raqamli usullarni amalga oshirish mumkin. Grafik til sifatida, shuningdek, bir necha geometrik hisoblashlar, masalan, ikkita egri kesishuvini topish, statistika diagrammasi va hokazo. Tartibga solish: Misol tariqasida, yuqorida aytib o'tilgan Nton usulining biroz o'zgartirilgan tadbiri f (x) = x ^ 2-2 funktsiyasiga qo'llaniladi. Bu usulning geometrik versiyasi, ya'ni bu funktsiya va uning hosilasiga emas, balki berilgan egri va uning teginjlariga asoslanganligini aytishdir. (Albatta, bunday qilish mumkin edi.) \documentclass{scrartcl} \usepackage{luamplib} \mplibtextextlabel{enable} \mplibsetformat{metafun} \mplibnumbersystem{double} \begin{document} \begin{mplibcode} vardef f(expr x) = x**2 - 2 enddef; u = 3cm; v = 1.5cm; xmax = 2.75; ymax = 6; path curve; numeric t[]; dx = 1E-4; curve = (0, f(0)) for i = dx step dx until xmax: .. (i, f(i)) endfor; beginfig(1); draw curve xyscaled (u, v); x0 = 2.5; i := 0; forever: (t[i],whatever) = curve intersectiontimes ((x[i], -infinity) -- (x[i],infinity)); y[i] = ypart (point t[i] of curve); (x[i+1],0) = z[i] + whatever*direction t[i] of curve; draw ((x[i], 0) -- z[i] -- (x[i+1], 0)) xyscaled (u, v); drawdot (z[i] xyscaled (u, v)) withpen pencircle scaled 4bp; i := i+1; exitif abs(x[i]-x[i-1]) < dx; endfor; label.bot(btex $x_0$ etex, (x0*u, 0)); label.bot(btex $x_1$ etex, (x1*u, 0)); label.bot(btex $x_2$ etex, (x2*u, 0)); label.lrt("$x_{" & decimal i & "}=" & decimal x[i] & "$", (x[i]*u, 0) shifted (0, -.75cm)); drawarrow origin -- (xmax*u, 0); for i = 0 upto xmax: draw (i*u, -2bp) -- (i*u, 2bp); label.bot("$" & decimal i & "$", (i*u, -2bp)); endfor; label.bot("$x$", (xmax*u, 0)); endfig; \end{mplibcode} \end{document} "Percusse" ning sharhlari qatorida sagetex < a> to'plami Python singari matematik dasturlashtirilgan Sage deb ataladigan kompyuter algebra tizimiga kirish imkonini beradi. Ushbu saytdagi sagetex bo'yicha qidirish sizni tezroq misollar keltiradi. Misol uchun, agar Riemann zeta funktsiyasini tuzishni istasangiz, Sage Reimann zeta funksiyasini bilishi va undan keyin mening javobimda tuzz/pgfplots bilan chop etishingiz mumkin. Zaton funksiyasini dasturga ega bo'lmaslik sizni "g'ildirakni qayta kashf qilish" uchun vaqt sarflashdan saqlaydi. Funktsiya Cantor funktsiyasi kabi aniqlanmagan bo'lsa, mening fikrimda ko'rsatganimdek, Pythonda tikz/pgfplots da chiqish formatini yaxshi formatlash mumkin bo'ladi. Sage plus Python matematikani boshqarish uchun qurilgan. Runge-Kutta bo'yicha hujjatlarni topishingiz mumkin bu erda Monte-Karlo va turli ildiz topish usullari . Sizning dastlabki hujjatingiz yuqorida joylashgan sagetex havolasi, sizni boshlash va sagemath havolalari. Pythonning ba'zi asoslari bu yerda muhokama qilinadi. Sage CAS, LaTeX tarqatishning bir qismi emas. Siz uni kompyuteringizga yuklab olishingiz va o'rnatishingiz mumkin, yoki internetga ulangan bo'lsangiz, uni bepul yuklab olishingiz mumkin. Jinja templativ dvigateli PDF-fayllarni yaratish uchun LaTeX shablonlarini yaratish yaxshi ishlaydi. Bitta muammo - bu Jinja blokirovkasi, o'zgaruvchan va izohlarni aniqlash satrlari LaTeX buyruqlariga zid bo'lishi mumkin. Yechim Jinja muhitini LaTeX muhitini taqlid qilish uchun o'zgartirishdir. Mana bir misol. Bu test.py python fayli: import jinja2 import os from jinja2 import Template latex_jinja_env = jinja2.Environment( block_start_string = '\BLOCK{', block_end_string = '}', variable_start_string = '\VAR{', variable_end_string = '}', comment_start_string = '\#{', comment_end_string = '}', line_statement_prefix = '%%', line_comment_prefix = '%#', trim_blocks = True, autoescape = False, loader = jinja2.FileSystemLoader(os.path.abspath('.')) ) template = latex_jinja_env.get_template('jinja-test.tex') print(template.render(section1='Long Form', section2='Short Form')) va u bilan borish uchun jinja-test.tex misoli: \documentclass{article} \begin{document} \section{Example} An example document using \LaTeX, Python, and Jinja. % This is a regular LaTeX comment \section{\VAR{section1}} \#{This is a long-form Jinja comment} \begin{itemize} \BLOCK{ for x in range(0, 3) } \item Counting: \VAR{x} \BLOCK{ endfor } \end{itemize} \section{\VAR{section2}} %# This is a short-form Jinja comment \begin{itemize} %% for x in range(0, 3) \item Counting: \VAR{x} %% endfor \end{itemize} \end{document} Yuqorida keltirilgan test.tex natijalari: \documentclass{article} \begin{document} \section{Example} An example document using \LaTeX, Python, and Jinja. % This is a regular LaTeX comment \section{Long Form} \begin{itemize} \item Counting: 0 \item Counting: 1 \item Counting: 2 \end{itemize} \section{Short Form} \begin{itemize} \item Counting: 0 \item Counting: 1 \item Counting: 2 \end{itemize} \end{document} Xulosa.
Foydalangan adabiyotlar : https://uz.wikipedia.org/wiki/LaTeX Download 0.69 Mb. Do'stlaringiz bilan baham: |
Ma'lumotlar bazasi mualliflik huquqi bilan himoyalangan ©fayllar.org 2024
ma'muriyatiga murojaat qiling
ma'muriyatiga murojaat qiling