Решение систем линейных уравнений в Python


Машинное обучение и анализ данных
Машинное обучение и анализ данных


Решение систем линейных уравнений в Python

Пример 1. Система 2 уравнений

Рассмотрим простую систему из 2 линейных уравнений с 2 неизвестными:

\begin{matrix} 2x+5y=1 &(1) \\ x-10y=3 &(2) \end{matrix}

Аналитическое решение

Система легко решается аналитически. Для этого достаточно выразить из уравнения (2) переменную x:

\begin{matrix} x=3 + 10y &(3) \end{matrix}

После чего подставить её в уравнение (1): \begin{matrix} 2\cdot(3 + 10y)+5y=1, \end{matrix} и решить получившееся линейное уравнение относительно переменной y: \begin{matrix} 25y+6=1 \ \end{matrix}

\begin{matrix} 25y=-5 \\ \end{matrix}\begin{matrix} y=-0.2 \end{matrix}

Полученное значение y можно подставить в выражение для x в уравнение (3): \begin{matrix} x=3 + 10\cdot (-0.2) \end{matrix} и получить значение переменной x: \begin{matrix} x=1 \end{matrix} Таким образом решением системы будет: (1; -0,2)

(1-е значение в ответе - x, 2-е - y)

Решение матричным методом (python numpy)

Запишем исходную систему уравнений в виде матрицы (левая часть) и вектора (правая часть): \begin{matrix} 2x+5y=1 \\ x-10y=3 \end{matrix}

Для этого выпишем по порядку все коэффициенты перед неизвестными в матрицу.

Коэффициент перед переменной х 1й строки на место в матрице с координатами 0,0. (2)

Коэффициент перед переменной y 1й строки на место в матрице с координатами 0,1. (5)

Коэффициент перед переменной х 2й строки на место в матрице с координатами 1,0. (1)

Коэффициент перед переменной y 2й строки на место в матрице с координатами 1,1. (-10)

\begin{pmatrix} 2& 5 \\ 1 & -10 \end{pmatrix}

Значение свободного члена (число, не умноженное ни на одну переменную системы) после знака равенства 1й строки на место 0 в векторе.

Значение свободного члена 2й строки на место 1 в векторе.

\begin{pmatrix} 1 \\ 3 \end{pmatrix}

Для этого воспользуемся numpy массивами:

In [1]:
import numpy # импортируем библиотеку 

M1 = numpy.array([[2., 5.], [1., -10.]]) # Матрица (левая часть системы)
v1 = numpy.array([1., 3.]) # Вектор (правая часть системы)
#Запишем все числа с точкой, т.к. иначе в Python 2 они будут участвовать в целочисленных операциях (остатки от деления будут отбрасываться)

