Sophie

Sophie

distrib > Fedora > 18 > i386 > by-pkgid > 971a3706a7676677c8b7bbdffc0c4b9b > files > 215

sagemath-doc-ru-5.9-9.fc18.noarch.rpm


<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
  "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">


<html xmlns="http://www.w3.org/1999/xhtml">
  <head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    
    <title>Построение графиков &mdash; Sage Tutorial in Russian v5.9</title>
    
    <link rel="stylesheet" href="_static/sage.css" type="text/css" />
    <link rel="stylesheet" href="_static/pygments.css" type="text/css" />
    
    <script type="text/javascript">
      var DOCUMENTATION_OPTIONS = {
        URL_ROOT:    '',
        VERSION:     '5.9',
        COLLAPSE_INDEX: false,
        FILE_SUFFIX: '.html',
        HAS_SOURCE:  true
      };
    </script>
    <script type="text/javascript" src="_static/jquery.js"></script>
    <script type="text/javascript" src="_static/underscore.js"></script>
    <script type="text/javascript" src="_static/doctools.js"></script>
    <script type="text/javascript" src="_static/translations.js"></script>
    <link rel="shortcut icon" href="_static/favicon.ico"/>
    <link rel="top" title="Sage Tutorial in Russian v5.9" href="index.html" />
    <link rel="up" title="Тур по Sage" href="tour.html" />
    <link rel="next" title="Распространённые проблемы с функциями" href="tour_functions.html" />
    <link rel="prev" title="Базовая алгебра и вычисления" href="tour_algebra.html" />
    <link rel="icon" href="_static/sageicon.png" type="image/x-icon" />

  </head>
  <body>
    <div class="related">
      <h3>Просмотр</h3>
      <ul>
        <li class="right" style="margin-right: 10px">
          <a href="genindex.html" title="Словарь-указатель"
             accesskey="I">словарь</a></li>
        <li class="right" >
          <a href="py-modindex.html" title="Python Module Index"
             >модули</a> |</li>
        <li class="right" >
          <a href="tour_functions.html" title="Распространённые проблемы с функциями"
             accesskey="N">следующий</a> |</li>
        <li class="right" >
          <a href="tour_algebra.html" title="Базовая алгебра и вычисления"
             accesskey="P">предыдущий</a> |</li>
  
    
      <a href="../index.html"><img src="_static/sagelogo.png" style="vertical-align: middle" title="Sage Logo"></a>
    
  
  
        <li><a href="index.html">Sage Tutorial in Russian v5.9</a> &raquo;</li>

          <li><a href="tour.html" accesskey="U">Тур по Sage</a> &raquo;</li> 
      </ul>
    </div>  

    <div class="document">
      <div class="documentwrapper">
        <div class="bodywrapper">
          <div class="body">
            
  <div class="section" id="section-plot">
