Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Ruby: Общие вопросы > исследование функции и построение ее графика


Автор: Karisha 9.11.2008, 22:38
Нашла скрипт для исследования функции и построения графика:
Код

#!/usr/bin/ruby
=begin
Исследование функций с помощью производной
=end
preamble="\\documentclass[12pt]{amsart}\n"+
  "\\usepackage{epsfig}\n"+
  "\\usepackage[koi8-r]{inputenc}\n"+
  "\\usepackage[russian]{babel}\n"+
  "\\thispagestyle{empty}\n\\newcounter{varno}\n"+
  "\\begin{document}\n\\def\\Ev{четная}\n"+
  "\\def\\Od{нечетная}\n\\def\\Nt{общего вида}\n"+
  "\\def\\Nn{пересечений нет}\n"
print preamble
f=File.new("graphics")
n, task = 0, f.readlines
task.each{ |i| 
  i.chop!
  pr=i.split("&")  # формируем массив, но разделитель уже не пробел
  n+=1
  print "\\setcounter{varno}{#{n}}\n {\\bf \\Roman{varno}}. "
  print "Исследуйте функцию \n {  $y(x)=#{pr[0]}$}\n",
    "с помощью производной и постройте эскиз ее графика.\n",
    "\\bigskip\n\n"
  print "\n\\if{% спрячем все вычисления в TeX-комментарий\n",
    "<*\n y[x\_]=#{pr[0]};\n",
    "y0=y[0];\n",
    "ry=If[ Reduce[y[x]==0, x]===False, \"\\mbox{ \\Nn}\",",
    " Reduce[y[x]==0, x]];\n",
    "Display[\"g#{n}.eps\", Plot[y[x],{x,#{pr[1]},#{pr[2]}}],",
    "\"EPS\"];\n",
    "l1=Limit[y[x], x-\>Infinity];\n",
    "l2=Limit[y[x], x-\>-Infinity];\n",
    "eo=If[y[x]===y[-x], \"\\Ev\", If[y[x]===-y[-x],",
    " \"\\Od\",  \"\\Nt\"]]\n",
    "dy[x\_]=Simplify[D[y[x], x]];\n",
    "rdy=Reduce[dy[x]==0,x];\n",
    "ldy=x/. Solve[dy[x]==0,x];\n",
    "fld=y/@ldy;\n",
    "e1=If[l1==-Infinity||l2==-Infinity,-Infinity,",
    "If[l1<Min[fld], l1, Min[fld]]]\n ",
    "e2=If[l1==Infinity||l2==Infinity,Infinity,",
    " If[l2>Max[fld], l2, Max[fld]]]\n ",
    "z1=If[l1==-Infinity||l2==-Infinity,\"\(\",",
    "If[l1<Min[fld], \"\(\",\"\[\"]]\n ",
    "z2=If[l1==Infinity||l2==Infinity, \")\",",
    " If[l2>Max[fld], \")\",\"]\"]]\n *>\n",
    "}\\fi\n\n"
  print "\\noindent\\begin{tabular}{lr}\n",
    "\\parbox{0.44\\textwidth}{\n\n"
  print "\\noindent\n1. $E(y)=<*z1*><*e1*>;<*e2*><*z2*>$.\n",
    "\\medskip\n\n"
  print "\\noindent\n2. Четность/нечетность:\\\\",
    "$y(-x)=<*Simplify[y[-x]]*>$.\n\n"
  print "Функция <*eo*>.\n\\smallskip\n\n"
  print "\\noindent\n3. Поведение  в граничных ",
    "точках области определения\\\\ \n",
    "при $x\\rightarrow\\infty \\quad\\phantom{-} y\\rightarrow \n",
    "<*l1*>$\\\\ \n",
    "при $x\\rightarrow -\\infty \\quad y\\rightarrow \n",
    "<*l2*>$\\\\ [2pt]\n\\smallskip\n\n }&\n",
    "\\parbox{0.56\\textwidth}{\n\\begin{picture}(100,70)\n",
    "\\put(0,-20){\\noindent",
    "\\includegraphics[scale=.72]{g#{n}.eps}}\n ",
    "\\end{picture}\n }\n\\\\ \n\\end{tabular}\n\n"
  print "\\noindent\n4. Пересечение с осью OY:\n",
    " при $x=0,\\quad y=<*y0*>$.\n\n"
  print "\\noindent\n5. Пересечение с осью  OX: ",
    "$ #{pr[0]} =0$ при \\\\ $<*ry*>$.\n\n"
  print "\\noindent\n6. Производная $(#{pr[0]})^\\prime=",
    "<*dy[x]*>$.\n\\medskip\n\n"
  print "\\noindent\n7. Критические точки функции: ",
    " $<*rdy*>$.\n\\medskip\n\n"
  print "\\noindent\n8. Значения в критических точках $<*fld*>$.\n"
  print "\\bigskip\n\n"
}
print "\\end{document}"

http://www.chair36.msiu.ru/science/science/articles/1/html/node60.html

Автор написал описание так, что не могу понять как это все запустить. 
Прошу, помогите пожалуйста!

Автор: source777 15.11.2008, 23:08
ты уверена, что тебе нужен результат в формате LaTeX ?

Автор: Pete 21.11.2008, 00:12
Это просто какой-то шаблон. В программе ничего не исследуется и не вычисляется.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)