Для решения системы воспользуемся функцией numpy.linalg.solve модуля numpy (документация - http://docs.scipy.org/doc/numpy/reference/generated/numpy.linalg.solve.html). Функция принимает на вход 2 параметра:

1й - матрица коэффициентов перед переменными

2й - вектор свободных членов

In [2]:
numpy.linalg.solve(M1, v1)
Out[2]:
array([ 1. , -0.2])

Обратим внимание, что ответом так же является numpy массив!

при этом порядок следования ответов в массиве соответствует порядку столбцов исходной матрицы. Т.е. на 0 месте находится x=1, т.к. мы в матрице внесли в 0 столбец коэффициенты перед переменной х!

Ответ: (1; -0,2)


Пример 2. Система 4 уравнений

Рассмотрим простую систему из 2 линейных уравнений с 2 неизвестными: \begin{matrix} A + C = 2 &(4) \\ -A + B - 2C + D = -2 &(5) \\ 4A + C - 2D = 0 &(6) \\ -4A + 4B + D = 5 &(7) \end{matrix}

Для наглядности решения данной системы матричным методом запишем её в таком виде, чтобы каждое уравнение содержало все 4 переменных, и чтобы они занимали в каждой строке одно и то же порядковое место (А - 0, B - 1, C - 2, D - 3):

\begin{matrix} A + 0B + C + 0D = 2 &(8) \\ -A + B - 2C + D = -2 &(9) \\ 4A + 0B + C - 2D = 0 &(10) \\ -4A + 4B + 0C + D = 5 &(11) \end{matrix}

теперь аналогично примеру 1 выпишем матрицу (коэффициенты перед переменными из левой части системы построчно в порядке следования переменных) и вектор (свободные члены из правой части системы):

\begin{pmatrix} 1 & 0 & 1 & 0 \\ -1 & 1 & -2 & 1 \\ 4 & 0 & 1 & -2 \\ -4 & 4 & 0 & 1 \end{pmatrix}\begin{pmatrix} 2 \\ -2 \\ 0 \\ 5 \end{pmatrix}
In [3]:
import numpy # импортируем библиотеку 

M2 = numpy.array([[1., 0., 1., 0.], [-1., 1., -2., 1.], [4., 0., 1., -2.], [-4., 4., 0., 1.]]) # Матрица (левая часть системы)
v2 = numpy.array([2., -2., 0., 5.]) # Вектор (правая часть системы)

numpy.linalg.solve(M2, v2)
Out[3]:
array([ 0.,  1.,  2.,  1.])

Ответ: (0; 1; 2; 1)

A = 0, B = 1, C =2, D = 1


Пример 3. Система 3 уравнений (с приведением к линейному виду)

Матричный метод применим только для решения линейных уравнений. Однако иногда можно встретить нелинейные уравнения, легко приводимые к линейной форме, например:

\begin{matrix} 2x_{1}+x_{2}^2+x_{3} = 2 &(12) \\ x_{1}-x_{2}^2 = -2 &(13) \\ 3x_{1}-x_{2}^2+2x_{3} = 2 &(14) \end{matrix}

Можно заметить, что переменная x2 входит во все 3 уравнения только в квадратичной форме. Это означает, что мы можем осуществить замену:

\begin{matrix} x_{2}^2 = a &(15) \end{matrix}

С учётом этой подстановки запишем систему, аналогично примеру 2 с вхождением всех 3 переменных:

\begin{matrix} 2x_{1}+a+x_{3} = 2 &(16) \\ x_{1}-a+0x_{3} = -2 &(17) \\ 3x_{1}-a+2x_{3} = 2 &(18) \end{matrix}

Для новой системы мы уже умеем записывать матрицу (коэффициенты перед переменными из левой части системы) и вектор (свободные члены из правой части):

\begin{pmatrix} 2 & 1 & 1 \\ 1 & -1 & 0 \\ 3 & -1 & 2 \end{pmatrix}\begin{pmatrix} 2 \\ -2 \\ 2 \end{pmatrix}
In [4]:
import numpy # импортируем библиотеку 

M3 = numpy.array([[2., 1., 1.], [1., -1., 0.], [3., -1., 2.]]) # Матрица (левая часть системы)
v3 = numpy.array([2., -2., 2.]) # Вектор (правая часть системы)

numpy.linalg.solve(M3, v3)
Out[4]:
array([-1.,  1.,  3.])

Мы получили промежуточный результат:

$x_{1}= -1, a= 1, x_{3}= 3,$

или

$x_{1}= -1, x_{2}^2= 1, x_{3}= 3,$

$x_{2}^2=1$ соответствует 2 значениям $x_{2}$: 1 и -1.

Таким образом мы получаем 2 решения нашей системы: $x_{1}= -1, x_{2}= 1, x_{3}= 3,$ и $x_{1}= -1, x_{2}= -1, x_{3}= 3,$

Ответ: (-1; 1; 3) и (-1; -1; 3)


Пример 4. Решение простой задачи с помощью системы линейных уравнений.

Навстречу друг другу из одного города в другой, расстояние между которыми составляет 30 км, едут два велосипедиста. Предположим, что если велосипедист 1 выедет на 2 ч раньше своего товарища, то они встретятся через 2,5 часа после отъезда велосипедиста 2; если же велосипедист 2 выедет 2мя часами ранее велосипедиста 1, то встреча произойдет через 3 часа после отъезда первого. С какой скоростью движется каждый велосипедист?

Обозначим за неизвестные x и y скорости велосипедистов.

Путь = скорость * время

Расстояние между велосипедистами = путь 1 велосипедиста + путь 2 велосипедиста

На основании этих простых рассуждений и данных задачи можно записать уравнения:

\begin{matrix} (2.5 + 2)x+2.5y=30 &(19) \\ 3x + (3+2)y=30 &(20) \end{matrix}

или

\begin{matrix} 4.5x+2.5y=30 &(21) \\ 3x + 5y=30 &(22) \end{matrix}

Аналогично примеру 1 легко составим матрицу коэффициентов перед неизвестными (левая часть системы) и вектор со свободными членами (права часть системы):

\begin{pmatrix} 4.5& 2.5 \\ 3 & 5 \end{pmatrix}\begin{pmatrix} 30 \\ 30 \end{pmatrix}
In [5]:
import numpy # импортируем библиотеку 

M4 = numpy.array([[4.5, 2.5], [3., 5.]]) # Матрица (левая часть системы)
v4 = numpy.array([30., 30.]) # Вектор (правая часть системы)

numpy.linalg.solve(M4, v4)
Out[5]:
array([ 5.,  3.])

Ответ: 5км/ч и 3км/ч


Пример 5. Нахождение уравнения плоскости по точкам, через которые она проходит.

Уравнение плоскости в 3-х мерном пространстве задаётся уравнением: \begin{matrix} z = ax + by + c & (23) \end{matrix} Уравнение плоскости однозначно задаётся 3 точками через которые она проходит.

Таким образом легко понять, что если мы знаем координаты точек, через которые проходит плоскость, то в уравнении (23) у вас 3 переменных: a, b, c. А значения x, y, z нам известны для 3 точек.

Если плоскость проходит через точки (1;-6;1), (0;-3;2) и (-3;0;-1), то мы легко можем найти коэффициенты, подставив значения соответствующих координат для всех 3 точек в уравнение (23) и получив систему из 3 уравнений.

Для точки x = 1, y = -6, z = 1: \begin{matrix} a\cdot 1 + b\cdot (-6) + c = 1 &(24) \end{matrix}

Для точки x = 0, y = -3, z = 2: \begin{matrix} a\cdot 0 + b\cdot (-3) + c = 2 &(25) \end{matrix}

Для точки x = -3, y = 0, z = -1: \begin{matrix} a\cdot (-3) + b\cdot 0 + c = -1 &(26) \end{matrix}

На основании системы уравнений (24), (25), (26) можно записать матрицу коэффициентов перед неизвестными (левая часть матрицы):

\begin{pmatrix} 1& -6 & 1 \\ 0 & -3 & 1 \\ -3 & 0 & 1 \end{pmatrix}

И вектор свободных членов (правая часть): \begin{pmatrix} 1 \ 2 \ -1 \end{pmatrix}

In [6]:
import numpy # импортируем библиотеку 

M5 = numpy.array([[1., -6., 1.], [0., -3., 1], [-3, 0, 1]]) # Матрица (левая часть системы)
v5 = numpy.array([1., 2., -1.]) # Вектор (правая часть системы)

numpy.linalg.solve(M5, v5)
Out[6]:
array([ 2.,  1.,  5.])

Ответ: уравнение искомой плоскости в пространстве задаётся уравнением $z = 2x + y + 5$


Пример 6. Нахождение уравнения параболы по 2 точкам и касательной

Найти уравнение параболы ($f(x) = ax^2 + bx + x & (27)$), проходящей через точки (1,1) и (-1,1) и касающейся биссектрисы 1й координатной четверти.

Как и в предыдущем примере неизвестными для нас являются коэффициенты a, b, c.

Подставив в уравнение параболы (27) значения аргумента (x) и функции (f(x)) получим 2 уравнения:

\begin{matrix} a\cdot 1^2 + b\cdot 1 + c = 1 &(28) \\ a\cdot (-1)^2 + b\cdot (-1) + c = 1 &(29) \end{matrix}

Однако для нахождения 3 неизвестных 2 уравнений мало. Необходимо найти ещё одно из оставшихся условий.

Касание биссектрисы 1й координатной четверти означает, что наша парабола имеет касательную $y = x$. Если посмотреть на условие задачи, то мы увидим, что одна из точек (1, 1) лежит на этой прямой. Это означает, что мы знаем точку касания.

Уравнение прямой, делящей 1-ю координатную четверть пополам (биссектрисы) имеет вид $y = kx \quad (30)$

При этом мы знаем, что угол уравнения касательной (коэффициент k уравнения (30)) равен производной от функции (27) в точке касания.

\begin{matrix} f'(x) = 2ax + bx & (31) \end{matrix}

Подставив значение аргумента (x = 1) в точке касания и коэффициента (k = 1 в качестве производной f'(x))

\begin{matrix} 1 = 2a\cdot1 + b\cdot1 & (32) \end{matrix}

Используя уравнения (28), (29) и (32), запишем полную систему уравнений, которую нам необходимо решить:

\begin{matrix} a\cdot 1 + b\cdot 1 + c \cdot 1 = 1 &(33) \\ a\cdot 1 + b\cdot (-1) + c \cdot 1 = 1 &(34) \\ a\cdot 2 + b\cdot 1 + c \cdot 0 = 1 &(35) \end{matrix}

По привычной уже схеме запишем коэффициенты перед переменными (левую часть системы) в матрицу, а свободные члены (правую часть) в вектор:

\begin{pmatrix} 1& 1 & 1 \\ 1 & -1 & 1 \\ 2 & 1 & 0 \end{pmatrix}\begin{pmatrix} 1 \\ 1 \\ 1 \end{pmatrix}
In [7]:
import numpy # импортируем библиотеку 

M6 = numpy.array([[1., 1., 1.], [1., -1., 1], [2, 1, 0]]) # Матрица (левая часть системы)
v6 = numpy.array([1., 1., 1.]) # Вектор (правая часть системы)

numpy.linalg.solve(M6, v6)
Out[7]:
array([ 0.5, -0. ,  0.5])

Ответ: уравнение искомой параболы задаётся функцией $f(x) = 0.5x^2 + 0.5$

Примечание к примеру 6

На иллюстрации ниже изображены графики параболы и биссектрисы, которой она касается. А так же 2 точки, через которых проходит парабола.

In [8]:
import numpy
import matplotlib as mpl
import matplotlib.pyplot as plt
% matplotlib inline

mpl.rc('font', family='Verdana', size= 16)

w = numpy.linalg.solve(M6, v6) # запишем найденные коэффициенты в переменную
def f(x):
    return w[0]*x**2 + w[1]*x + w[2] # уравнение параболы


fig, ax = plt.subplots(figsize=(10,5))

x = numpy.linspace(-2,2,200)
ax.axis([-2., 2., 0., 2.])
ax.grid()
ax.plot(x, f(x), label = 'Парабола')
ax.plot(x, x, label = 'Биссектриса 1й\nкоординатной четверти')
ax.set_xlabel(u'x',{'fontname':'Arial', 'size': 24})
ax.set_ylabel(u'f(x)',{'fontname':'Arial', 'size': 24})
plt.plot([-1, 1], [1, 1], 'ro', label = 'Точки для\nпостроения графика')
ax.annotate('Точка\nкасания', xy=(1., 1.), xytext=(1.5, 0.5),
            arrowprops=dict(facecolor='black', shrink=0.05),
            )

ax.legend(bbox_to_anchor=(1.6, 1.))

plt.show()




























Решение систем линейных уравнений в Python

<!-- Load mathjax --> <script src="https://cdn.mathjax.org/mathjax/latest/MathJax.js?config=TeX-AMS_HTML"></script> <!-- MathJax configuration --> <script type="text/x-mathjax-config"> MathJax.Hub.Config({ tex2jax: { inlineMath: [ ['$','$'], ["\\(","\\)"] ], displayMath: [ ['$$','$$'], ["\\[","\\]"] ], processEscapes: true, processEnvironments: true }, // Center justify equations in code and markdown cells. Elsewhere // we use CSS to left justify single line equations in code cells. displayAlign: 'center', "HTML-CSS": { styles: {'.MathJax_Display': {"margin": 0}}, linebreaks: { automatic: true } } }); </script> <!-- End of mathjax configuration --> <div tabindex="-1" id="notebook" class="border-box-sizing"> <div id="notebook-container"> <div class="cell border-box-sizing text_cell rendered"> <div class="prompt input_prompt"> </div> <div class="inner_cell"> <div class="text_cell_render border-box-sizing rendered_html"> <h1 id="Решение-систем-линейных-уравнений-в-Python">Решение систем линейных уравнений в Python<a class="anchor-link" href="#Решение-систем-линейных-уравнений-в-Python">¶</a></h1> </div> </div> </div> <div class="cell border-box-sizing text_cell rendered"> <div class="prompt input_prompt"> </div> <div class="inner_cell"> <div class="text_cell_render border-box-sizing rendered_html"> <h2 id="Пример-1.-Система-2-уравнений">Пример 1. Система 2 уравнений<a class="anchor-link" href="#Пример-1.-Система-2-уравнений">¶</a></h2><p>Рассмотрим простую систему из 2 линейных уравнений с 2 неизвестными:</p> \begin{matrix} 2x+5y=1 &(1) \\ x-10y=3 &(2) \end{matrix} </div> </div> </div> <div class="cell border-box-sizing text_cell rendered"> <div class="prompt input_prompt"> </div> <div class="inner_cell"> <div class="text_cell_render border-box-sizing rendered_html"> <h3 id="Аналитическое-решение">Аналитическое решение<a class="anchor-link" href="#Аналитическое-решение">¶</a></h3><p>Система легко решается аналитически. Для этого достаточно выразить из уравнения (2) переменную x:</p> \begin{matrix} x=3 + 10y &(3) \end{matrix}<p>После чего подставить её в уравнение (1): \begin{matrix} 2\cdot(3 + 10y)+5y=1, \end{matrix} и решить получившееся линейное уравнение относительно переменной y: \begin{matrix} 25y+6=1 \ \end{matrix}</p> \begin{matrix} 25y=-5 \\ \end{matrix}\begin{matrix} y=-0.2 \end{matrix}<p>Полученное значение y можно подставить в выражение для x в уравнение (3): \begin{matrix} x=3 + 10\cdot (-0.2) \end{matrix} и получить значение переменной x: \begin{matrix} x=1 \end{matrix} Таким образом <strong>решением системы будет: (1; -0,2)</strong></p> <p><em>(1-е значение в ответе - x, 2-е - y)</em></p> </div> </div> </div> <div class="cell border-box-sizing text_cell rendered"> <div class="prompt input_prompt"> </div> <div class="inner_cell"> <div class="text_cell_render border-box-sizing rendered_html"> <h3 id="Решение-матричным-методом-(python-numpy)">Решение матричным методом (python numpy)<a class="anchor-link" href="#Решение-матричным-методом-(python-numpy)">¶</a></h3><p>Запишем исходную систему уравнений в виде матрицы (левая часть) и вектора (правая часть): \begin{matrix} 2x+5y=1 \\ x-10y=3 \end{matrix}</p> <p>Для этого выпишем по порядку все коэффициенты перед неизвестными в матрицу.</p> <p>Коэффициент перед переменной х 1й строки на место в матрице с координатами 0,0. (2)</p> <p>Коэффициент перед переменной y 1й строки на место в матрице с координатами 0,1. (5)</p> <p>Коэффициент перед переменной х 2й строки на место в матрице с координатами 1,0. (1)</p> <p>Коэффициент перед переменной y 2й строки на место в матрице с координатами 1,1. (-10)</p> \begin{pmatrix} 2& 5 \\ 1 & -10 \end{pmatrix}<p>Значение свободного члена (число, не умноженное ни на одну переменную системы) после знака равенства 1й строки на место 0 в векторе.</p> <p>Значение свободного члена 2й строки на место 1 в векторе.</p> \begin{pmatrix} 1 \\ 3 \end{pmatrix}<p>Для этого воспользуемся numpy массивами:</p> </div> </div> </div> <div class="cell border-box-sizing code_cell rendered"> <div class="input"> <div class="prompt input_prompt">In [1]:</div> <div class="inner_cell"> <div class="input_area"> <div class=" highlight hl-ipython3"><pre><span class="kn">import</span> <span class="nn">numpy</span> <span class="c1"># импортируем библиотеку </span> <span class="n">M1</span> <span class="o">=</span> <span class="n">numpy</span><span class="o">.</span><span class="n">array</span><span class="p">([[</span><span class="mf">2.</span><span class="p">,</span> <span class="mf">5.</span><span class="p">],</span> <span class="p">[</span><span class="mf">1.</span><span class="p">,</span> <span class="o">-</span><span class="mf">10.</span><span class="p">]])</span> <span class="c1"># Матрица (левая часть системы)</span> <span class="n">v1</span> <span class="o">=</span> <span class="n">numpy</span><span class="o">.</span><span class="n">array</span><span class="p">([</span><span class="mf">1.</span><span class="p">,</span> <span class="mf">3.</span><span class="p">])</span> <span class="c1"># Вектор (правая часть системы)</span> <span class="c1">#Запишем все числа с точкой, т.к. иначе в Python 2 они будут участвовать в целочисленных операциях (остатки от деления будут отбрасываться)</span> </pre></div> </div> </div> </div> </div> <div class="cell border-box-sizing text_cell rendered"> <div class="prompt input_prompt"> </div> <div class="inner_cell"> <div class="text_cell_render border-box-sizing rendered_html"> <p>Для решения системы воспользуемся функцией numpy.linalg.solve модуля numpy (документация - <a href="http://docs.scipy.org/doc/numpy/reference/generated/numpy.linalg.solve.html">http://docs.scipy.org/doc/numpy/reference/generated/numpy.linalg.solve.html</a>). Функция принимает на вход 2 параметра:</p> <p>1й - матрица коэффициентов перед переменными</p> <p>2й - вектор свободных членов</p> </div> </div> </div> <div class="cell border-box-sizing code_cell rendered"> <div class="input"> <div class="prompt input_prompt">In [2]:</div> <div class="inner_cell"> <div class="input_area"> <div class=" highlight hl-ipython3"><pre><span class="n">numpy</span><span class="o">.</span><span class="n">linalg</span><span class="o">.</span><span class="n">solve</span><span class="p">(</span><span class="n">M1</span><span class="p">,</span> <span class="n">v1</span><span class="p">)</span> </pre></div> </div> </div> </div> <div class="output_wrapper"> <div class="output"> <div class="output_area"><div class="prompt output_prompt">Out[2]:</div> <div class="output_text output_subarea output_execute_result"> <pre>array([ 1. , -0.2])</pre> </div> </div> </div> </div> </div> <div class="cell border-box-sizing text_cell rendered"> <div class="prompt input_prompt"> </div> <div class="inner_cell"> <div class="text_cell_render border-box-sizing rendered_html"> <p>Обратим внимание, что ответом так же является numpy массив!</p> <p>при этом порядок следования ответов в массиве соответствует порядку столбцов исходной матрицы. Т.е. на 0 месте находится x=1, т.к. мы в матрице внесли в 0 столбец коэффициенты перед переменной х!</p> <p><strong>Ответ: (1; -0,2)</strong></p> </div> </div> </div> <div class="cell border-box-sizing text_cell rendered"> <div class="prompt input_prompt"> </div> <p><br></p> <div class="inner_cell"> <div class="text_cell_render border-box-sizing rendered_html"> <h2 id="Пример-2.-Система-4-уравнений">Пример 2. Система 4 уравнений<a class="anchor-link" href="#Пример-2.-Система-4-уравнений">¶</a></h2><p>Рассмотрим простую систему из 2 линейных уравнений с 2 неизвестными: \begin{matrix} A + C = 2 &amp;(4) \\ -A + B - 2C + D = -2 &amp;(5) \\ 4A + C - 2D = 0 &amp;(6) \\ -4A + 4B + D = 5 &amp;(7) \end{matrix}</p> <p>Для наглядности решения данной системы матричным методом запишем её в таком виде, чтобы каждое уравнение содержало все 4 переменных, и чтобы они занимали в каждой строке одно и то же порядковое место (А - 0, B - 1, C - 2, D - 3):</p> \begin{matrix} A + 0B + C + 0D = 2 &(8) \\ -A + B - 2C + D = -2 &(9) \\ 4A + 0B + C - 2D = 0 &(10) \\ -4A + 4B + 0C + D = 5 &(11) \end{matrix}<p>теперь аналогично примеру 1 выпишем матрицу (коэффициенты перед переменными из левой части системы построчно в порядке следования переменных) и вектор (свободные члены из правой части системы):</p> \begin{pmatrix} 1 & 0 & 1 & 0 \\ -1 & 1 & -2 & 1 \\ 4 & 0 & 1 & -2 \\ -4 & 4 & 0 & 1 \end{pmatrix}\begin{pmatrix} 2 \\ -2 \\ 0 \\ 5 \end{pmatrix} </div> </div> </div> <div class="cell border-box-sizing code_cell rendered"> <div class="input"> <div class="prompt input_prompt">In [3]:</div> <div class="inner_cell"> <div class="input_area"> <div class=" highlight hl-ipython3"><pre><span class="kn">import</span> <span class="nn">numpy</span> <span class="c1"># импортируем библиотеку </span> <span class="n">M2</span> <span class="o">=</span> <span class="n">numpy</span><span class="o">.</span><span class="n">array</span><span class="p">([[</span><span class="mf">1.</span><span class="p">,</span> <span class="mf">0.</span><span class="p">,</span> <span class="mf">1.</span><span class="p">,</span> <span class="mf">0.</span><span class="p">],</span> <span class="p">[</span><span class="o">-</span><span class="mf">1.</span><span class="p">,</span> <span class="mf">1.</span><span class="p">,</span> <span class="o">-</span><span class="mf">2.</span><span class="p">,</span> <span class="mf">1.</span><span class="p">],</span> <span class="p">[</span><span class="mf">4.</span><span class="p">,</span> <span class="mf">0.</span><span class="p">,</span> <span class="mf">1.</span><span class="p">,</span> <span class="o">-</span><span class="mf">2.</span><span class="p">],</span> <span class="p">[</span><span class="o">-</span><span class="mf">4.</span><span class="p">,</span> <span class="mf">4.</span><span class="p">,</span> <span class="mf">0.</span><span class="p">,</span> <span class="mf">1.</span><span class="p">]])</span> <span class="c1"># Матрица (левая часть системы)</span> <span class="n">v2</span> <span class="o">=</span> <span class="n">numpy</span><span class="o">.</span><span class="n">array</span><span class="p">([</span><span class="mf">2.</span><span class="p">,</span> <span class="o">-</span><span class="mf">2.</span><span class="p">,</span> <span class="mf">0.</span><span class="p">,</span> <span class="mf">5.</span><span class="p">])</span> <span class="c1"># Вектор (правая часть системы)</span> <span class="n">numpy</span><span class="o">.</span><span class="n">linalg</span><span class="o">.</span><span class="n">solve</span><span class="p">(</span><span class="n">M2</span><span class="p">,</span> <span class="n">v2</span><span class="p">)</span> </pre></div> </div> </div> </div> <div class="output_wrapper"> <div class="output"> <div class="output_area"><div class="prompt output_prompt">Out[3]:</div> <div class="output_text output_subarea output_execute_result"> <pre>array([ 0., 1., 2., 1.])</pre> </div> </div> </div> </div> </div> <div class="cell border-box-sizing text_cell rendered"> <div class="prompt input_prompt"> </div> <div class="inner_cell"> <div class="text_cell_render border-box-sizing rendered_html"> <p><strong>Ответ: (0; 1; 2; 1)</strong></p> <p><em>A = 0, B = 1, C =2, D = 1</em></p> </div> </div> </div> <div class="cell border-box-sizing text_cell rendered"> <div class="prompt input_prompt"> </div> <p><br></p> <div class="inner_cell"> <div class="text_cell_render border-box-sizing rendered_html"> <h2 id="Пример-3.-Система-3-уравнений-(с-приведением-к-линейному-виду)">Пример 3. Система 3 уравнений (с приведением к линейному виду)<a class="anchor-link" href="#Пример-3.-Система-3-уравнений-(с-приведением-к-линейному-виду)">¶</a></h2><p>Матричный метод применим только для решения линейных уравнений. Однако иногда можно встретить нелинейные уравнения, легко приводимые к линейной форме, например:</p> \begin{matrix} 2x_{1}+x_{2}^2+x_{3} = 2 &(12) \\ x_{1}-x_{2}^2 = -2 &(13) \\ 3x_{1}-x_{2}^2+2x_{3} = 2 &(14) \end{matrix}<p>Можно заметить, что переменная x2 входит во все 3 уравнения только в квадратичной форме. Это означает, что мы можем осуществить замену:</p> \begin{matrix} x_{2}^2 = a &(15) \end{matrix}<p>С учётом этой подстановки запишем систему, аналогично примеру 2 с вхождением всех 3 переменных:</p> \begin{matrix} 2x_{1}+a+x_{3} = 2 &(16) \\ x_{1}-a+0x_{3} = -2 &(17) \\ 3x_{1}-a+2x_{3} = 2 &(18) \end{matrix}<p>Для новой системы мы уже умеем записывать матрицу (коэффициенты перед переменными из левой части системы) и вектор (свободные члены из правой части):</p> \begin{pmatrix} 2 & 1 & 1 \\ 1 & -1 & 0 \\ 3 & -1 & 2 \end{pmatrix}\begin{pmatrix} 2 \\ -2 \\ 2 \end{pmatrix} </div> </div> </div> <div class="cell border-box-sizing code_cell rendered"> <div class="input"> <div class="prompt input_prompt">In [4]:</div> <div class="inner_cell"> <div class="input_area"> <div class=" highlight hl-ipython3"><pre><span class="kn">import</span> <span class="nn">numpy</span> <span class="c1"># импортируем библиотеку </span> <span class="n">M3</span> <span class="o">=</span> <span class="n">numpy</span><span class="o">.</span><span class="n">array</span><span class="p">([[</span><span class="mf">2.</span><span class="p">,</span> <span class="mf">1.</span><span class="p">,</span> <span class="mf">1.</span><span class="p">],</span> <span class="p">[</span><span class="mf">1.</span><span class="p">,</span> <span class="o">-</span><span class="mf">1.</span><span class="p">,</span> <span class="mf">0.</span><span class="p">],</span> <span class="p">[</span><span class="mf">3.</span><span class="p">,</span> <span class="o">-</span><span class="mf">1.</span><span class="p">,</span> <span class="mf">2.</span><span class="p">]])</span> <span class="c1"># Матрица (левая часть системы)</span> <span class="n">v3</span> <span class="o">=</span> <span class="n">numpy</span><span class="o">.</span><span class="n">array</span><span class="p">([</span><span class="mf">2.</span><span class="p">,</span> <span class="o">-</span><span class="mf">2.</span><span class="p">,</span> <span class="mf">2.</span><span class="p">])</span> <span class="c1"># Вектор (правая часть системы)</span> <span class="n">numpy</span><span class="o">.</span><span class="n">linalg</span><span class="o">.</span><span class="n">solve</span><span class="p">(</span><span class="n">M3</span><span class="p">,</span> <span class="n">v3</span><span class="p">)</span> </pre></div> </div> </div> </div> <div class="output_wrapper"> <div class="output"> <div class="output_area"><div class="prompt output_prompt">Out[4]:</div> <div class="output_text output_subarea output_execute_result"> <pre>array([-1., 1., 3.])</pre> </div> </div> </div> </div> </div> <div class="cell border-box-sizing text_cell rendered"> <div class="prompt input_prompt"> </div> <div class="inner_cell"> <div class="text_cell_render border-box-sizing rendered_html"> <p>Мы получили промежуточный результат:</p> <p>$x_{1}= -1, a= 1, x_{3}= 3,$</p> <p>или</p> <p>$x_{1}= -1, x_{2}^2= 1, x_{3}= 3,$</p> <p>$x_{2}^2=1$ соответствует 2 значениям $x_{2}$: 1 и -1.</p> <p>Таким образом мы получаем 2 решения нашей системы: $x_{1}= -1, x_{2}= 1, x_{3}= 3,$ и $x_{1}= -1, x_{2}= -1, x_{3}= 3,$</p> <p><strong>Ответ: (-1; 1; 3) и (-1; -1; 3)</strong></p> </div> </div> </div> <div class="cell border-box-sizing text_cell rendered"> <div class="prompt input_prompt"> </div> <p><br></p> <div class="inner_cell"> <div class="text_cell_render border-box-sizing rendered_html"> <h3 id="Пример-4.-Решение-простой-задачи-с-помощью-системы-линейных-уравнений.">Пример 4. Решение простой задачи с помощью системы линейных уравнений.<a class="anchor-link" href="#Пример-4.-Решение-простой-задачи-с-помощью-системы-линейных-уравнений.">¶</a></h3><p>Навстречу друг другу из одного города в другой, расстояние между которыми составляет 30 км, едут два велосипедиста. Предположим, что если велосипедист 1 выедет на 2 ч раньше своего товарища, то они встретятся через 2,5 часа после отъезда велосипедиста 2; если же велосипедист 2 выедет 2мя часами ранее велосипедиста 1, то встреча произойдет через 3 часа после отъезда первого. С какой скоростью движется каждый велосипедист?</p> <p>Обозначим за неизвестные x и y скорости велосипедистов.</p> <p>Путь = скорость * время</p> <p>Расстояние между велосипедистами = путь 1 велосипедиста + путь 2 велосипедиста</p> <p>На основании этих простых рассуждений и данных задачи можно записать уравнения:</p> \begin{matrix} (2.5 + 2)x+2.5y=30 &(19) \\ 3x + (3+2)y=30 &(20) \end{matrix}<p>или</p> \begin{matrix} 4.5x+2.5y=30 &(21) \\ 3x + 5y=30 &(22) \end{matrix}<p>Аналогично примеру 1 легко составим матрицу коэффициентов перед неизвестными (левая часть системы) и вектор со свободными членами (права часть системы):</p> \begin{pmatrix} 4.5& 2.5 \\ 3 & 5 \end{pmatrix}\begin{pmatrix} 30 \\ 30 \end{pmatrix} </div> </div> </div> <div class="cell border-box-sizing code_cell rendered"> <div class="input"> <div class="prompt input_prompt">In [5]:</div> <div class="inner_cell"> <div class="input_area"> <div class=" highlight hl-ipython3"><pre><span class="kn">import</span> <span class="nn">numpy</span> <span class="c1"># импортируем библиотеку </span> <span class="n">M4</span> <span class="o">=</span> <span class="n">numpy</span><span class="o">.</span><span class="n">array</span><span class="p">([[</span><span class="mf">4.5</span><span class="p">,</span> <span class="mf">2.5</span><span class="p">],</span> <span class="p">[</span><span class="mf">3.</span><span class="p">,</span> <span class="mf">5.</span><span class="p">]])</span> <span class="c1"># Матрица (левая часть системы)</span> <span class="n">v4</span> <span class="o">=</span> <span class="n">numpy</span><span class="o">.</span><span class="n">array</span><span class="p">([</span><span class="mf">30.</span><span class="p">,</span> <span class="mf">30.</span><span class="p">])</span> <span class="c1"># Вектор (правая часть системы)</span> <span class="n">numpy</span><span class="o">.</span><span class="n">linalg</span><span class="o">.</span><span class="n">solve</span><span class="p">(</span><span class="n">M4</span><span class="p">,</span> <span class="n">v4</span><span class="p">)</span> </pre></div> </div> </div> </div> <div class="output_wrapper"> <div class="output"> <div class="output_area"><div class="prompt output_prompt">Out[5]:</div> <div class="output_text output_subarea output_execute_result"> <pre>array([ 5., 3.])</pre> </div> </div> </div> </div> </div> <div class="cell border-box-sizing text_cell rendered"> <div class="prompt input_prompt"> </div> <div class="inner_cell"> <div class="text_cell_render border-box-sizing rendered_html"> <p><strong> Ответ: 5км/ч и 3км/ч</strong></p> </div> </div> </div> <div class="cell border-box-sizing text_cell rendered"> <div class="prompt input_prompt"> </div> <p><br></p> <div class="inner_cell"> <div class="text_cell_render border-box-sizing rendered_html"> <h3 id="Пример-5.-Нахождение-уравнения-плоскости-по-точкам,-через-которые-она-проходит.">Пример 5. Нахождение уравнения плоскости по точкам, через которые она проходит.<a class="anchor-link" href="#Пример-5.-Нахождение-уравнения-плоскости-по-точкам,-через-которые-она-проходит.">¶</a></h3><p>Уравнение плоскости в 3-х мерном пространстве задаётся уравнением: \begin{matrix} z = ax + by + c &amp; (23) \end{matrix} Уравнение плоскости однозначно задаётся 3 точками через которые она проходит.</p> <p>Таким образом легко понять, что если мы знаем координаты точек, через которые проходит плоскость, то в уравнении (23) у вас 3 переменных: a, b, c. А значения x, y, z нам известны для 3 точек.</p> <p>Если плоскость проходит через точки (1;-6;1), (0;-3;2) и (-3;0;-1), то мы легко можем найти коэффициенты, подставив значения соответствующих координат для всех 3 точек в уравнение (23) и получив систему из 3 уравнений.</p> <p>Для точки x = 1, y = -6, z = 1: \begin{matrix} a\cdot 1 + b\cdot (-6) + c = 1 &amp;(24) \end{matrix}</p> <p>Для точки x = 0, y = -3, z = 2: \begin{matrix} a\cdot 0 + b\cdot (-3) + c = 2 &amp;(25) \end{matrix}</p> <p>Для точки x = -3, y = 0, z = -1: \begin{matrix} a\cdot (-3) + b\cdot 0 + c = -1 &amp;(26) \end{matrix}</p> <p>На основании системы уравнений (24), (25), (26) можно записать матрицу коэффициентов перед неизвестными (левая часть матрицы):</p> \begin{pmatrix} 1& -6 & 1 \\ 0 & -3 & 1 \\ -3 & 0 & 1 \end{pmatrix}<p>И вектор свободных членов (правая часть): \begin{pmatrix} 1 \ 2 \ -1 \end{pmatrix}</p> </div> </div> </div> <div class="cell border-box-sizing code_cell rendered"> <div class="input"> <div class="prompt input_prompt">In [6]:</div> <div class="inner_cell"> <div class="input_area"> <div class=" highlight hl-ipython3"><pre><span class="kn">import</span> <span class="nn">numpy</span> <span class="c1"># импортируем библиотеку </span> <span class="n">M5</span> <span class="o">=</span> <span class="n">numpy</span><span class="o">.</span><span class="n">array</span><span class="p">([[</span><span class="mf">1.</span><span class="p">,</span> <span class="o">-</span><span class="mf">6.</span><span class="p">,</span> <span class="mf">1.</span><span class="p">],</span> <span class="p">[</span><span class="mf">0.</span><span class="p">,</span> <span class="o">-</span><span class="mf">3.</span><span class="p">,</span> <span class="mi">1</span><span class="p">],</span> <span class="p">[</span><span class="o">-</span><span class="mi">3</span><span class="p">,</span> <span class="mi">0</span><span class="p">,</span> <span class="mi">1</span><span class="p">]])</span> <span class="c1"># Матрица (левая часть системы)</span> <span class="n">v5</span> <span class="o">=</span> <span class="n">numpy</span><span class="o">.</span><span class="n">array</span><span class="p">([</span><span class="mf">1.</span><span class="p">,</span> <span class="mf">2.</span><span class="p">,</span> <span class="o">-</span><span class="mf">1.</span><span class="p">])</span> <span class="c1"># Вектор (правая часть системы)</span> <span class="n">numpy</span><span class="o">.</span><span class="n">linalg</span><span class="o">.</span><span class="n">solve</span><span class="p">(</span><span class="n">M5</span><span class="p">,</span> <span class="n">v5</span><span class="p">)</span> </pre></div> </div> </div> </div> <div class="output_wrapper"> <div class="output"> <div class="output_area"><div class="prompt output_prompt">Out[6]:</div> <div class="output_text output_subarea output_execute_result"> <pre>array([ 2., 1., 5.])</pre> </div> </div> </div> </div> </div> <div class="cell border-box-sizing text_cell rendered"> <div class="prompt input_prompt"> </div> <div class="inner_cell"> <div class="text_cell_render border-box-sizing rendered_html"> <p><strong>Ответ: уравнение искомой плоскости в пространстве задаётся уравнением $z = 2x + y + 5$</strong></p> </div> </div> </div> <div class="cell border-box-sizing text_cell rendered"> <div class="prompt input_prompt"> </div> <p><br></p> <div class="inner_cell"> <div class="text_cell_render border-box-sizing rendered_html"> <h3 id="Пример-6.-Нахождение-уравнения-параболы-по-2-точкам-и-касательной">Пример 6. Нахождение уравнения параболы по 2 точкам и касательной<a class="anchor-link" href="#Пример-6.-Нахождение-уравнения-параболы-по-2-точкам-и-касательной">¶</a></h3><p>Найти уравнение параболы ($f(x) = ax^2 + bx + x & (27)$), проходящей через точки (1,1) и (-1,1) и касающейся биссектрисы 1й координатной четверти.</p> <p>Как и в предыдущем примере неизвестными для нас являются коэффициенты a, b, c.</p> <p>Подставив в уравнение параболы (27) значения аргумента (x) и функции (f(x)) получим 2 уравнения:</p> \begin{matrix} a\cdot 1^2 + b\cdot 1 + c = 1 &(28) \\ a\cdot (-1)^2 + b\cdot (-1) + c = 1 &(29) \end{matrix}<p>Однако для нахождения 3 неизвестных 2 уравнений мало. Необходимо найти ещё одно из оставшихся условий.</p> <p>Касание биссектрисы 1й координатной четверти означает, что наша парабола имеет касательную $y = x$. Если посмотреть на условие задачи, то мы увидим, что одна из точек (1, 1) лежит на этой прямой. Это означает, что мы знаем точку касания.</p> <p>Уравнение прямой, делящей 1-ю координатную четверть пополам (биссектрисы) имеет вид $y = kx \quad (30)$</p> <p>При этом мы знаем, что угол уравнения касательной (коэффициент k уравнения (30)) равен производной от функции (27) в точке касания.</p> \begin{matrix} f'(x) = 2ax + bx & (31) \end{matrix}<p>Подставив значение аргумента (x = 1) в точке касания и коэффициента (k = 1 в качестве производной f'(x))</p> \begin{matrix} 1 = 2a\cdot1 + b\cdot1 & (32) \end{matrix}<p>Используя уравнения (28), (29) и (32), запишем полную систему уравнений, которую нам необходимо решить:</p> \begin{matrix} a\cdot 1 + b\cdot 1 + c \cdot 1 = 1 &(33) \\ a\cdot 1 + b\cdot (-1) + c \cdot 1 = 1 &(34) \\ a\cdot 2 + b\cdot 1 + c \cdot 0 = 1 &(35) \end{matrix}<p>По привычной уже схеме запишем коэффициенты перед переменными (левую часть системы) в матрицу, а свободные члены (правую часть) в вектор:</p> \begin{pmatrix} 1& 1 & 1 \\ 1 & -1 & 1 \\ 2 & 1 & 0 \end{pmatrix}\begin{pmatrix} 1 \\ 1 \\ 1 \end{pmatrix} </div> </div> </div> <div class="cell border-box-sizing code_cell rendered"> <div class="input"> <div class="prompt input_prompt">In [7]:</div> <div class="inner_cell"> <div class="input_area"> <div class=" highlight hl-ipython3"><pre><span class="kn">import</span> <span class="nn">numpy</span> <span class="c1"># импортируем библиотеку </span> <span class="n">M6</span> <span class="o">=</span> <span class="n">numpy</span><span class="o">.</span><span class="n">array</span><span class="p">([[</span><span class="mf">1.</span><span class="p">,</span> <span class="mf">1.</span><span class="p">,</span> <span class="mf">1.</span><span class="p">],</span> <span class="p">[</span><span class="mf">1.</span><span class="p">,</span> <span class="o">-</span><span class="mf">1.</span><span class="p">,</span> <span class="mi">1</span><span class="p">],</span> <span class="p">[</span><span class="mi">2</span><span class="p">,</span> <span class="mi">1</span><span class="p">,</span> <span class="mi">0</span><span class="p">]])</span> <span class="c1"># Матрица (левая часть системы)</span> <span class="n">v6</span> <span class="o">=</span> <span class="n">numpy</span><span class="o">.</span><span class="n">array</span><span class="p">([</span><span class="mf">1.</span><span class="p">,</span> <span class="mf">1.</span><span class="p">,</span> <span class="mf">1.</span><span class="p">])</span> <span class="c1"># Вектор (правая часть системы)</span> <span class="n">numpy</span><span class="o">.</span><span class="n">linalg</span><span class="o">.</span><span class="n">solve</span><span class="p">(</span><span class="n">M6</span><span class="p">,</span> <span class="n">v6</span><span class="p">)</span> </pre></div> </div> </div> </div> <div class="output_wrapper"> <div class="output"> <div class="output_area"><div class="prompt output_prompt">Out[7]:</div> <div class="output_text output_subarea output_execute_result"> <pre>array([ 0.5, -0. , 0.5])</pre> </div> </div> </div> </div> </div> <div class="cell border-box-sizing text_cell rendered"> <div class="prompt input_prompt"> </div> <div class="inner_cell"> <div class="text_cell_render border-box-sizing rendered_html"> <p><strong>Ответ: уравнение искомой параболы задаётся функцией $f(x) = 0.5x^2 + 0.5$</strong></p> </div> </div> </div> <div class="cell border-box-sizing text_cell rendered"> <div class="prompt input_prompt"> </div> <div class="inner_cell"> <div class="text_cell_render border-box-sizing rendered_html"> <h4 id="Примечание-к-примеру-6">Примечание к примеру 6<a class="anchor-link" href="#Примечание-к-примеру-6">¶</a></h4><p>На иллюстрации ниже изображены графики параболы и биссектрисы, которой она касается. А так же 2 точки, через которых проходит парабола.</p> </div> </div> </div> <div class="cell border-box-sizing code_cell rendered"> <div class="input"> <div class="prompt input_prompt">In [8]:</div> <div class="inner_cell"> <div class="input_area"> <div class=" highlight hl-ipython3"><pre><span class="kn">import</span> <span class="nn">numpy</span> <span class="kn">import</span> <span class="nn">matplotlib</span> <span class="k">as</span> <span class="nn">mpl</span> <span class="kn">import</span> <span class="nn">matplotlib.pyplot</span> <span class="k">as</span> <span class="nn">plt</span> <span class="o">%</span> <span class="n">matplotlib</span> <span class="n">inline</span> <span class="n">mpl</span><span class="o">.</span><span class="n">rc</span><span class="p">(</span><span class="s1">&#39;font&#39;</span><span class="p">,</span> <span class="n">family</span><span class="o">=</span><span class="s1">&#39;Verdana&#39;</span><span class="p">,</span> <span class="n">size</span><span class="o">=</span> <span class="mi">16</span><span class="p">)</span> <span class="n">w</span> <span class="o">=</span> <span class="n">numpy</span><span class="o">.</span><span class="n">linalg</span><span class="o">.</span><span class="n">solve</span><span class="p">(</span><span class="n">M6</span><span class="p">,</span> <span class="n">v6</span><span class="p">)</span> <span class="c1"># запишем найденные коэффициенты в переменную</span> <span class="k">def</span> <span class="nf">f</span><span class="p">(</span><span class="n">x</span><span class="p">):</span> <span class="k">return</span> <span class="n">w</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span><span class="o">*</span><span class="n">x</span><span class="o">**</span><span class="mi">2</span> <span class="o">+</span> <span class="n">w</span><span class="p">[</span><span class="mi">1</span><span class="p">]</span><span class="o">*</span><span class="n">x</span> <span class="o">+</span> <span class="n">w</span><span class="p">[</span><span class="mi">2</span><span class="p">]</span> <span class="c1"># уравнение параболы</span> <span class="n">fig</span><span class="p">,</span> <span class="n">ax</span> <span class="o">=</span> <span class="n">plt</span><span class="o">.</span><span class="n">subplots</span><span class="p">(</span><span class="n">figsize</span><span class="o">=</span><span class="p">(</span><span class="mi">10</span><span class="p">,</span><span class="mi">5</span><span class="p">))</span> <span class="n">x</span> <span class="o">=</span> <span class="n">numpy</span><span class="o">.</span><span class="n">linspace</span><span class="p">(</span><span class="o">-</span><span class="mi">2</span><span class="p">,</span><span class="mi">2</span><span class="p">,</span><span class="mi">200</span><span class="p">)</span> <span class="n">ax</span><span class="o">.</span><span class="n">axis</span><span class="p">([</span><span class="o">-</span><span class="mf">2.</span><span class="p">,</span> <span class="mf">2.</span><span class="p">,</span> <span class="mf">0.</span><span class="p">,</span> <span class="mf">2.</span><span class="p">])</span> <span class="n">ax</span><span class="o">.</span><span class="n">grid</span><span class="p">()</span> <span class="n">ax</span><span class="o">.</span><span class="n">plot</span><span class="p">(</span><span class="n">x</span><span class="p">,</span> <span class="n">f</span><span class="p">(</span><span class="n">x</span><span class="p">),</span> <span class="n">label</span> <span class="o">=</span> <span class="s1">&#39;Парабола&#39;</span><span class="p">)</span> <span class="n">ax</span><span class="o">.</span><span class="n">plot</span><span class="p">(</span><span class="n">x</span><span class="p">,</span> <span class="n">x</span><span class="p">,</span> <span class="n">label</span> <span class="o">=</span> <span class="s1">&#39;Биссектриса 1й</span><span class="se">\n</span><span class="s1">координатной четверти&#39;</span><span class="p">)</span> <span class="n">ax</span><span class="o">.</span><span class="n">set_xlabel</span><span class="p">(</span><span class="s1">u&#39;x&#39;</span><span class="p">,{</span><span class="s1">&#39;fontname&#39;</span><span class="p">:</span><span class="s1">&#39;Arial&#39;</span><span class="p">,</span> <span class="s1">&#39;size&#39;</span><span class="p">:</span> <span class="mi">24</span><span class="p">})</span> <span class="n">ax</span><span class="o">.</span><span class="n">set_ylabel</span><span class="p">(</span><span class="s1">u&#39;f(x)&#39;</span><span class="p">,{</span><span class="s1">&#39;fontname&#39;</span><span class="p">:</span><span class="s1">&#39;Arial&#39;</span><span class="p">,</span> <span class="s1">&#39;size&#39;</span><span class="p">:</span> <span class="mi">24</span><span class="p">})</span> <span class="n">plt</span><span class="o">.</span><span class="n">plot</span><span class="p">([</span><span class="o">-</span><span class="mi">1</span><span class="p">,</span> <span class="mi">1</span><span class="p">],</span> <span class="p">[</span><span class="mi">1</span><span class="p">,</span> <span class="mi">1</span><span class="p">],</span> <span class="s1">&#39;ro&#39;</span><span class="p">,</span> <span class="n">label</span> <span class="o">=</span> <span class="s1">&#39;Точки для</span><span class="se">\n</span><span class="s1">построения графика&#39;</span><span class="p">)</span> <span class="n">ax</span><span class="o">.</span><span class="n">annotate</span><span class="p">(</span><span class="s1">&#39;Точка</span><span class="se">\n</span><span class="s1">касания&#39;</span><span class="p">,</span> <span class="n">xy</span><span class="o">=</span><span class="p">(</span><span class="mf">1.</span><span class="p">,</span> <span class="mf">1.</span><span class="p">),</span> <span class="n">xytext</span><span class="o">=</span><span class="p">(</span><span class="mf">1.5</span><span class="p">,</span> <span class="mf">0.5</span><span class="p">),</span> <span class="n">arrowprops</span><span class="o">=</span><span class="nb">dict</span><span class="p">(</span><span class="n">facecolor</span><span class="o">=</span><span class="s1">&#39;black&#39;</span><span class="p">,</span> <span class="n">shrink</span><span class="o">=</span><span class="mf">0.05</span><span class="p">),</span> <span class="p">)</span> <span class="n">ax</span><span class="o">.</span><span class="n">legend</span><span class="p">(</span><span class="n">bbox_to_anchor</span><span class="o">=</span><span class="p">(</span><span class="mf">1.6</span><span class="p">,</span> <span class="mf">1.</span><span class="p">))</span> <span class="n">plt</span><span class="o">.</span><span class="n">show</span><span class="p">()</span> <img src="data:image/png;base64,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 A2/v9DlnWhW6Mow5dURGRuLp6Unp0qVp27atbpvLly/zn//8h379+jFjxox0jtA2v/zyC+3atePG jRtUrFiR4sWLU7RoUdzc3ChQoACfffaZvUMUIs1Ze1/Mbo9gROqbNAkqVoTu3aF2bXtHI4QQQjiW L76A+vUzfqErUl+FChWYPHmy7r5du3bx448/pnNEtrt79y6tW7emWbNmzJw5k3z58tk7JCEcigxj ziTy5YOvvgI/P4iNTZ0+Zf6YPsmLPsmLJcmJPsmLPsmLvtTIy+nTxgUdp05NeTy2kEI3c9uwYQON GzemVKlSuLm5kTNnTl5//XUGDRrEnZfmlMUPlW7dujUHDhygVatWeHh4kCtXLho3bszx48ct+h84 cCC1atWiSJEiODs74+7uzptvvklISIhF26VLl/L48WO6du3Kxx9/TL58+XBzc6Nhw4asX79eN/6o qCh69+7Na6+9Ro4cOShRogT+/v7cvHlTt72Xl5fV4d2+vr5mbRctWkSjRo0oUaIEOXPmxM3NjcqV KzNu3DgeP35sa4qFSDVyZTcT6doVgoNhwQLo29fe0QghhBD2p5Txb+LYsemzKJUUupnfgQMHuHDh ArVr1+bVV18lLi6OY8eOMX36dMLCwjh06BDZsmUzO2bnzp1s3LiRevXq0blzZy5cuMDWrVvx9vbm 6NGjeHp6mtquXbuWggUL0rRpUwoUKMCdO3fYvn073bt35+bNmwwePNjUdvXq1Tx69IgWLVrg4+ND 165d+fPPP9m6dSv/+te/mD9/Pj179jS1j4yMpH79+ly7dg0vLy9at27NyZMnmTVrFps3b2bfvn28 8sorZrFrmkaxYsXo0KGDadu1a9f4/vvvLXITFhbG1atXqV+/PoULF+bJkyfs37+fCRMmcOTIEX76 6acU51+IJFFKZfmHMQ2Zw6+/KlWwoFLXrtk7EiGEEML+Fi1SqlYtpWJi0v5cv137TRUOKqyW/7o8 Tc/z/HOLfP5JoT///FNpmqZatWpltU1YWJjSNE35+/ubtj169Ei3bbdu3ZTBYFCbN2+2OMerr76q tm7datZ+2rRpStM01b17d7Ptev3fvn1beXh4qEKFCpm2xcXFKTc3N/X666+rU6dOmbU/ePCgcnFx Ubly5VK3b982bW/evLkyGAxq2bJlZu3nzp2rNE1TnTp1sji3l5eX8vb2Ntt2+PBhm2OPi4tTPj4+ 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 u3btKFOmDD/++CMzZszgl19+YdSoUQwbNiz5+IULF/Lnn38yYMAAihUrBkBERESqa77++uu8+uqr XHfddXTv3p3vv/+eJUuWsHHjRn744QdKly6dfGzXrl1ZuHAhVatWpUuXLhw7dozPPvuM6667jjff fJM77rgj+di4uDhat27NV199RZMmTejZsydHjx7lo48+ok2bNrz77ru0b98+23E2xmBchtRNnDiR devWpXvtn3/+oVmzZvz++++0bduWWrVqJR8zfvz4LL93kSJFGDx4MGlHMtStWzdV/Ro2bEjp0qW5 4YYbOH36NMuWLWPw4MGcPn2aoUOHJp+3du1afvvtN6688krOP/98EhIS+O6773jppZeIjo5m/fr1 BAUFJR8/aNAgXn31VapVq8Zdd93F/v372blzJ+B8gXLDDTdw5MgR/u///o+bbrqJFStW0Lhx40zv Kz4+np49e5KQkOB6z2ljOnPmTIYNG8bll1/ObbfdRqVKlZJfe//99ylXrhxRUVFERkZy5MgRli9f Ts+ePTl48CAPPfSQd8H2R9baQv9wwiCFyfbt1l5wgbVvveXrmoiIZN3p09Zee/uPNvTR8+yb3y/w dXUknyX+3aK/f3IgOjraGmPs/fff79VrJ06csBERETYyMtLGxMQkl585c8Z269bNejweO3369OTy mJgYGxISYqtXr27379+f6vo///yzHTNmTLr3bdGihfV4PPbQoUMZ1uniiy+269evT/XaAw88YD0e jx07dmxy2cKFC60xxnbo0MH++++/yeXbtm2zF154oS1VqlSq9xk5cqQNCgqyb7/9dqpr79u3z1ao UMFWq1YtVbkxxl566aXp6pnRaz169LAej8du2LAhuezXX3+1xYsXt0WLFrUej8euXLky+bXZs2dn +N8ns/d2U7lyZRsWFpbpMUmxHz16dKp47dixw5YpU8aWKlXKnjhxIrk8NjbW9TpJ97ls2bLksvXr 11tjjL322mtTnZf0nocPH04uW7x4cfKxKbnd81NPPWWDg4NtcHCwrVKlSqrXnnjiCevxeOz//d// WWutPX36tD3//PNttWrVUt1fZvdz+PBhGx4ebitUqOB6r/4mo8/FLA9jNsZUNsb0NMbMMcZEG2N+ Msb8aYzZZoz5KrG8rzGmcm4m5ZL/AnlvwypVYNkyGDwYPvooa+cGclxyQnFJTzFxp7i48zYu1sLt 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 jzJ69Ohs1Tclay1Tp07l9ttvp0OHDuc8fsmSJYwcOZL27dszduzYHL+/N9LG99NPP+Wjjz7iqquu 4tJLLwWgRo0arl98bNmyhSlTpqTr3e3QoQPWWsaPH3/OYdjTp0/nzz//pHv37ule27x5MytXrmT6 9OleD4kGZ/GppUuXcvXVV/Pee++laidJ9xMfH588zzzJ3Llz0+2LXCC5LdFc2B4U4qX3Jb0xY6y9 9FJrDx70dU1EpLCb9u6P1vPwefbpD7S9kJyFth7KsaxuPWSttUuWLLFFihSxxYsXt7fccovt06eP rV27tvV4PLZt27Y2ISEh1fEjRoywHo/HhoeH227dutlBgwbZ6667zgYFBdlbb7013ft6s/WQx+Ox DRo0sH369LH33XefrVKlivV4PLZ///7pzuncubP1eDy2SpUqtlevXrZTp062VKlSNjg42C5YkPoz 5fjx47Zx48bW4/HY8uXL206dOtlBgwbZtm3b2hIlSliPx5Pq+OxsPWSMsZGRkfbAgQOpXhs0aFC6 rYe+++47W6JECVu3bl17/Phxr9/bjbdbDxljbKlSpWynTp3sAw88YDt06GCDg4NtZGSk3bx5c/Kx p06dsnXr1rUej8e2atXK3n///bZDhw42NDTUhoeHW4/HYydMmJB8fHx8vG3SpIn1eDy2YcOG9v77 77c33nijDQkJsR6Px15xxRV28ODBtl27dtbj8dhq1arZI0eOpLtnj8dju3Xrlq7uJUuWdN16yBiT vPWQtdYeO3bMNmrUyBpj7PDhw5PLV69ebT0ejw0LC7Pdu3e3AwYMsPXr17chISE2LCwswzbpbzL6 XMzS1kPGmPSzmjM//tyDyTM/v60xJsEY43U9jTEXGGPeNsYcMsacMMasNsZonV3x2pgxzvzdNm0g ce0GEZF898bHMQz4OorHr5rIqJvVoyuS24wxrnMsM3qtffv2rFq1iuuuu45Vq1Yxb948goKCeO65 51iyZEm645999lkWL15MgwYN+PDDD5k9ezZ79uzhvvvu45lnnsnwfTPTunVratasyUcffcScOXMo WbIkU6ZMcV2Rd+HChbz00kuULl2at956i+XLl3P11Vfz+eefc9ddqT9TSpQowapVq5g4cSJVq1bl s88+Y8aMGcTExNCpUyeWLVuWpbq6vWaM4cUXX6RcuXKZ3uP+/ftp3749oaGhLFmyxHWe67nilJ3j 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 AElFTkSuQmCC " > </pre> </div> </div> </div> </div> <div class="output_wrapper"> <div class="output"> <div class="output_area"><div class="prompt"></div> <div class="output_png output_subarea "> </div> </div> </div> </div> </div> </div> </div>

Возврат к списку

Яндекс.Метрика