<span id="id1"></span><h1>Построение графиков<a class="headerlink" href="#section-plot" title="Ссылка на этот заголовок">¶</a></h1>
<p>Sage может строить двумерные и трехмерные графики.</p>
<div class="section" id="id2">
<h2>Двумерные графики<a class="headerlink" href="#id2" title="Ссылка на этот заголовок">¶</a></h2>
<p>В двумерном пространстве Sage может отрисовывать круги, линии и
многоугольники; графики функций в декартовых координатах; также графики
в полярных координатах, контурные графики и изображения векторных полей.
Некоторые примеры будут показаны ниже. Для более исчерпывающей информации
по построению графиков см. <a class="reference internal" href="tour_algebra.html#section-systems"><em>Решение дифференциальных уравнений</em></a> и <a class="reference internal" href="interfaces.html#section-maxima"><em>Maxima</em></a>,
а также документацию
<a class="reference external" href="http://www.sagemath.org/doc/constructions/">Sage Constructions</a>.</p>
<p>Данная команда построит желтую окружность радиуса 1 с центром в начале:</p>
<div class="highlight-python"><div class="highlight"><pre><span class="go">sage: circle((0,0), 1, rgbcolor=(1,1,0))</span>
</pre></div>
</div>
<p>Также можно построить круг:</p>
<div class="highlight-python"><div class="highlight"><pre><span class="go">sage: circle((0,0), 1, rgbcolor=(1,1,0), fill=True)</span>
</pre></div>
</div>
<p>Можно создавать окружность и задавать ее какой-либо переменной.
Данный пример не будет строить окружность:</p>
<div class="highlight-python"><div class="highlight"><pre><span class="go">sage: c = circle((0,0), 1, rgbcolor=(1,1,0))</span>
</pre></div>
</div>
<p>Чтобы построить ее, используйте <tt class="docutils literal"><span class="pre">c.show()</span></tt> или <tt class="docutils literal"><span class="pre">show(c)</span></tt>:</p>
<div class="highlight-python"><div class="highlight"><pre><span class="go">sage: c.show()</span>
</pre></div>
</div>
<p><tt class="docutils literal"><span class="pre">c.save('filename.png')</span></tt> сохранит график в файл.</p>
<p>Теперь эти &#8216;окружности&#8217; больше похожи на эллипсы, так как оси имеют
разный масштаб. Это можно исправить следующим образом:</p>
<div class="highlight-python"><div class="highlight"><pre><span class="go">sage: c.show(aspect_ratio=1)</span>
</pre></div>
</div>
<p>Команда <tt class="docutils literal"><span class="pre">show(c,</span> <span class="pre">aspect_ratio=1)</span></tt> выполнит то же самое. Сохранить
картинку можно с помощью <tt class="docutils literal"><span class="pre">c.save('filename.png',</span> <span class="pre">aspect_ratio=1)</span></tt>.</p>
<p>Строить графики базовых функций легко:</p>
<div class="highlight-python"><div class="highlight"><pre><span class="go">sage: plot(cos, (-5,5))</span>
</pre></div>
</div>
<p>Как только имя переменной определено, можно создать параметрический график:</p>
<div class="highlight-python"><div class="highlight"><pre><span class="go">sage: x = var(&#39;x&#39;)</span>
<span class="go">sage: parametric_plot((cos(x),sin(x)^3),(x,0,2*pi),rgbcolor=hue(0.6))</span>
</pre></div>
</div>
<p>Важно отметить, что оси графика будут пересекаться лишь в том случае,
когда начало координат находится в поле зрения графика, и что к
достаточно большим значениям можно применить научное обозначение:</p>
<div class="highlight-python"><div class="highlight"><pre><span class="go">sage: plot(x^2,(x,300,500))</span>
</pre></div>
</div>
<p>Можно объединять построения, добавляя их друг другу:</p>
<div class="highlight-python"><div class="highlight"><pre><span class="go">sage: x = var(&#39;x&#39;)</span>
<span class="go">sage: p1 = parametric_plot((cos(x),sin(x)),(x,0,2*pi),rgbcolor=hue(0.2))</span>
<span class="go">sage: p2 = parametric_plot((cos(x),sin(x)^2),(x,0,2*pi),rgbcolor=hue(0.4))</span>
<span class="go">sage: p3 = parametric_plot((cos(x),sin(x)^3),(x,0,2*pi),rgbcolor=hue(0.6))</span>
<span class="go">sage: show(p1+p2+p3, axes=false)</span>
</pre></div>
</div>
<p>Хороший способ создания заполненных фигур — создание списка точек (<tt class="docutils literal"><span class="pre">L</span></tt>
в следующем примере), а затем использование команды <tt class="docutils literal"><span class="pre">polygon</span></tt> для
построения фигуры с границами, образованными заданными точками. К
примеру, создадим зеленый дельтоид:</p>
<div class="highlight-python"><div class="highlight"><pre><span class="go">sage: L = [[-1+cos(pi*i/100)*(1+cos(pi*i/100)),\</span>
<span class="gp">... </span>  <span class="mi">2</span><span class="o">*</span><span class="n">sin</span><span class="p">(</span><span class="n">pi</span><span class="o">*</span><span class="n">i</span><span class="o">/</span><span class="mi">100</span><span class="p">)</span><span class="o">*</span><span class="p">(</span><span class="mi">1</span><span class="o">-</span><span class="n">cos</span><span class="p">(</span><span class="n">pi</span><span class="o">*</span><span class="n">i</span><span class="o">/</span><span class="mi">100</span><span class="p">))]</span> <span class="k">for</span> <span class="n">i</span> <span class="ow">in</span> <span class="nb">range</span><span class="p">(</span><span class="mi">200</span><span class="p">)]</span>
<span class="go">sage: p = polygon(L, rgbcolor=(1/8,3/4,1/2))</span>
<span class="go">sage: p</span>
</pre></div>
</div>
<p>Напечатайте <tt class="docutils literal"><span class="pre">show(p,</span> <span class="pre">axes=false)</span></tt>, чтобы не показывать осей на графике.</p>
<p>Можно добавить текст на график:</p>
<div class="highlight-python"><div class="highlight"><pre><span class="go">sage: L = [[6*cos(pi*i/100)+5*cos((6/2)*pi*i/100),\</span>
<span class="gp">... </span>  <span class="mi">6</span><span class="o">*</span><span class="n">sin</span><span class="p">(</span><span class="n">pi</span><span class="o">*</span><span class="n">i</span><span class="o">/</span><span class="mi">100</span><span class="p">)</span><span class="o">-</span><span class="mi">5</span><span class="o">*</span><span class="n">sin</span><span class="p">((</span><span class="mi">6</span><span class="o">/</span><span class="mi">2</span><span class="p">)</span><span class="o">*</span><span class="n">pi</span><span class="o">*</span><span class="n">i</span><span class="o">/</span><span class="mi">100</span><span class="p">)]</span> <span class="k">for</span> <span class="n">i</span> <span class="ow">in</span> <span class="nb">range</span><span class="p">(</span><span class="mi">200</span><span class="p">)]</span>
<span class="go">sage: p = polygon(L, rgbcolor=(1/8,1/4,1/2))</span>
<span class="go">sage: t = text(&quot;hypotrochoid&quot;, (5,4), rgbcolor=(1,0,0))</span>
<span class="go">sage: show(p+t)</span>
</pre></div>
</div>
<p>Учителя математики часто рисуют следующий график на доске: не одну
ветвь arcsin, а несколько, т.е. график функции <img class="math" src="_images/math/e65fd6ecacbdc5512111768c09bcd9d4a18e2a30.png" alt="y=\sin(x)"/>
для <img class="math" src="_images/math/26eeb5258ca5099acf8fe96b2a1049c48c89a5e6.png" alt="x"/> между <img class="math" src="_images/math/40800a3d45e18b09bf1762663a03753220517d61.png" alt="-2\pi"/> и <img class="math" src="_images/math/709acef3551b886e6754de72d59a88f00660f0d3.png" alt="2\pi"/>, перевернутый по
отношению к линии в 45 градусов. Следующая команда Sage построит
вышеуказанное:</p>
<div class="highlight-python"><div class="highlight"><pre><span class="go">sage: v = [(sin(x),x) for x in srange(-2*float(pi),2*float(pi),0.1)]</span>
<span class="go">sage: line(v)</span>
</pre></div>
</div>
<p>Так как функция тангенса имеет больший интервал, чем синус, при
использовании той же техники для перевертывания тангенса требуется
изменить минимальное и максимальное значения координат для оси <em>x</em>:</p>
<div class="highlight-python"><div class="highlight"><pre><span class="go">sage: v = [(tan(x),x) for x in srange(-2*float(pi),2*float(pi),0.01)]</span>
<span class="go">sage: show(line(v), xmin=-20, xmax=20)</span>
</pre></div>
</div>
<p>Sage также может строить графики в полярных координатах, контурные
построения и изображения векторных полей (для специальных видов функций).
Далее следует пример контурного чертежа:</p>
<div class="highlight-python"><div class="highlight"><pre><span class="go">sage: f = lambda x,y: cos(x*y)</span>
<span class="go">sage: contour_plot(f, (-4, 4), (-4, 4))</span>
</pre></div>
</div>
</div>
<div class="section" id="id3">
<h2>Трехмерные графики<a class="headerlink" href="#id3" title="Ссылка на этот заголовок">¶</a></h2>
<p>Sage также может быть использован для создания трехмерных графиков.
Эти графики строятся с помощью пакета <a class="reference internal" href="bibliography.html#jmol">[Jmol]</a>, который поддерживает
поворот и приближение картинки с помощью мыши.</p>
<p>Используйте <tt class="docutils literal"><span class="pre">plot3d</span></tt>, чтобы построить график функции формы <img class="math" src="_images/math/b6e1689715cf4fc84276c146ccbef5e33c906f9b.png" alt="f(x, y) = z"/>:</p>
<div class="highlight-python"><div class="highlight"><pre><span class="go">sage: x, y = var(&#39;x,y&#39;)</span>
<span class="go">sage: plot3d(x^2 + y^2, (x,-2,2), (y,-2,2))</span>
</pre></div>
</div>
<p>Еще можно использовать <tt class="docutils literal"><span class="pre">parametric_plot3d</span></tt> для построения графиков
параметрических поверхностей, где каждый из <img class="math" src="_images/math/d20258310be3455daf8318274224a9d1d28fb6a3.png" alt="x, y, z"/> определяется функцией
одной или двух переменных (параметры; обычно <img class="math" src="_images/math/9ad99798ec4c38e165cf517cb9e02b1c9e824103.png" alt="u"/> и <img class="math" src="_images/math/a9f23bf124b6b2b2a993eb313c72e678664ac74a.png" alt="v"/>). Предыдущий график
может быть выражен параметрически в следующем виде:</p>
<div class="highlight-python"><div class="highlight"><pre><span class="go">sage: u, v = var(&#39;u, v&#39;)</span>
<span class="go">sage: f_x(u, v) = u</span>
<span class="go">sage: f_y(u, v) = v</span>
<span class="go">sage: f_z(u, v) = u^2 + v^2</span>
<span class="go">sage: parametric_plot3d([f_x, f_y, f_z], (u, -2, 2), (v, -2, 2))</span>
</pre></div>
</div>
<p>Третий способ построить трехмерную поверхность в Sage - использование
<tt class="docutils literal"><span class="pre">implicit_plot3d</span></tt>, который строит контуры графиков функций, как
<img class="math" src="_images/math/6f6801b42b2cd8861fce070a3b5d3ca732db81f4.png" alt="f(x, y, z) = 0"/>. Чтобы построить сферу, возпользуемся классической формулой:</p>
<div class="highlight-python"><div class="highlight"><pre><span class="go">sage: x, y, z = var(&#39;x, y, z&#39;)</span>
<span class="go">sage: implicit_plot3d(x^2 + y^2 + z^2 - 4, (x,-2, 2), (y,-2, 2), (z,-2, 2))</span>
</pre></div>
</div>
<p>Ниже показаны несколько примеров:</p>
<p><a class="reference external" href="http://en.wikipedia.org/wiki/Cross-cap">Скрещенный колпак</a> (близкий
родственник широко известного <a class="reference external" href="http://en.wikipedia.org/wiki/Cross-cap">листа Мёбиуса</a>):</p>
<div class="highlight-python"><div class="highlight"><pre><span class="go">sage: u, v = var(&#39;u,v&#39;)</span>
<span class="go">sage: fx = (1+cos(v))*cos(u)</span>
<span class="go">sage: fy = (1+cos(v))*sin(u)</span>
<span class="go">sage: fz = -tanh((2/3)*(u-pi))*sin(v)</span>
<span class="go">sage: parametric_plot3d([fx, fy, fz], (u, 0, 2*pi), (v, 0, 2*pi),</span>
<span class="gp">... </span>  <span class="n">frame</span><span class="o">=</span><span class="bp">False</span><span class="p">,</span> <span class="n">color</span><span class="o">=</span><span class="s">&quot;red&quot;</span><span class="p">)</span>
</pre></div>
</div>
<p>Крученый тороид:</p>
<div class="highlight-python"><div class="highlight"><pre><span class="go">sage: u, v = var(&#39;u,v&#39;)</span>
<span class="go">sage: fx = (3+sin(v)+cos(u))*cos(2*v)</span>
<span class="go">sage: fy = (3+sin(v)+cos(u))*sin(2*v)</span>
<span class="go">sage: fz = sin(u)+2*cos(v)</span>
<span class="go">sage: parametric_plot3d([fx, fy, fz], (u, 0, 2*pi), (v, 0, 2*pi),</span>
<span class="gp">... </span>  <span class="n">frame</span><span class="o">=</span><span class="bp">False</span><span class="p">,</span> <span class="n">color</span><span class="o">=</span><span class="s">&quot;red&quot;</span><span class="p">)</span>
</pre></div>
</div>
<p>Лемниската:</p>
<div class="highlight-python"><div class="highlight"><pre><span class="go">sage: x, y, z = var(&#39;x,y,z&#39;)</span>
<span class="go">sage: f(x, y, z) = 4*x^2 * (x^2 + y^2 + z^2 + z) + y^2 * (y^2 + z^2 - 1)</span>
<span class="go">sage: implicit_plot3d(f, (x, -0.5, 0.5), (y, -1, 1), (z, -1, 1))</span>
</pre></div>
</div>
</div>
</div>


          </div>
        </div>
      </div>
      <div class="sphinxsidebar">
        <div class="sphinxsidebarwrapper">
            <h3><a href="index.html">Содержание</a></h3>
            <ul>
<li><a class="reference internal" href="#">Построение графиков</a><ul>
<li><a class="reference internal" href="#id2">Двумерные графики</a></li>
<li><a class="reference internal" href="#id3">Трехмерные графики</a></li>
</ul>
</li>
</ul>

            <h4>Предыдущий раздел</h4>
            <p class="topless"><a href="tour_algebra.html"
                                  title="предыдущая глава">Базовая алгебра и вычисления</a></p>
            <h4>Следующий раздел</h4>
            <p class="topless"><a href="tour_functions.html"
                                  title="следующая глава">Распространённые проблемы с функциями</a></p>
            <h3>На этой странице</h3>
            <ul class="this-page-menu">
              <li><a href="_sources/tour_plotting.txt"
                     rel="nofollow">Показать исходный текст</a></li>
            </ul>
          <div id="searchbox" style="display: none">
            <h3>Быстрый поиск</h3>
              <form class="search" action="search.html" method="get">
                <input type="text" name="q" size="18" />
                <!-- The shading of the "Go" button should be consistent -->
                <!-- with the colour of the header and footer. See the file -->
                <!-- doc/common/themes/sage/theme.conf for colours used by -->
                <!-- the Sage theme. -->
                <input type="submit" style="background-color: #B8B9F6" value="Искать" />
                <input type="hidden" name="check_keywords" value="yes" />
                <input type="hidden" name="area" value="default" />
              </form>
              <p class="searchtip" style="font-size: 90%">
              Введите слова для поиска или имя модуля, класса или функции.
              </p>
          </div>
          <script type="text/javascript">$('#searchbox').show(0);</script>
        </div>
      </div>
      <div class="clearer"></div>
    </div>
    <div class="related">
      <h3>Просмотр</h3>
      <ul>
        <li class="right" style="margin-right: 10px">
          <a href="genindex.html" title="Словарь-указатель"
             >словарь</a></li>
        <li class="right" >
          <a href="py-modindex.html" title="Python Module Index"
             >модули</a> |</li>
        <li class="right" >
          <a href="tour_functions.html" title="Распространённые проблемы с функциями"
             >следующий</a> |</li>
        <li class="right" >
          <a href="tour_algebra.html" title="Базовая алгебра и вычисления"
             >предыдущий</a> |</li>
  
    
      <a href="../index.html"><img src="_static/sagelogo.png" style="vertical-align: middle" title="Sage Logo"></a>
    
  
  
        <li><a href="index.html">Sage Tutorial in Russian v5.9</a> &raquo;</li>

          <li><a href="tour.html" >Тур по Sage</a> &raquo;</li> 
      </ul>
    </div>
    
    <div class="footer">
        &copy; Copyright 2005--2011, The Sage Development Team.
      При создании использован <a href="http://sphinx.pocoo.org/">Sphinx</a> 1.1.3.
    </div>
    <script type="text/javascript">
/*global jQuery, window */
/* Sphinx sidebar toggle.  Putting this code at the end of the body
 * enables the toggle for the live, static, and offline docs.  Note:
 * sage.misc.html.math_parse() eats jQuery's dollar-sign shortcut. */
var jq = jQuery;  
jq(document).ready(function () {
    var bar, bod, bg, fg, key, tog, wid_old, wid_new, resize, get_state, set_state;
    bod = jq('div.bodywrapper');
    bar = jq('div.sphinxsidebar');
    tog = jq('<div class="sphinxsidebartoggle"></div>');
    
    /* Delayed resize helper.  Not perfect but good enough. */
    resize = function () {
        setTimeout(function () {
            tog.height(bod.height());
        }, 100);
    };
    jq(window).resize(function () {
        resize();
    });
    
    /* Setup and add the toggle. See Sphinx v0.5.1 default.css. */
    fg = jq('div.sphinxsidebar p a').css('color') || 'rgb(152, 219, 204)';
    bg = jq('div.document').css('background-color') || 'rgb(28, 78, 99)';
    wid_old = '230px';
    wid_new = '5px';
    tog.css('background-color', bg)
        .css('border-width', '0px')
        .css('border-right', wid_new + ' ridge ' + bg)
        .css('cursor', 'pointer')
        .css('position', 'absolute')
        .css('left', '-' + wid_new)
        .css('top', '0px')
        .css('width', wid_new);
    bod.css('position', 'relative');
    bod.prepend(tog);
    resize();
    
    /* Cookie helpers. */
    key = 'sphinxsidebar=';
    set_state = function (s) {
        var date = new Date();
        /* Expiry in 7 days. */
        date.setTime(date.getTime() + (7 * 24 * 3600 * 1000));
        document.cookie = key + encodeURIComponent(s) + '; expires=' +
            date.toUTCString() + '; path=/';
    };
    get_state = function () {
        var i, c, crumbs = document.cookie.split(';');
        for (i = 0; i < crumbs.length; i += 1) {
            c = crumbs[i].replace(/^\s+/, '');
            if (c.indexOf(key) === 0) {
                return decodeURIComponent(c.substring(key.length, c.length));
            }
        }
        return null;
    };
    
    /* Event handlers. */
    tog.mouseover(function (ev) {
        tog.css('border-right-color', fg);
    }).mouseout(function (ev) {
        tog.css('border-right-color', bg);
    }).click(function (ev) {
        if (bod.hasClass('wide')) {
            bod.removeClass('wide');
            bod.css('margin-left', wid_old);
            bar.css('width', wid_old);
            bar.show();
            set_state('visible');
        } else {
            set_state('hidden');
            bar.hide();
            bar.css('width', '0px');
            bod.css('margin-left', wid_new);
            bod.addClass('wide');
        }
        resize();
    });
    
    /* Hide the normally visible sidebar? */
    if (get_state() === 'hidden') {
        tog.trigger('click');
    } else {
        set_state('visible');
    }
});
    </script>
  </body>
</html>