<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:atom="http://www.w3.org/2005/Atom">
	<channel>
		<title>Блог о Scilab</title>
		<link>http://inclab.ru</link>
		<description>Блог о Scilab</description>
		<language>ru-ru</language>
		<atom:link href="http://inclab.ru/rss" rel="self" type="application/rss+xml" />
		<item>
			<title><![CDATA[Подбор логина и пароля перебором]]></title>
			<link>http://inclab.ru/articles/podbor-logina-i-parolya-pereborom</link>
			<guid>http://inclab.ru/articles/podbor-logina-i-parolya-pereborom</guid>
			<description><![CDATA[<img src="http://inclab.ru" />На примере одной формы авторизации рассмотрим возможность подбора по словарям логина и пароля<h2>Первые шаги</h2>
<p>Предположим, что у нас имеются списки, с наибольшей вероятностью используемых на ресурсе логинов и паролей.</p>
<p>Попробуем авторизоваться на ресурсе с помощью метода грубой силы и использования всего-навсего функционала инструментов разработчика в браузере.</p>

<p>Заходим на страницу авторизации и попробуем ввести логин:</p>
<div class="image-container" itemscope itemtype="http://schema.org/ImageObject">
    <picture>
        <source type="image/webp" srcset="/images/articles/podbor-logina-i-parolya-pereborom/1wlpx5g/forma-avtorizacii.webp"/>
        <img class="image-in-container" src="http://inclab.ru/images/articles/podbor-logina-i-parolya-pereborom/1wlpx5g/forma-avtorizacii.jpg" itemprop="contentUrl" alt="форма авторизации." title="форма авторизации."/>
    </picture>
    <span class="image-description text-italic" itemprop="description">форма авторизации.</span>
</div>
  
<p>Получим ошибку про неправильный <b>логин</b>.</p>
<div class="image-container" itemscope itemtype="http://schema.org/ImageObject">
    <picture>
        <source type="image/webp" srcset="/images/articles/podbor-logina-i-parolya-pereborom/1xzfes6/poluchili-oshibku.webp"/>
        <img class="image-in-container" src="http://inclab.ru/images/articles/podbor-logina-i-parolya-pereborom/1xzfes6/poluchili-oshibku.jpg" itemprop="contentUrl" alt="получили ошибку." title="получили ошибку."/>
    </picture>
    <span class="image-description text-italic" itemprop="description">получили ошибку.</span>
</div>

  
<p>И это радует.</p>
<p>Потому что <b>сообщения</b> о неверном логине и пароле явно <b>будут отличаться</b>, а значит, можно сначала подобрать логин, а потом перейти к паролю.</p>
 
<h2>F12 спешит на помощь</h2>  
<p>Автоматизируем подбор логина, используя только средства разработчика в Firefox.</p>
<p>На текущей странице нужно: </p>
<ol>
<li>нажать f12, </li>
<li>открыть вкладку «Сеть», </li>
<li>далее ввести какие-либо данные в поля логина и пароля,</li>
<li>нажать «login»,</li>
<li>и во вкладке «Сеть» отобразятся все запросы, которые были отправлены со страницы.</li>
</ol>
  

<div class="image-container" itemscope itemtype="http://schema.org/ImageObject">
    <picture>
        <source type="image/webp" srcset="/images/articles/podbor-logina-i-parolya-pereborom/1cds8mu/vkladka-set-i-zaprosy.webp"/>
        <img class="image-in-container" src="http://inclab.ru/images/articles/podbor-logina-i-parolya-pereborom/1cds8mu/vkladka-set-i-zaprosy.jpg" itemprop="contentUrl" alt="вкладка сеть и запросы." title="вкладка сеть и запросы."/>
    </picture>
    <span class="image-description text-italic" itemprop="description">вкладка сеть и запросы.</span>
</div>
<p>Нам нужно найти POST запрос со статусом 200 и ключевым словом login. </p>
<ol>
<li>Клик правой кнопкой мыши по строке с данным запросом вызовет контекстное меню.</li> 
<li>Выбираем "Использовать как fetch в консоли" (запрос будет скопирован в буфер и появится во вкладке ниже)</li>
</ol>

<div class="image-container" itemscope itemtype="http://schema.org/ImageObject">
    <picture>
        <source type="image/webp" srcset="/images/articles/podbor-logina-i-parolya-pereborom/16v4y9h/skopirovali-zapros-v-konsol.webp"/>
        <img class="image-in-container" src="http://inclab.ru/images/articles/podbor-logina-i-parolya-pereborom/16v4y9h/skopirovali-zapros-v-konsol.jpg" itemprop="contentUrl" alt="скопировали запрос в консоль." title="скопировали запрос в консоль."/>
    </picture>
    <span class="image-description text-italic" itemprop="description">скопировали запрос в консоль.</span>
</div>    
<p>Это  и есть наш <b>POST запрос</b>, в котором указаны <b>username=1 password=2</b>.<br/> Модифицируем этот код так, чтобы вместо параметра username подставлялось значение из списка логинов.</p>
  
<h2>Подготовка к bruteforce</h2>  
<h3>1. Подготовим массив с логинами:</h3>
<div class="image-container" itemscope itemtype="http://schema.org/ImageObject">
    <picture>
        <source type="image/webp" srcset="/images/articles/podbor-logina-i-parolya-pereborom/vz3w7v/gotovim-massivy-s-dannymi-v-js.webp"/>
        <img class="image-in-container" src="http://inclab.ru/images/articles/podbor-logina-i-parolya-pereborom/vz3w7v/gotovim-massivy-s-dannymi-v-js.jpg" itemprop="contentUrl" alt="готовим массивы с данными в js." title="готовим массивы с данными в js."/>
    </picture>
    <span class="image-description text-italic" itemprop="description">готовим массивы с данными в js.</span>
</div> 
  
<p>Добавим цикл перебора логина. Логин будем подставлять прямо в запросе:</p>
<div class="image-container" itemscope itemtype="http://schema.org/ImageObject">
    <picture>
        <source type="image/webp" srcset="/images/articles/podbor-logina-i-parolya-pereborom/1f56qkt/modificiruem-zapros.webp"/>
        <img class="image-in-container" src="http://inclab.ru/images/articles/podbor-logina-i-parolya-pereborom/1f56qkt/modificiruem-zapros.jpg" itemprop="contentUrl" alt="модифицируем запрос." title="модифицируем запрос."/>
    </picture>
    <span class="image-description text-italic" itemprop="description">модифицируем запрос.</span>
</div> 
<p>Скопируем этот код и вернёмся в Firefox..</p>
  
<h3>2. Использование консоли и вкладки "Сеть" в FF</h3>
<p>Этот модифицированный скрипт и вставим в консоль на странице с формой и жмакнем enter, чтобы запустить цикл: </p>
 
<div class="image-container" itemscope itemtype="http://schema.org/ImageObject">
    <picture>
        <source type="image/webp" srcset="/images/articles/podbor-logina-i-parolya-pereborom/1rgghni/zapuskaem-cikl-otpravki-zaprosov.webp"/>
        <img class="image-in-container" src="http://inclab.ru/images/articles/podbor-logina-i-parolya-pereborom/1rgghni/zapuskaem-cikl-otpravki-zaprosov.jpg" itemprop="contentUrl" alt="запускаем цикл отправки запросов." title="запускаем цикл отправки запросов."/>
    </picture>
    <span class="image-description text-italic" itemprop="description">запускаем цикл отправки запросов.</span>
</div>  
 
<p>Далее Перейдём на вкладку «Сеть» - здесь куча POST запросов со статусом 200  это и есть перебор логинов.</p> 
    <div class="image-container" itemscope itemtype="http://schema.org/ImageObject">
    <picture>
        <source type="image/webp" srcset="/images/articles/podbor-logina-i-parolya-pereborom/19oju2i/vse-otpravlennye-so-stranicy-zaprosy.webp"/>
        <img class="image-in-container" src="http://inclab.ru/images/articles/podbor-logina-i-parolya-pereborom/19oju2i/vse-otpravlennye-so-stranicy-zaprosy.jpg" itemprop="contentUrl" alt=" все отправленные со страницы запросы." title=" все отправленные со страницы запросы."/>
    </picture>
    <span class="image-description text-italic" itemprop="description"> все отправленные со страницы запросы.</span>
</div>  
 
<p>Среди них нужно вручную найти ответ, где логин пользователя оказался верным. </p>
<p>Об этом будет свидетельствовать <b>изменение ошибки на «Incorrect password»</b>.</p>
<p>В текущем случае - это пользователь af, так как теперь на странице выводится ошибка, что пароль не верный.</p> 
   
<h3>3. Теперь подберём пароль. </h3>
<p>В коде с циклом пропишем логин пользователя, раз мы его уже нашли, а бежать мы теперь будем по массиву паролей (который составлен аналогично usernames):</p>   
    <div class="image-container" itemscope itemtype="http://schema.org/ImageObject">
    <picture>
        <source type="image/webp" srcset="/images/articles/podbor-logina-i-parolya-pereborom/1nlxr96/podstavim-naydennyy-login-v-zapros-i-pereberem-paroli.webp"/>
        <img class="image-in-container" src="http://inclab.ru/images/articles/podbor-logina-i-parolya-pereborom/1nlxr96/podstavim-naydennyy-login-v-zapros-i-pereberem-paroli.jpg" itemprop="contentUrl" alt=" подставим найденный логин в запрос и переберем пароли." title=" подставим найденный логин в запрос и переберем пароли."/>
    </picture>
    <span class="image-description text-italic" itemprop="description"> подставим найденный логин в запрос и переберем пароли.</span>
</div>  
 
   
   
<h3>Отправка запросов</h3>   
<p>Этот модифицированный скрипт опять вставим в консоль на странице с формой: </p> 
 
  
<p>В ответах на вкладке «Сеть» теперь будем искать POST запрос со статусом 302: под ним и будет нужный пароль. В текущем случае пароль  mustang.</p>  
    <div class="image-container" itemscope itemtype="http://schema.org/ImageObject">
    <picture>
        <source type="image/webp" srcset="/images/articles/podbor-logina-i-parolya-pereborom/s0ln5s/ischem-zapros-s-redirektom-na-profil.webp"/>
        <img class="image-in-container" src="http://inclab.ru/images/articles/podbor-logina-i-parolya-pereborom/s0ln5s/ischem-zapros-s-redirektom-na-profil.jpg" itemprop="contentUrl" alt=" ищем запрос с редиректом на профиль." title=" ищем запрос с редиректом на профиль."/>
    </picture>
    <span class="image-description text-italic" itemprop="description"> ищем запрос с редиректом на профиль.</span>
</div>  
 
     


<p>Итак, логин и пароль подобраны и для этого на не понадобилось никакое специальное ПО.</p>   
    <div class="image-container" itemscope itemtype="http://schema.org/ImageObject">
    <picture>
        <source type="image/webp" srcset="/images/articles/podbor-logina-i-parolya-pereborom/dc6lq0/kartinka-s-kotikami.webp"/>
        <img class="image-in-container" src="http://inclab.ru/images/articles/podbor-logina-i-parolya-pereborom/dc6lq0/kartinka-s-kotikami.jpg" itemprop="contentUrl" alt=" картинка с котиками" title=" картинка с котиками"/>
    </picture>
    <span class="image-description text-italic" itemprop="description"> картинка с котиками</span>
</div>  
<p>Оригинальный адрес статьи: <a href='http://inclab.ru/articles/podbor-logina-i-parolya-pereborom'>http://inclab.ru/articles/podbor-logina-i-parolya-pereborom</a><p>]]></description>
			<pubDate>Sat, 13 Apr 2024 23:48:27 +0400</pubDate>
		</item>
		<item>
			<title><![CDATA[Min элемент в ряду матрицы scilab]]></title>
			<link>http://inclab.ru/articles/min-element-v-matrice</link>
			<guid>http://inclab.ru/articles/min-element-v-matrice</guid>
			<description><![CDATA[<img src="http://inclab.ru" />Поиск минимального элемента в строке матрицы<p>Рассмотрим задачку из линейной алгебры: как найти наименьший элемент в строке матрицы в scilab, без использования встроенной функции.</p>
<p>А встроенные полезные функции для работы с матрицами описаны в <a href="https://inclab.ru/beginner/specialnye-matrichnye-funkcii">этом материале</a>, а линейной алгебры - в <a href="https://inclab.ru/beginner/reshenie-slu-oslu-v-scilab">этом</a>.</p>
<h2>Постановка задачи</h2>
<p>Сформировать матрицу \( M(7,5) \) по правилу \( M(i, j) = cos(i^2 - \frac{j}{2}) \).
Определить наименьший элемент в каждой строке матрицы и записать его в 
соответствующий элемент вектора \( V \). Вывести на экран сформированную 
матрицу и полученный вектор \(V \), сравнить результат со встроенной функцией.</p>

<h2>Приступим к работе</h2>

<p>Создадим заглушку функции, которая будет генерировать элементы матрицы по заданному правилу:</p>

<div class="image-container">
<p><b>На этом месте располагается листинг, который не может быть правильно отображен в rss-ленте. Перейдите к оригинальной статье: <a href='http://inclab.ru/articles/min-element-v-matrice'>http://inclab.ru/articles/min-element-v-matrice</a></b></p>
<span class="image-description text-italic">Заготовка функции для формирования матрицы</span>
</div>


<p>Создадим заглушку функции, которая будет искать минимальный элемент в каждой строке матрицы и формировать вектор:</p>

<div class="image-container">
<p><b>На этом месте располагается листинг, который не может быть правильно отображен в rss-ленте. Перейдите к оригинальной статье: <a href='http://inclab.ru/articles/min-element-v-matrice'>http://inclab.ru/articles/min-element-v-matrice</a></b></p>
<span class="image-description text-italic">Заготовка функции для поиска min элемента</span>
</div>

<h2>Генерируем матрицу</h2>

<p>Создавать матрицу по заданному правилу будем построчно во вложенном цикле: </p>

<div class="image-container">
<p><b>На этом месте располагается листинг, который не может быть правильно отображен в rss-ленте. Перейдите к оригинальной статье: <a href='http://inclab.ru/articles/min-element-v-matrice'>http://inclab.ru/articles/min-element-v-matrice</a></b></p>
<span class="image-description text-italic">Формируем матрицу</span>
</div>

<h2>Ищем заданный элемент в строке</h2>

<p>Разобьем поиск заданного элемента в строке матрицы на два процесса: раздел матрицы по строкам в цикле \(for\) и сам поиск элемента  в функции \(findMinInRow\). (Так будет удобно модифицировать функцию поиска элемента с наименьшего на наибольший, например). <br>Результат запишем в вектор \(mVector\).</p>

<p>Пройдёмся по строкам матрицы: </p>
<div class="image-container">
<p><b>На этом месте располагается листинг, который не может быть правильно отображен в rss-ленте. Перейдите к оригинальной статье: <a href='http://inclab.ru/articles/min-element-v-matrice'>http://inclab.ru/articles/min-element-v-matrice</a></b></p>
<span class="image-description text-italic">Начали обход матрицы</span>
</div>

<p>Искать наименьший элемент в строке матрицы будем перебором. </p>
<p>В переданной строке \(curRow\), примем, что первый элемент \(curRow(1)\) - есть искомый \(curMinElement\).<br> Далее, пробегая строку, т.е. увеличивая номер столбца, будем сравнивать текущий элемент \(curRow(j)\) с "минимальным" \(curMinElement\). Если найденный будет меньше минимального  - обновим минимальный. </p>

<p>Код пользовательской функции поиска мин элемента будет слудующий: </p>
<div class="image-container">
<p><b>На этом месте располагается листинг, который не может быть правильно отображен в rss-ленте. Перейдите к оригинальной статье: <a href='http://inclab.ru/articles/min-element-v-matrice'>http://inclab.ru/articles/min-element-v-matrice</a></b></p>
<span class="image-description text-italic">Перебираем элементы в строке матрицы</span>
</div>

<p>Добавим вектор, полученный с помощью встроенной scilab функции поиска минимального эдемента в строке матрицы:</p>  
<div class="image-container">
<p><b>На этом месте располагается листинг, который не может быть правильно отображен в rss-ленте. Перейдите к оригинальной статье: <a href='http://inclab.ru/articles/min-element-v-matrice'>http://inclab.ru/articles/min-element-v-matrice</a></b></p>
<span class="image-description text-italic">Встроенная scilab функция поиска min элемента в строке матрицы</span>
</div>    
  
<h2>Выводим результаты</h2>

<p>Вывалим в консоль всё, что нагенерировали:</p>  
<div class="image-container">
<p><b>На этом месте располагается листинг, который не может быть правильно отображен в rss-ленте. Перейдите к оригинальной статье: <a href='http://inclab.ru/articles/min-element-v-matrice'>http://inclab.ru/articles/min-element-v-matrice</a></b></p>
<span class="image-description text-italic">Встроенная scilab функция поиска min элемента в строке матрицы</span>
</div>   
  
<p>Окончательно, наша программа на scilab будет выглядеть так:</p>   
<div class="image-container">
<p><b>На этом месте располагается листинг, который не может быть правильно отображен в rss-ленте. Перейдите к оригинальной статье: <a href='http://inclab.ru/articles/min-element-v-matrice'>http://inclab.ru/articles/min-element-v-matrice</a></b></p>
<span class="image-description text-italic">Работа с матрицами с scilab</span>
</div>   
  
  <p>Оригинальный адрес статьи: <a href='http://inclab.ru/articles/min-element-v-matrice'>http://inclab.ru/articles/min-element-v-matrice</a><p>]]></description>
			<pubDate>Mon, 14 Aug 2023 16:13:10 +0400</pubDate>
		</item>
		<item>
			<title><![CDATA[Сумма ряда в scilab]]></title>
			<link>http://inclab.ru/articles/summa-ryada-v-scilab</link>
			<guid>http://inclab.ru/articles/summa-ryada-v-scilab</guid>
			<description><![CDATA[<img src="http://inclab.ru" />Подсчёт конечной суммы бесконечного ряда с заданной точностью<p>Рассмотрим простую задачку из матана: как посчитать конечную сумму ряда приближенно в scilab, задав предварительно точность для сравнения с аналитическим значением.</p>
<h2>Постановка задачи</h2>
<p>Вычислить приближенное значение бесконечной суммы   \( \frac{1}{1\cdot 3}  + \frac{1}{2\cdot 4} + \frac{1}{3\cdot 5}...\) с точностью \( \varepsilon = 0,0001  \). Сравнить полученный результат c точным значением, равным \( 0.75  \)</p>

<h2>Вводим входные параметры</h2>
<p>Создадим заглушку функции, которая принимала бы от пользователя на вход точность и значение, к которому будем приближаться:</p>

<div class="image-container">
<p><b>На этом месте располагается листинг, который не может быть правильно отображен в rss-ленте. Перейдите к оригинальной статье: <a href='http://inclab.ru/articles/summa-ryada-v-scilab'>http://inclab.ru/articles/summa-ryada-v-scilab</a></b></p>
<span class="image-description text-italic">Заготовка функции</span>
</div>

<h2>Задание необходимых параметров в функции</h2>
<p>Для подсчета суммы в пользовательской функции нам потребуется:</p> 
  <ul>
  <li>накопитель \(curSum \):</li> 
  <li>текущая ошибка \(curErr \):</li>
  <li>счетчик итераций \(n \)</li>
  <li>и максимальное число суммирований чтобы не упасть в бесконечный цикл \(maxIteration \):</li>
</ul>

<p>При этом, \(myRange \) функция примет вид:</p>

<div class="image-container">
<p><b>На этом месте располагается листинг, который не может быть правильно отображен в rss-ленте. Перейдите к оригинальной статье: <a href='http://inclab.ru/articles/summa-ryada-v-scilab'>http://inclab.ru/articles/summa-ryada-v-scilab</a></b></p>
<span class="image-description text-italic">Подготовка к циклу подсчета ряда</span>
</div>

<h2>Подсчет частичной суммы в цикле</h2>
<p>Создадим цикл с ограничением на допустимое отклонение от эталона и максимальное число итераций </p>
<div class="image-container">
<p><b>На этом месте располагается листинг, который не может быть правильно отображен в rss-ленте. Перейдите к оригинальной статье: <a href='http://inclab.ru/articles/summa-ryada-v-scilab'>http://inclab.ru/articles/summa-ryada-v-scilab</a></b></p>
<span class="image-description text-italic">Условия продолжения суммирования</span>
</div>

<p>На каждом шагу цикла будем:<br/> 
  -- прибавлять одно слагаемое ряда</p>
<div class="image-container">
<p><b>На этом месте располагается листинг, который не может быть правильно отображен в rss-ленте. Перейдите к оригинальной статье: <a href='http://inclab.ru/articles/summa-ryada-v-scilab'>http://inclab.ru/articles/summa-ryada-v-scilab</a></b></p>
<span class="image-description text-italic">Накапливаем сумму</span>
</div>  
  
<p>-- считать отклонение от заданного значения</p>
<div class="image-container">
<p><b>На этом месте располагается листинг, который не может быть правильно отображен в rss-ленте. Перейдите к оригинальной статье: <a href='http://inclab.ru/articles/summa-ryada-v-scilab'>http://inclab.ru/articles/summa-ryada-v-scilab</a></b></p>
<span class="image-description text-italic">Считаем ошибку</span>
</div>    
  
  <p>-- увеличивать счетчик</p>
<div class="image-container">
<p><b>На этом месте располагается листинг, который не может быть правильно отображен в rss-ленте. Перейдите к оригинальной статье: <a href='http://inclab.ru/articles/summa-ryada-v-scilab'>http://inclab.ru/articles/summa-ryada-v-scilab</a></b></p>
<span class="image-description text-italic">Итерация++</span>
</div>  
  
<p>В итоге, цикл примет вид:</p>

<div class="image-container">
<p><b>На этом месте располагается листинг, который не может быть правильно отображен в rss-ленте. Перейдите к оригинальной статье: <a href='http://inclab.ru/articles/summa-ryada-v-scilab'>http://inclab.ru/articles/summa-ryada-v-scilab</a></b></p>
<span class="image-description text-italic">Циклу подсчета ряда</span>
</div>  
  
<p>Добавим в пользовательскую цункцию ещё и вывод промежуточных результатов, чтобы отслеживать происходящее. Окончательно, программа, осущетсвляющая подсчет ряда на scilab будет выглядеть:</p>  
  
<div class="image-container">
<p><b>На этом месте располагается листинг, который не может быть правильно отображен в rss-ленте. Перейдите к оригинальной статье: <a href='http://inclab.ru/articles/summa-ryada-v-scilab'>http://inclab.ru/articles/summa-ryada-v-scilab</a></b></p>
<span class="image-description text-italic">Вычисляем приближённое значение ряда</span>
</div>   
  
  
  
  
  
  
  
  
  
  
  
  
  
  <p>Оригинальный адрес статьи: <a href='http://inclab.ru/articles/summa-ryada-v-scilab'>http://inclab.ru/articles/summa-ryada-v-scilab</a><p>]]></description>
			<pubDate>Mon, 14 Aug 2023 16:21:44 +0400</pubDate>
		</item>
		<item>
			<title><![CDATA[Пишем нейросеть на Scilab]]></title>
			<link>http://inclab.ru/articles/pishem-neyroset-na-scilab</link>
			<guid>http://inclab.ru/articles/pishem-neyroset-na-scilab</guid>
			<description><![CDATA[<img src="http://inclab.ru" />Реализация на Scilab процесса настройки нейросети<h3>Реализация на Scilab процесса обучения нейронной сети</h3>
<p>Соберём уже знакомые функции, которые нам понадобятся:</p>
<div class="image-container">
<p><b>На этом месте располагается листинг, который не может быть правильно отображен в rss-ленте. Перейдите к оригинальной статье: <a href='http://inclab.ru/articles/pishem-neyroset-na-scilab'>http://inclab.ru/articles/pishem-neyroset-na-scilab</a></b></p>
</div>	

<p>Зададим число узлов (нейронов) и слоёв в нашей сети:</p>
<div class="image-container">
<p><b>На этом месте располагается листинг, который не может быть правильно отображен в rss-ленте. Перейдите к оригинальной статье: <a href='http://inclab.ru/articles/pishem-neyroset-na-scilab'>http://inclab.ru/articles/pishem-neyroset-na-scilab</a></b></p>
</div>

<p>И сгенерируем нейросеть со случайными матрицами весовых коэффициентов:</p>
<div class="image-container">
<p><b>На этом месте располагается листинг, который не может быть правильно отображен в rss-ленте. Перейдите к оригинальной статье: <a href='http://inclab.ru/articles/pishem-neyroset-na-scilab'>http://inclab.ru/articles/pishem-neyroset-na-scilab</a></b></p>
</div>
 <p> здесь    <br/> 
\(net - \) это матрица нейросети размером \( 5\times 4 \), первый столбец которой - случайный входной вектор, например: </p>

<p class="text-center"> 
\( 
  net = \begin{pmatrix}
   0.21  & 0. &  0. &  0. \\
   0.76  & 0. &  0. &  0.\\
   0.    & 0. &  0. &  0.\\
   0.33  & 0. &  0. &  0.\\
   0.67 &  0. &  0. &  0.
  \end{pmatrix}   
  \)  
 </p>  


<p>\(matr - \) гипер-структура list, элементами которой являются весовые матрицы размером \( 5\times 5 \) со случайно сгенерированными значениями, например:</p>  
<p class="text-center"> 
\( 
  weightMatrixes(1) = \begin{pmatrix}
   0.29 &  0.65 &  0.61 &  0.57 &  0.12\\
   0.86  & 0.99 &  0.85 &  0.57 &  0.73\\
   0.85  & 0.05 &  0.06 &  0.82 &  0.27\\
   0.53 &  0.75 &  0.83 &  0.06 &  0.55\\
   0.99 &  0.41 &  0.93 &  0.56 &  0.99
  \end{pmatrix}   
  \)  
 </p>  

<p>Зададим количество итераций \( lim \), массив для сбора результата каждой эпохи \( epoch \),  скорость обучения нейросети \( educationSpeed \) и эталонный выход \( vectorOutputEtalon \):</p>  
<div class="image-container">
<p><b>На этом месте располагается листинг, который не может быть правильно отображен в rss-ленте. Перейдите к оригинальной статье: <a href='http://inclab.ru/articles/pishem-neyroset-na-scilab'>http://inclab.ru/articles/pishem-neyroset-na-scilab</a></b></p>
</div>

<p>И с помощью цикла \( for \) проведём обучение неросети на Scilab:</p>  
<div class="image-container">
<p><b>На этом месте располагается листинг, который не может быть правильно отображен в rss-ленте. Перейдите к оригинальной статье: <a href='http://inclab.ru/articles/pishem-neyroset-na-scilab'>http://inclab.ru/articles/pishem-neyroset-na-scilab</a></b></p>
</div>
<p>В первом вложенном цикле происходит <a href="https://inclab.ru/profi/prosteyshaya-neyronnaya-set-na-scilab">прямое распространение сигнала  в нейросети</a> - заполнение всех столбцов матрицы \( neuralNetwork \).</p> 

<p>Далее в текущий столбец  \( epoch \) записывается полученный выходной вектор нейронки, он нам пригодится позже для отслеживания процесса обучения.</p> 

<p>После каждого прямого прохода по сети, мы <a href="https://inclab.ru/profi/obuchenie-neyronnoy-seti">расчитываем ошибку</a> на каждом из слоёв <!--и пишем результат в гипер-структуру list-->:<br/>
 - cначала, на выходном,- как разницу эталонного и текущего выхода, <br/>
 - а далее, во втором вложенном цикле, -  на остальных слоях, вплоть до входного.</p> 

<p>И, наконец, расчитываем весовую поправку \( dW \) и <a href="https://inclab.ru/profi/obuchenie-neyronnoy-seti">обновляем коэффициенты весовых матриц</a> \( weightMatrixes \).</p> 

<h3>Обработка результа тренировки нейронной сети на Scilab</h3>
<p>Для того, чтобы не сверять самостоятельно циферки на выходе нейросети с эталонными значениями, выведем график зависимости выходного слоя от эпохи (итерации) обучения:</p> 
<div class="image-container">
<p><b>На этом месте располагается листинг, который не может быть правильно отображен в rss-ленте. Перейдите к оригинальной статье: <a href='http://inclab.ru/articles/pishem-neyroset-na-scilab'>http://inclab.ru/articles/pishem-neyroset-na-scilab</a></b></p>
</div>

<div class="image-container" itemscope itemtype="http://schema.org/ImageObject">
    <picture>
        <source type="image/webp" srcset="/images/articles/pishem-neyroset-na-scilab/mjhrvb/priblizhenie-vyhodnyh-znacheniy-neyroseti-k-ehtalonnym-na-scilab.webp"/>
        <img class="image-in-container" src="http://inclab.ru/images/articles/pishem-neyroset-na-scilab/mjhrvb/priblizhenie-vyhodnyh-znacheniy-neyroseti-k-ehtalonnym-na-scilab.jpg" itemprop="contentUrl" alt="Приближение выходных значений нейросети к эталонным на Scilab" title="Приближение выходных значений нейросети к эталонным на Scilab"/>
    </picture>
    <span class="image-description text-italic" itemprop="description">Приближение выходных значений нейросети к эталонным на Scilab</span>
</div>



















<p>Оригинальный адрес статьи: <a href='http://inclab.ru/articles/pishem-neyroset-na-scilab'>http://inclab.ru/articles/pishem-neyroset-na-scilab</a><p>]]></description>
			<pubDate>Mon, 04 Jul 2022 18:11:21 +0400</pubDate>
		</item>
		<item>
			<title><![CDATA[Корректировка весовых коэффициентов  нейросети в Scilab]]></title>
			<link>http://inclab.ru/articles/obuchenie-neyronnoy-seti</link>
			<guid>http://inclab.ru/articles/obuchenie-neyronnoy-seti</guid>
			<description><![CDATA[<img src="http://inclab.ru" />Обратное распостранение ошибки в нейроннонной сети и корректировка весовых коэффициентов по методу градиентного спуска<p>Ранее мы улучшали поведение простого <a href="https://inclab.ru/profi/nastroyka-lineynogo-klassifikatora-scilab">линейного классификатора</a> и рассмотрели, как по входу и матрицам весов <a href="https://inclab.ru/profi/prosteyshaya-neyronnaya-set-na-scilab">нейросети</a> вычислить её выход.</p>
<p>Теперь предположим, что имеется некий эталоный выход, к которому должен стремиться результат работы нейросети. Для достижения эталона нам потребуется что-то перенастраивать в сети. Это будут весовые коэффициенты.</p>

<p>Выясним, как мы будем обновлять матрицы весов.</p>
<div class="image-container" itemscope itemtype="http://schema.org/ImageObject">
    <picture>
        <source type="image/webp" srcset="/images/articles/obuchenie-neyronnoy-seti/1c1lie5/zagotovka-raspredeleniya-oshibki-izobrazhenie-iz-1.webp"/>
        <img class="image-in-container" src="http://inclab.ru/images/articles/obuchenie-neyronnoy-seti/1c1lie5/zagotovka-raspredeleniya-oshibki-izobrazhenie-iz-1.jpg" itemprop="contentUrl" alt="Заготовка распределения ошибки. Изображение из (1)" title="Заготовка распределения ошибки. Изображение из (1)"/>
    </picture>
    <span class="image-description text-italic" itemprop="description">Заготовка распределения ошибки. Изображение из (1)</span>
</div>
<h2>Обратное распространение ошибки в нейронной сети</h2>
<p>Воспользуемся методом ОРО, пропорционально распределяя ошибку между имеющимися узлами:</p>
<div class="image-container" itemscope itemtype="http://schema.org/ImageObject">
    <picture>
        <source type="image/webp" srcset="/images/articles/obuchenie-neyronnoy-seti/8pitjk/prostaya-set-i-oshibka-na-uzlah-izobrazhenie-iz-1.webp"/>
        <img class="image-in-container" src="http://inclab.ru/images/articles/obuchenie-neyronnoy-seti/8pitjk/prostaya-set-i-oshibka-na-uzlah-izobrazhenie-iz-1.jpg" itemprop="contentUrl" alt="Простая сеть и ошибка на узлах. Изображение из (1)" title="Простая сеть и ошибка на узлах. Изображение из (1)"/>
    </picture>
    <span class="image-description text-italic" itemprop="description">Простая сеть и ошибка на узлах. Изображение из (1)</span>
</div>
<p>Определим ошибку на выходном слое \(  e^{О}\), как разность между эталонным значением \(  t_{i}\) и полученным \(  o_{i}\) на выходе нейросети : </p>
<p class="text-center"> \(  e^{О}_{i} = t_{i} - o_{i}\)</p>
<p>Тогда, глядя на рисунок выше, заключим, что ошибка \(  e^{О}_{1}\) распределяется пропорционально весам \(  w_{11}\) и \(  w_{21}\), а ошибка \(  e^{О}_{2}\) должна распределяться пропорционально весам \(  w_{12}\) и \(  w_{22}\). </p>

<p>Запишем эти доли в явном виде:</p>
<p class="text-center"> \(  e^{O}_{1} = \displaystyle\frac {w_{11}}{w_{11} + w_{21}}; \quad e^{O}_{2} = \displaystyle\frac {w_{12}}{w_{12} + w_{22}}, \)</p>
  


<p>Итак, на основе отклонения текущего выхода от эталонного, мы будем обновлять весовые коэффициенты во всей нейросети, двигаясь с конца к её началу.</p>
<div class="image-container" itemscope itemtype="http://schema.org/ImageObject">
    <picture>
        <source type="image/webp" srcset="/images/articles/obuchenie-neyronnoy-seti/1ozvrnz/raspredelenie-oshibki-po-sloyam-izobrazhenie-iz-1.webp"/>
        <img class="image-in-container" src="http://inclab.ru/images/articles/obuchenie-neyronnoy-seti/1ozvrnz/raspredelenie-oshibki-po-sloyam-izobrazhenie-iz-1.jpg" itemprop="contentUrl" alt="Распределение ошибки по слоям. Изображение из (1)" title="Распределение ошибки по слоям. Изображение из (1)"/>
    </picture>
    <span class="image-description text-italic" itemprop="description">Распределение ошибки по слоям. Изображение из (1)</span>
</div>

<p>Но если сначала мы использовали ошибку выходного слоя, то какую ошибку использовать для узлов скрытого слоя? Ведь мы не можем указать очевидную ошибку для узла в таком слое. <br/> Разберёмся, как определить ошибку для скрытого узла.</p>

<h3>Ошибка скрытого слоя</h3>
<p>Мы можем воссоединить ошибки, распределенные по связям следующим образом: ошибка на первом скрытом узле \(  e^{H}_{1} \) представляет собой сумму ошибок, распределенных по всем связям, исходящим из этого узла в прямом направлении: </p>
<p class="text-center"> \(  e^{H}_{1} = e^{O}_{1} \cdot \frac {w_{11}}{w_{11} + w_{21}} + e^{O}_{2} \cdot \frac {w_{12}}{w_{12} + w_{22}}, \)</p>
  
  <p>или как показано на иллюстрации ниже:</p>
<div class="image-container" itemscope itemtype="http://schema.org/ImageObject">
    <picture>
        <source type="image/webp" srcset="/images/articles/obuchenie-neyronnoy-seti/v8p7hg/metod-oro-izobrazhenie-iz-1.webp"/>
        <img class="image-in-container" src="http://inclab.ru/images/articles/obuchenie-neyronnoy-seti/v8p7hg/metod-oro-izobrazhenie-iz-1.jpg" itemprop="contentUrl" alt="Метод ОРО. Изображение из (1)" title="Метод ОРО. Изображение из (1)"/>
    </picture>
    <span class="image-description text-italic" itemprop="description">Метод ОРО. Изображение из (1)</span>
</div>

<p>Применять данную методику мы будем до тех пор, пока не доберёмся до входного слоя:</p>
<div class="image-container" itemscope itemtype="http://schema.org/ImageObject">
    <picture>
        <source type="image/webp" srcset="/images/articles/obuchenie-neyronnoy-seti/1gs63o3/raschet-oshibki-na-vnutrennih-uzlah-izobrazhenie-iz-1.webp"/>
        <img class="image-in-container" src="http://inclab.ru/images/articles/obuchenie-neyronnoy-seti/1gs63o3/raschet-oshibki-na-vnutrennih-uzlah-izobrazhenie-iz-1.jpg" itemprop="contentUrl" alt="Расчет ошибки на внутренних узлах. Изображение из (1)" title="Расчет ошибки на внутренних узлах. Изображение из (1)"/>
    </picture>
    <span class="image-description text-italic" itemprop="description">Расчет ошибки на внутренних узлах. Изображение из (1)</span>
</div>


<h3>Векторизация метода ОРО в нейросети</h3>
<p>Опять, так как Scilab - матричный язык, адаптируем поэлементный процесс обратного распространения ошибки в нейросети под удобный нам.</p>
<p>Зададим эталонный вектор \(  V_{e}\), тогда ошибка  \(  E_O\) на выходном слое \(  O\) считается самым простым способом:</p>
<p class="text-center"> \(  E_O = V_{e} - O \)</p>
<p>Ошибка \(  E_H \) на скрытом слое \(  H\)  будет считаться с учетом вклада каждого узла следующим образом:</p>
<p class="text-center"> 
  \(  E_H = \begin{pmatrix}
  \frac {w_{11}}{w_{11} + w_{21}} & \frac {w_{12}}{w_{12} + w_{22}} \\
  \frac {w_{21}}{w_{21} + w_{11}} & \frac {w_{22}}{w_{22} + w_{12}} 
  \end{pmatrix} \cdot E_o
\)  
</p> 
<p>Здесь  \(  w_{ij} \) - элементы матрицы \(  W_{HO} \), задающей веса для слоёв выходной-скрытый.</p>
<p>Это выражение  можно переписать в более простом виде, отказавшись от знаменателей в первом множителе. Тогда получим связь  с весовой матрицей на текущем шаге:</p>
<p class="text-center"> 
  \(  E_H = \begin{pmatrix}
  w_{11} & w_{12} \\
  w_{21} & w_{22}
  \end{pmatrix} \cdot E_O 
\)  
</p>
<p>Итак, ошибка  \(  E_H \) скрытого вычисляется с учётом ошибки \(E_O\) выходного слоя и матрицы \(  W_{HO} \):</p>
<p class="text-center">  \(  E_H = W_{HO}^T \cdot E_O\)  </p>
<p>Аналогично, для входного слоя ошибка \(  E_I \) будет вычисляться с учётом ошибки \(E_H\) предыдущего слоя в связи с матрицей \(  W_{IH} \), определяющей веса входной-скрытый слоёв:</p>
<p class="text-center">   \(   E_I = W_{IH}^T \cdot E_H\)  </p>

<h2>Обновление весовых коэффициентов</h2>
<p>Для обновления весовых коэффициентов мы воспользуемся методом градиентного спуска (подробнее в (1)).</p>
<p>При подсчёте ошибки на каждом из слоёв, будем немного корректировать весовые коэффициенты соответвующей весовой матрицы на величину  \(  \Delta w \), которая на векторно-матричном языке может быть представлена как:</p>
 <p class="text-center">   \(   \Delta w = - \alpha \cdot E_k \cdot O_k \cdot (1 - O_k) \cdot O^T_j,    \)  </p> 

 <p> где    <br/> 
\(\alpha - \) скорость обучения нейронной сети \(\alpha \in (0,1) \),   <br/> 
\(E_k - \) ошибка текущего слоя (вектор столбец),  <br/>  
\(O_k - \) текущий слой (вектор-столбец),    <br/>
\(O^T_j - \) предыдущий слой (вектор-столбец).</p> 

 <p> А обновлённая матрица весов примет вид:</p> 
 <p class="text-center">   \( W^{new} = W^{cur} -  \Delta w  \)  </p> 


<p>Осталось лишь собрать всё в программный код <a href="https://inclab.ru/profi/pishem-neyroset-na-scilab">обучения нейросети</a> &#128513;</p>

<p>Данная статья создана на основе <a id="tarikbook" target="_blank" href="https://books.google.ru/books?id=wynnDwAAQBAJ">чудесной книги</a>(1) с реализацией автором  приведённых примеров на Scilab.</p>











<p>Оригинальный адрес статьи: <a href='http://inclab.ru/articles/obuchenie-neyronnoy-seti'>http://inclab.ru/articles/obuchenie-neyronnoy-seti</a><p>]]></description>
			<pubDate>Mon, 04 Jul 2022 18:08:38 +0400</pubDate>
		</item>
		<item>
			<title><![CDATA[Решение СЛУ и ОСЛУ в Scilab]]></title>
			<link>http://inclab.ru/articles/reshenie-slu-oslu-v-scilab</link>
			<guid>http://inclab.ru/articles/reshenie-slu-oslu-v-scilab</guid>
			<description><![CDATA[<img src="http://inclab.ru" />Функции наиболее часто применяемые для решения СЛАУ.<p>Основные функции для работы с матрицами рассмотрены в статье <a href="https://inclab.ru/beginner/odnomernye-i-mnogomernye-massivy-v-skilabe">Массивы в Scilab</a>.<br/>
Специальные функции для работы с матрицами рассмотрены в статье <a href="https://inclab.ru/beginner/specialnye-matrichnye-funkcii">Специальные матричные функции в Scilab</a>.</p>
<p>Ниже остановимся на функциях, которые могут полезны, в том числе, для решения задач линейной алгебры.</p>
  
  
<h2>Характериститики матрицы</h2>
<h3 style="font-weight: normal"><em>Найдём определитель матрицы A</em>: функция <em>det()</em> в Scilab</h3>

<div class="image-container">
<p><b>На этом месте располагается листинг, который не может быть правильно отображен в rss-ленте. Перейдите к оригинальной статье: <a href='http://inclab.ru/articles/reshenie-slu-oslu-v-scilab'>http://inclab.ru/articles/reshenie-slu-oslu-v-scilab</a></b></p>
</div>	

<p class="text-center"> 
\( 
  \begin{matrix}  
  A = \begin{pmatrix}
  1 & 0 & 3 \\
  2 & 7 & 1 \\
  0 & 4 & 1 
  \end{pmatrix} &
    
  d = 27
   \end{matrix}
  \)  
 </p>

<h3 style="font-weight: normal"><em>Найдём ранг матрицы A</em>: функция <em>rank()</em> в Scilab</h3>

<div class="image-container">
<p><b>На этом месте располагается листинг, который не может быть правильно отображен в rss-ленте. Перейдите к оригинальной статье: <a href='http://inclab.ru/articles/reshenie-slu-oslu-v-scilab'>http://inclab.ru/articles/reshenie-slu-oslu-v-scilab</a></b></p>
</div>	

<p class="text-center"> 
\( 
  \begin{matrix}  
  A = \begin{pmatrix}
  1 & 0 & 3 \\
  2 & 7 & 1 \\
  0 & 4 & 1 
  \end{pmatrix} &
    
  r = 3
   \end{matrix}
  \)  
 </p>

<h3 style="font-weight: normal"><em>Найдём норму матрицы</em>: функция <em>norm(A,option) </em>в Scilab</h3>

<p><em>option</em> - число или строка. Принимает значения:<br/>
2 - вычисляет 2-ю норму матрицы (её наибольшее сингулярное значение).<br/>
1 - вычисляет 1-ю норму матрицы (её наибольшая сумма в столбцах).<br/>
'inf' - вычисляет бесконечную норму матрицы (её наибольшая сумма в строках).<br/>
'fro' - вычисляет евклидову норму матрицы (корень из суммы квадратов всех элементов матрицы).</p>

<div class="image-container">
<p><b>На этом месте располагается листинг, который не может быть правильно отображен в rss-ленте. Перейдите к оригинальной статье: <a href='http://inclab.ru/articles/reshenie-slu-oslu-v-scilab'>http://inclab.ru/articles/reshenie-slu-oslu-v-scilab</a></b></p>
</div>	

<p class="text-center"> 
\( 
  \begin{matrix}  
  A = \begin{pmatrix}
  1 & 0 & 3 \\
  2 & 7 & 1 \\
  0 & 4 & 1 
  \end{pmatrix} &    
  |A|_2 = 8.3940402 &    
  |A|_1 = 11 &    
  |A|_{inf} = 10 &    
  |A|_{fro} = 9
  
   \end{matrix}
  \)  
 </p>


<h3 style="font-weight: normal"><em>Найдём число обусловленности матрицы A по 2-й норме</em>: функция <em>сond()</em> в Scilab</h3>

<div class="image-container">
<p><b>На этом месте располагается листинг, который не может быть правильно отображен в rss-ленте. Перейдите к оригинальной статье: <a href='http://inclab.ru/articles/reshenie-slu-oslu-v-scilab'>http://inclab.ru/articles/reshenie-slu-oslu-v-scilab</a></b></p>
</div>	

<p class="text-center"> 
\( 
  \begin{matrix}  
  A = \begin{pmatrix}
  1 & 0 & 3 \\
  2 & 7 & 1 \\
  0 & 4 & 1 
  \end{pmatrix} &
    
  с = 8.0199286
   \end{matrix}
  \)  
 </p>


 
<h2>Функции для решения систем линейных уравненений</h2>
<h3 style="font-weight: normal"><em>Найдём собственные значения и собственные вектора матрицы A</em>: функция <em>spec()</em> в Scilab</h3>

<div class="image-container">
<p><b>На этом месте располагается листинг, который не может быть правильно отображен в rss-ленте. Перейдите к оригинальной статье: <a href='http://inclab.ru/articles/reshenie-slu-oslu-v-scilab'>http://inclab.ru/articles/reshenie-slu-oslu-v-scilab</a></b></p>
</div>	


<h3 style="font-weight: normal"><em>Найдём обратную матрицу к A</em>: функция <em>inv()</em> в Scilab</h3>

<div class="image-container">
<p><b>На этом месте располагается листинг, который не может быть правильно отображен в rss-ленте. Перейдите к оригинальной статье: <a href='http://inclab.ru/articles/reshenie-slu-oslu-v-scilab'>http://inclab.ru/articles/reshenie-slu-oslu-v-scilab</a></b></p>
</div>	

<p class="text-center"> 
\( 
    \begin{matrix}  
  A = \begin{pmatrix}
  1 & 0 & 3 \\
  2 & 7 & 1 \\
  0 & 4 & 1 
  \end{pmatrix}&
  
  A^{-1} = \begin{pmatrix}
   0.1111111 &  0.4444444 & -0.7777778\\
  -0.0740741 &  0.037037  &  0.1851852\\
   0.2962963 & -0.1481481 &  0.2592593
  \end{pmatrix} \\
  
  A\cdot A^{-1} = E

  \end{matrix}
  \)  
 </p>

<p>Если появляется ошибка <em>Задача вырождена</em>, значит определитель исходной матрицы равен или близок к нулю</p>
<div class="image-container">
<p><b>На этом месте располагается листинг, который не может быть правильно отображен в rss-ленте. Перейдите к оригинальной статье: <a href='http://inclab.ru/articles/reshenie-slu-oslu-v-scilab'>http://inclab.ru/articles/reshenie-slu-oslu-v-scilab</a></b></p>
</div>	

<p class="text-center"> 
\( 
    \begin{matrix}  
  B = \begin{pmatrix}
  1 & 2 & 3 \\
  1 & 4 & 5 \\
  1 & 6 & 7 
  \end{pmatrix}&
  
  det(B) = 0

  \end{matrix}
  \)  
 </p>


<h3 style="font-weight: normal"><em>Решаем СЛАУ</em> \( A\cdot x+b=0\): функция <em>linsolve(A,b)</em> в Scilab</h3>
<p>1) Решим систему линейных алгебраических уравнений привычного вида:</p>
<p class="text-center"> 
\( 
\begin{cases}
  2x_1 + x_2 = 1 \\ 
  x_1 - 2x_2 = 3 
\end{cases}
  \)  
 </p>

<p>Для начала её нужно привести к виду, который принимает Scilab - перенести вектор свободных членов влево:</p>
<p class="text-center"> 
\( 
\begin{cases}
  2x_1 + x_2 -1 = 0 \\ 
  x_1 - 2x_2 - 3 =0 
\end{cases}
  \)  
 </p>

<p>Теперь определим вид матрицы А и вектора b:</p>
<p class="text-center"> 
\( 
    \begin{matrix}  
  A = \begin{pmatrix}
  2 & 1  \\
  1 & -2  
  \end{pmatrix}&
  
  b = \begin{pmatrix}
   -1 \\ -3
  \end{pmatrix} &
  
  A\cdot x+b=0

  \end{matrix}
  \)  
 </p>

<p>Зададим матрицу и вектор-столбец в Scilab и решим его силами полученную СЛАУ:</p>
<div class="image-container">
<p><b>На этом месте располагается листинг, который не может быть правильно отображен в rss-ленте. Перейдите к оригинальной статье: <a href='http://inclab.ru/articles/reshenie-slu-oslu-v-scilab'>http://inclab.ru/articles/reshenie-slu-oslu-v-scilab</a></b></p>
</div>	

<p>Получим красивый ответ:</p>
<p class="text-center"> 
\(   
  X = \begin{pmatrix}
   1 \\ -1
  \end{pmatrix}
  \)  
 </p>



<p>2) Если СЛАУ имеет <em>бесконечное число решений</em>, Scilab выведет только одно из них.</p>
<p>Решим систему линейных алгебраических уравнений вида:</p>
<p class="text-center"> 
\( 
\begin{cases}
  x_1 - 3x_2 = 1 \\ 
  2x_1 - 6x_2 = 2 
\end{cases}
  \)  
 </p>

<p>Зададим матрицу и вектор-столбец в Scilab:</p>
<div class="image-container">
<p><b>На этом месте располагается листинг, который не может быть правильно отображен в rss-ленте. Перейдите к оригинальной статье: <a href='http://inclab.ru/articles/reshenie-slu-oslu-v-scilab'>http://inclab.ru/articles/reshenie-slu-oslu-v-scilab</a></b></p>
</div>	

<p>Получим одно из возможных решений:</p>
<p class="text-center"> 
\(   
  X = \begin{pmatrix}
   0.1 \\ -0.3
  \end{pmatrix}
  \)  
 </p>

<p>3) Если возникает ошибка <em>Конфликтующие линейные  ограничения</em>, значит система не имеет решений.</p>
<p>Решим систему линейных алгебраических уравнений вида:</p>
<p class="text-center"> 
\( 
\begin{cases}
  x_1 - x_2 = 1 \\ 
  2x_1 - 2x_2 = -1 
\end{cases}
  \)  
 </p>

<p>Зададим матрицу и вектор-столбец в Scilab:</p>
<div class="image-container">
<p><b>На этом месте располагается листинг, который не может быть правильно отображен в rss-ленте. Перейдите к оригинальной статье: <a href='http://inclab.ru/articles/reshenie-slu-oslu-v-scilab'>http://inclab.ru/articles/reshenie-slu-oslu-v-scilab</a></b></p>
</div>	

<p>Получим ошибку: ВНИМАНИЕ: Конфликтующие линейные  ограничения.</p>
<p>Чтобы убедиться, что в матрице системы есть ЛНЗ строки или столбцы, потребуется приведение матрицы к ступенчатому виду.</p>

<h3 style="font-weight: normal"><em>Приводим систему линейных уравнений к ступенчатому виду</em>: функция <em>rref(A)</em> в Scilab</h3>
<p>Приведём матрицу к треугольной форме методом Гаусса:</p>
<div class="image-container">
<p><b>На этом месте располагается листинг, который не может быть правильно отображен в rss-ленте. Перейдите к оригинальной статье: <a href='http://inclab.ru/articles/reshenie-slu-oslu-v-scilab'>http://inclab.ru/articles/reshenie-slu-oslu-v-scilab</a></b></p>
</div>	

<p class="text-center"> 
\( 
  \begin{matrix}  
  A = \begin{pmatrix}
  1 & 0 & 3 \\
  2 & 7 & 1 \\
  0 & 4 & 1 
  \end{pmatrix} &
    \tilde{} &
   \begin{pmatrix}
  1 & 0 & 0 \\
  0 & 1 & 0 \\
  0 & 0 & 1 
  \end{pmatrix}
   \end{matrix}
  \)  
 </p>

<h2>Функции разложения матрицы</h2>.
<h3 style="font-weight: normal"><em>Треугольное разложение матрицы</em> \(A = L\cdot U\): функция <em>lu()</em> в Scilab</h3>

<div class="image-container">
<p><b>На этом месте располагается листинг, который не может быть правильно отображен в rss-ленте. Перейдите к оригинальной статье: <a href='http://inclab.ru/articles/reshenie-slu-oslu-v-scilab'>http://inclab.ru/articles/reshenie-slu-oslu-v-scilab</a></b></p>
</div>	
<p>\(L-\) нижне-треугольная матрица, \(U-\) верхне-треугольная матрица:</p>
<p class="text-center"> 
\( 
    \begin{matrix}  
  A = \begin{pmatrix}
  1 & 2 & 3 \\
  2 & 7 & 1 \\
  2 & 4 & 1 
  \end{pmatrix}\\
  
  L = \begin{pmatrix}
   0.5 &  0.5 & 1\\
   1 &  0  &  0\\
   1 & 1 &  0
  \end{pmatrix} &
  
  U = \begin{pmatrix}
   2. &  7. &  1. \\
   0.&  -3. &  0. \\
   0. &  0.&   2.5
  \end{pmatrix}

  \end{matrix}
  \)  
 </p>

<h3 style="font-weight: normal"><em>Разложение матрицы на ортогональную и верхне-треугольную</em> \(A = Q\cdot R\): функция <em>qr()</em> в Scilab</h3>

<div class="image-container">
<p><b>На этом месте располагается листинг, который не может быть правильно отображен в rss-ленте. Перейдите к оригинальной статье: <a href='http://inclab.ru/articles/reshenie-slu-oslu-v-scilab'>http://inclab.ru/articles/reshenie-slu-oslu-v-scilab</a></b></p>
</div>	
<p>\(Q-\) ортогональная матрица, \(U-\) верхне-треугольная матрица:</p>
<p class="text-center"> 
\( 
    \begin{matrix}  
  A = \begin{pmatrix}
  1 & 2 & 3 \\
  2 & 7 & 1 \\
  2 & 4 & 1 
  \end{pmatrix}\\
  
  Q = \begin{pmatrix}
  -0.3333333 &  0.2981424 & -0.8944272\\
  -0.6666667 & -0.745356  &  0.      \\ 
  -0.6666667 &  0.5962848 &  0.4472136
  \end{pmatrix} &
  
  R = \begin{pmatrix}
  -3. & -8.        & -2.3333333\\
   0. & -2.236068 &  0.745356 \\
   0. &  0.       & -2.236068 
  \end{pmatrix}

  \end{matrix}
  \)  
 </p>


<p>Основные функции для работы с матрицами рассмотрены в статье <a href="https://inclab.ru/beginner/odnomernye-i-mnogomernye-massivy-v-skilabe">Массивы в Scilab</a>.</p>



<p>Оригинальный адрес статьи: <a href='http://inclab.ru/articles/reshenie-slu-oslu-v-scilab'>http://inclab.ru/articles/reshenie-slu-oslu-v-scilab</a><p>]]></description>
			<pubDate>Mon, 27 Jun 2022 21:56:25 +0400</pubDate>
		</item>
		<item>
			<title><![CDATA[Матрицы и массивы в Scilab: полный гайд]]></title>
			<link>http://inclab.ru/articles/specialnye-matrichnye-funkcii</link>
			<guid>http://inclab.ru/articles/specialnye-matrichnye-funkcii</guid>
			<description><![CDATA[<img src="http://inclab.ru" />Для работы с матрицами и векторами в существуют специальные функции Scilab.
Рассмотрим наиболее часто используемые из них.<p>Основные функции для работы с матрицами рассмотрены в статье <a href="https://inclab.ru/beginner/odnomernye-i-mnogomernye-massivy-v-skilabe">Массивы в Scilab</a>. <br/>
Другие полезные функции рассмотрены в статье <a href="https://inclab.ru/beginner/reshenie-slu-oslu-v-scilab">Функции для решения задач линейной алгебры в Scilab</a></p>

  
  
<p>Ниже остановимся на специальных функциях: поиска минимального и максимального элементов, сортировки, объединения массивов в Scilab и т.д..</p>
<h2>Задание матриц/векторов специального вида</h2>
<h3 style="font-weight: normal"><em>Создаём матрицу из единиц</em>: функция <em>ones(n,m)</em> в Scilab</h3>

<p>Указываем число строк и число столбцов матрицы.</p>
<p>Задаём вектор-строк и вектор-столбец единиц</p>
<div class="image-container">
<p><b>На этом месте располагается листинг, который не может быть правильно отображен в rss-ленте. Перейдите к оригинальной статье: <a href='http://inclab.ru/articles/specialnye-matrichnye-funkcii'>http://inclab.ru/articles/specialnye-matrichnye-funkcii</a></b></p>
</div>	

<p class="text-center"> 
\( 
  \begin{matrix}  
  R = \begin{pmatrix}
  1 & 1 & 1 
  \end{pmatrix} &
    
  C = \begin{pmatrix}
  1 \\  1  \\  1 
  \end{pmatrix}  
   \end{matrix}
  
  \)  
 </p>

<p>Задаём матрицу из единиц размерностью m на n</p>
<div class="image-container">
<p><b>На этом месте располагается листинг, который не может быть правильно отображен в rss-ленте. Перейдите к оригинальной статье: <a href='http://inclab.ru/articles/specialnye-matrichnye-funkcii'>http://inclab.ru/articles/specialnye-matrichnye-funkcii</a></b></p>
</div>	

<p class="text-center"> 
\( 
  \begin{matrix}  
  A = \begin{pmatrix}
  1 & 1 \\
  1 & 1 \\
  1 & 1 
  \end{pmatrix} &
    
  S = \begin{pmatrix}
  1 & 1 \\
  1 & 1
  \end{pmatrix}  
   \end{matrix}
  
  \)  
 </p>

<p>Задаём матрицу D из единиц, той же размерности, что и матрица A</p>
<div class="image-container">
<p><b>На этом месте располагается листинг, который не может быть правильно отображен в rss-ленте. Перейдите к оригинальной статье: <a href='http://inclab.ru/articles/specialnye-matrichnye-funkcii'>http://inclab.ru/articles/specialnye-matrichnye-funkcii</a></b></p>
</div>	

<p class="text-center"> 
\( 
  \begin{matrix}  
  A = \begin{pmatrix}
  1 & 5 & 4 \\
  3 & 2 & 6 
  \end{pmatrix} &
    
  D = \begin{pmatrix}
  1 & 1 & 1\\
  1 & 1 & 1
  \end{pmatrix}  
   \end{matrix}
  
  \)  
 </p>



<h3 style="font-weight: normal"><em>Создаём матрицу из нулей</em>: функция <em>zeros(n,m)</em> в Scilab</h3>

<p>Указываем число строк и число столбцов матрицы.</p>
<p>Задаём вектор-строк и вектор-столбец нулей</p>
<div class="image-container">
<p><b>На этом месте располагается листинг, который не может быть правильно отображен в rss-ленте. Перейдите к оригинальной статье: <a href='http://inclab.ru/articles/specialnye-matrichnye-funkcii'>http://inclab.ru/articles/specialnye-matrichnye-funkcii</a></b></p>
</div>	

<p class="text-center"> 
\( 
  \begin{matrix}  
  R = \begin{pmatrix}
  0 & 0 & 0 
  \end{pmatrix} &
    
  C = \begin{pmatrix}
  0 \\  0  \\  0 
  \end{pmatrix}  
   \end{matrix}
  
  \)  
 </p>

<p>Задаём матрицу нулей размерностью m на n</p>
<div class="image-container">
<p><b>На этом месте располагается листинг, который не может быть правильно отображен в rss-ленте. Перейдите к оригинальной статье: <a href='http://inclab.ru/articles/specialnye-matrichnye-funkcii'>http://inclab.ru/articles/specialnye-matrichnye-funkcii</a></b></p>
</div>	

<p class="text-center"> 
\( 
  \begin{matrix}  
  A = \begin{pmatrix}
  0 & 0 \\
  0 & 0 \\
  0 & 0 
  \end{pmatrix} &
    
  S = \begin{pmatrix}
  0 & 0 \\
  0 & 0
  \end{pmatrix}  
   \end{matrix}
  
  \)  
 </p>

<p>Задаём матрицу D из нулей, той же размерности, что и матрица A</p>
<div class="image-container">
<p><b>На этом месте располагается листинг, который не может быть правильно отображен в rss-ленте. Перейдите к оригинальной статье: <a href='http://inclab.ru/articles/specialnye-matrichnye-funkcii'>http://inclab.ru/articles/specialnye-matrichnye-funkcii</a></b></p>
</div>	

<p class="text-center"> 
\( 
  \begin{matrix}  
  A = \begin{pmatrix}
  1 & 5 & 4 \\
  3 & 2 & 6 
  \end{pmatrix} &
    
  D = \begin{pmatrix}
  0 & 0 & 0\\
  0 & 0 & 0
  \end{pmatrix}  
   \end{matrix}
  
  \)  
 </p>



<h3 style="font-weight: normal"><em>Создаём единичную матрицу</em>: функция <em>eye(n,m)</em> в Scilab</h3>

<p>Указываем число строк и число столбцов матрицы.</p>
<p>Задаём единичную матрицу нулей размерностью m на n</p>
<div class="image-container">
<p><b>На этом месте располагается листинг, который не может быть правильно отображен в rss-ленте. Перейдите к оригинальной статье: <a href='http://inclab.ru/articles/specialnye-matrichnye-funkcii'>http://inclab.ru/articles/specialnye-matrichnye-funkcii</a></b></p>
</div>	

<p class="text-center"> 
\( 
  \begin{matrix}  
  A = \begin{pmatrix}
  1 & 0 & 0\\
  0 & 1 & 0\\
  0 & 0 & 1
  \end{pmatrix} &
    
  B = \begin{pmatrix}
  1 & 0 & 0 & 0\\
  0 & 1 & 0 & 0\\
  0 & 0 & 1 & 0
  \end{pmatrix}  &
    
  V = \begin{pmatrix}
  1 \\
  0 \\
  0 
  \end{pmatrix} 
   \end{matrix}
  
  \)  
 </p>

<p>Задаём единичную матрицу D, той же размерности, что и матрица A</p>
<div class="image-container">
<p><b>На этом месте располагается листинг, который не может быть правильно отображен в rss-ленте. Перейдите к оригинальной статье: <a href='http://inclab.ru/articles/specialnye-matrichnye-funkcii'>http://inclab.ru/articles/specialnye-matrichnye-funkcii</a></b></p>
</div>	

<p class="text-center"> 
\( 
  \begin{matrix}  
  A = \begin{pmatrix}
  1 & 2 \\
  4 & 5 
  \end{pmatrix} &
    
  D = \begin{pmatrix}
  1 & 0 \\
  0 & 1 
  \end{pmatrix}  
   \end{matrix}
  
  \)  
 </p>


<h3 style="font-weight: normal"><em>Создаём случайную матрицу/вектор</em>: функция <em>rand(n,m, key)</em> в Scilab</h3>

<p>Указываем число строк и число столбцов матрицы и необязательный параметр key -  это символьная переменная с помощью которой можно задать тип распределения случайной величины (по умолчанию равномерное - 'uniform': гауссовское - 'normal').</p>
<p>Задаём матрицу m на n случайных чисел</p>
<div class="image-container">
<p><b>На этом месте располагается листинг, который не может быть правильно отображен в rss-ленте. Перейдите к оригинальной статье: <a href='http://inclab.ru/articles/specialnye-matrichnye-funkcii'>http://inclab.ru/articles/specialnye-matrichnye-funkcii</a></b></p>
</div>	

<p class="text-center"> 
\( 
  \begin{matrix}  
  A = \begin{pmatrix}
  0.2113249 & 0.3303271\\
  0.7560439 & 0.6653811 \\
  0.0002211 & 0.6283918
  \end{pmatrix} &
    
   
  V = \begin{pmatrix}
  -0.7335813 \\
  0.1034169 \\
  0.8915736 
  \end{pmatrix} 
   \end{matrix}
  
  \)  
 </p>



<h3 style="font-weight: normal"><em>Создаём квадратную матрицу с элемнтами V на k-oй диагонали</em>: функция <em> diag(V[,k]) </em> в Scilab</h3>

<p>Задаём вектор V  и указываем, на какой диагонали его разместить.</p>
<div class="image-container">
<p><b>На этом месте располагается листинг, который не может быть правильно отображен в rss-ленте. Перейдите к оригинальной статье: <a href='http://inclab.ru/articles/specialnye-matrichnye-funkcii'>http://inclab.ru/articles/specialnye-matrichnye-funkcii</a></b></p>
  <span class="image-description text-italic">Задаём главную диагональ</span>
</div>	

<p class="text-center"> 
\( 
  \begin{matrix}  
  A = \begin{pmatrix}
  1 & 0 & 0\\
  0 & 2 & 0\\
  0 & 0 & 3
  \end{pmatrix} 
   \end{matrix}
   \)  
 </p>

<div class="image-container">
<p><b>На этом месте располагается листинг, который не может быть правильно отображен в rss-ленте. Перейдите к оригинальной статье: <a href='http://inclab.ru/articles/specialnye-matrichnye-funkcii'>http://inclab.ru/articles/specialnye-matrichnye-funkcii</a></b></p>
  <span class="image-description text-italic">Задаём произвольную диагональ: выше или ниже главной</span>
</div>	

<p class="text-center"> 
\( 
  \begin{matrix}  
  B = \begin{pmatrix}
  0 & 1 & 0 & 0\\
  0 & 0 & 2 & 0\\
  0 & 0 & 0 & 3 \\
  0 & 0 & 0 & 0
  \end{pmatrix} &
  
    C = \begin{pmatrix}
  0 & 0 & 0 & 0\\
  1 & 0 & 0 & 0\\
  0 & 2 & 0 & 0\\
  0 & 0 & 3 & 0
  \end{pmatrix} 
  
   \end{matrix}
   \)  
 </p>



<h3 style="font-weight: normal"><em>Создаём нижне-треугольную матрицу</em>: функция <em>tril(A[,k])</em> в Scilab</h3>

<p>Указывавем матрицу, из которой будем формировать нижне-треугольную и диагональ, с которой начинать</p>
<div class="image-container">
<p><b>На этом месте располагается листинг, который не может быть правильно отображен в rss-ленте. Перейдите к оригинальной статье: <a href='http://inclab.ru/articles/specialnye-matrichnye-funkcii'>http://inclab.ru/articles/specialnye-matrichnye-funkcii</a></b></p>
</div>	

<p class="text-center"> 
\( 
  \begin{matrix}  
  A = \begin{pmatrix}
  1 & 1 & 1\\
  2 & 2 & 2 \\
  3 & 3 & 3
  \end{pmatrix} &
  B_1 = \begin{pmatrix}
  1 & 0 & 0\\
  2 & 2 & 0 \\
  3 & 3 & 3
  \end{pmatrix}     &
  B_2 = \begin{pmatrix}
  1 & 1 & 0\\
  2 & 2 & 2 \\
  3 & 3 & 3
  \end{pmatrix}    &
  B_3 = \begin{pmatrix}
  0 & 0 & 0\\
  2 & 0 & 0 \\
  3 & 3 & 0
  \end{pmatrix} 
   \end{matrix}
   \)  
 </p>



<h3 style="font-weight: normal"><em>Создаём верхне-треугольную матрицу</em>: функции <em>triu(A[,k]) </em> в Scilab</h3>

<p>Указывавем матрицу, из которой будем формировать верхне-треугольную и диагональ, с которой начинать</p>
<div class="image-container">
<p><b>На этом месте располагается листинг, который не может быть правильно отображен в rss-ленте. Перейдите к оригинальной статье: <a href='http://inclab.ru/articles/specialnye-matrichnye-funkcii'>http://inclab.ru/articles/specialnye-matrichnye-funkcii</a></b></p>
</div>	

<p class="text-center"> 
\( 
  \begin{matrix}  
  A = \begin{pmatrix}
  1 & 1 & 1\\
  2 & 2 & 2 \\
  3 & 3 & 3
  \end{pmatrix} &
  B_1 = \begin{pmatrix}
  1 & 1 & 1\\
  0 & 2 & 2 \\
  0 & 0 & 3
  \end{pmatrix}     &
  B_2 = \begin{pmatrix}
  0 & 0 & 1\\
  0 & 0 & 0 \\
  0 & 0 & 0
  \end{pmatrix}    &
  B_3 = \begin{pmatrix}
  1 & 1 & 1\\
  2 & 2 & 2 \\
  0 & 3 & 3
  \end{pmatrix} 
   \end{matrix}
   \)  
 </p>


<h3 style="font-weight: normal"><em>Создаём разреженную матрицу</em>: функции \( sparse(V_1, V_2) \) в Scilab</h3>

<p>\( V_1 \) - вектор координат(строка, столбец) ненулевых эелемнтов<br/> \( V_2 \) - вектор значений ненулевых эелемнтов </p>

<div class="image-container">
<p><b>На этом месте располагается листинг, который не может быть правильно отображен в rss-ленте. Перейдите к оригинальной статье: <a href='http://inclab.ru/articles/specialnye-matrichnye-funkcii'>http://inclab.ru/articles/specialnye-matrichnye-funkcii</a></b></p>
</div>	
<p class="text-center"> 
\( 
  \begin{matrix}  
  A = \begin{pmatrix}
   0. &  8.  &  0. &  0. &   0.\\
   0. &  0. &   0. &  0. &   9.\\
   15. &  0. &  0. &  11. &  0.
  \end{pmatrix} 
   \end{matrix}
   \)  
 </p>

<!--p><em>Создаём многомерную матрицу</em>: функции <em> hypermat(V_1, V_2) </em> </p>

<p>\( V_1 \) - вектор размеров гиперматрицы <br/> \( V_2 \) - вектор элементов гиперматрицы (нули по умолчанию)</p>
<p>Создадим многомерный массив A, состоящий из трёх матриц размерностью 2х2, элементы матриц формруются как члены последовательности от 0 до 11</p>
<div class="image-container">
<p><b>На этом месте располагается листинг, который не может быть правильно отображен в rss-ленте. Перейдите к оригинальной статье: <a href='http://inclab.ru/articles/specialnye-matrichnye-funkcii'>http://inclab.ru/articles/specialnye-matrichnye-funkcii</a></b></p>
</div>	
<p class="text-center"> 
\( 
  \begin{matrix}  
  A = \begin{pmatrix}
   0. &  8.  &  0. &  0. &   0.\\
   0. &  0. &   0. &  0. &   9.\\
   15. &  0. &  0. &  11. &  0.
  \end{pmatrix} 
   \end{matrix}
   \)  
 </p-->


<h2>Функции преобразования матриц/векторов</h2>
<h3 style="font-weight: normal"><em>Изменяем размер матрицы</em>: функция <em>matrix(A [,n,m])</em> в Scilab</h3>
<div class="image-container">
<p><b>На этом месте располагается листинг, который не может быть правильно отображен в rss-ленте. Перейдите к оригинальной статье: <a href='http://inclab.ru/articles/specialnye-matrichnye-funkcii'>http://inclab.ru/articles/specialnye-matrichnye-funkcii</a></b></p>
<span class="image-description text-italic">Исходная матрица.</span>
</div>

<p class="text-center"> 
\( A = \begin{pmatrix}
  1 & 2 \\
  3 & 4 \\
  5 & 6
  \end{pmatrix} \)  
 </p>
<p>Указываем матрицу, которую меняем, потом число строк и число столбцов новой матрицы.</p>
<div class="image-container">
<p><b>На этом месте располагается листинг, который не может быть правильно отображен в rss-ленте. Перейдите к оригинальной статье: <a href='http://inclab.ru/articles/specialnye-matrichnye-funkcii'>http://inclab.ru/articles/specialnye-matrichnye-funkcii</a></b></p>
<span class="image-description text-italic">Преобразованные матрицы</span>
</div>

<p class="text-center"> 
\( 
  \begin{matrix}  
  B_1 = \begin{pmatrix}
  1 & 5 & 4 \\
  3 & 2 & 6 
  \end{pmatrix} &
  
  B_2 = \begin{pmatrix}
  1 & 2 \\
  3 & 4 \\
  5 & 6
  \end{pmatrix}  &
 
  B_3 = \begin{pmatrix}
  1 & 2 & 3 & 4 & 5 & 6
  \end{pmatrix} &
  
  B_4 = \begin{pmatrix}
  1 \\  3  \\  4 \\ 5 \\ 6 
  \end{pmatrix}  
   \end{matrix}
  
  \)  
 </p>



<h3 style="font-weight: normal"><em>Конкатенация (склейка) матриц/векторов</em>: функция <em>cat(n, A, B) </em> в Scilab</h3>

<p>Склеиваем матрицы по строкам, т.е. друг под другом</p>
<div class="image-container">
<p><b>На этом месте располагается листинг, который не может быть правильно отображен в rss-ленте. Перейдите к оригинальной статье: <a href='http://inclab.ru/articles/specialnye-matrichnye-funkcii'>http://inclab.ru/articles/specialnye-matrichnye-funkcii</a></b></p>
</div>	

<p class="text-center"> 
\( 
  \begin{matrix}  
  A = \begin{pmatrix}
  1 & 2 \\
  3 & 4 
  \end{pmatrix} &
  B = \begin{pmatrix}
  5 & 6 \\
  7 & 8 
  \end{pmatrix}     &
  C = \begin{pmatrix}
  1 & 2 \\
  3 & 4 \\  
  5 & 6 \\
  7 & 8 
  \end{pmatrix}   
   \end{matrix}
   \)  
 </p>

<p>Объединяем вектора (массивы) по строкам, т.е. друг под другом</p>
<div class="image-container">
<p><b>На этом месте располагается листинг, который не может быть правильно отображен в rss-ленте. Перейдите к оригинальной статье: <a href='http://inclab.ru/articles/specialnye-matrichnye-funkcii'>http://inclab.ru/articles/specialnye-matrichnye-funkcii</a></b></p>
</div>	

<p class="text-center"> 
\( 
  \begin{matrix}  
  A = \begin{pmatrix}
  1 & 2 & 3 & 4
   
  \end{pmatrix} &
  B = \begin{pmatrix}
  5 & 6 & 7 & 8
   
  \end{pmatrix}     &
  C = \begin{pmatrix}
 	1 & 2 & 3 & 4\\
	5 & 6 & 7 & 8
  \end{pmatrix}   
   \end{matrix}
   \)  
 </p>

<p>Склеиваем матрицы по столбцам, т.е. друг за другом</p>
<div class="image-container">
<p><b>На этом месте располагается листинг, который не может быть правильно отображен в rss-ленте. Перейдите к оригинальной статье: <a href='http://inclab.ru/articles/specialnye-matrichnye-funkcii'>http://inclab.ru/articles/specialnye-matrichnye-funkcii</a></b></p>
</div>	

<p class="text-center"> 
\( 
  \begin{matrix}  
  A = \begin{pmatrix}
  1 & 2 \\
  3 & 4 
  \end{pmatrix} &
  B = \begin{pmatrix}
  5 & 6 \\
  7 & 8 
  \end{pmatrix}     &
  C = \begin{pmatrix}
  1 & 2 & 5 & 6 \\
  3 & 4 & 7 & 8
  \end{pmatrix}   
   \end{matrix}
   \)  
 </p>

<p>Объединяем вектора (массивы) по столбцам, т.е. друг за другом</p>
<div class="image-container">
<p><b>На этом месте располагается листинг, который не может быть правильно отображен в rss-ленте. Перейдите к оригинальной статье: <a href='http://inclab.ru/articles/specialnye-matrichnye-funkcii'>http://inclab.ru/articles/specialnye-matrichnye-funkcii</a></b></p>
</div>	

<p class="text-center"> 
\( 
  \begin{matrix}  
  A = \begin{pmatrix}
  1 & 2 & 3 & 4
   
  \end{pmatrix} &
  B = \begin{pmatrix}
  5 & 6 & 7 & 8
   
  \end{pmatrix}     &
  C = \begin{pmatrix}
 	1 & 2 & 3 & 4 & 5 & 6 & 7 & 8 	
  \end{pmatrix}   
   \end{matrix}
   \)  
 </p>




<h3 style="font-weight: normal"><em>Сортируем элементы матриц/векторов</em>: функция <em>gsort(A,option,direction) </em> в Scilab</h3>

<p><em>option</em> - символьная строка. Она задаёт тип требуемой сортировки:<br/>
'r' - сортируется каждый столбец A<br/>
'c' - сортируется каждая строка A<br/>
'g' - сортируются все элементы A. Это значение по умолчанию.</p>

<p><em>direction</em> - символьная строка. Она задаёт направление сортировки:<br/>
'i' устанавливает порядок возрастания, <br/>
'd' устанавливает порядок убывания (по умолчанию).</p>
<div class="image-container">
<p><b>На этом месте располагается листинг, который не может быть правильно отображен в rss-ленте. Перейдите к оригинальной статье: <a href='http://inclab.ru/articles/specialnye-matrichnye-funkcii'>http://inclab.ru/articles/specialnye-matrichnye-funkcii</a></b></p>
</div>	

<p class="text-center"> 
\( 
  \begin{matrix}  
  A = \begin{pmatrix}
  7 & 2 \\
  4 & 10 
  \end{pmatrix} &
  
  B_1 = \begin{pmatrix}
  7 & 10 \\
  4 & 2 
  \end{pmatrix}   &
  
  B_2 = \begin{pmatrix}
  7 & 2 \\
  10 & 4 
  \end{pmatrix} &
  
  B_3 = \begin{pmatrix}
  10 & 4 \\
  7 & 2 
  \end{pmatrix} &
  
  B_4 = \begin{pmatrix}
  2 & 7 \\
  4 & 10 
  \end{pmatrix} 
  
   \end{matrix}
   \)  
 </p>


<h2>Функции вычисления различных характеристик матриц/векторов</h2>
<h3 style="font-weight: normal"><em>Определяем размер матриц/векторов</em>: функция <em>size(A,option) </em> в Scilab</h3>

<p><em>option</em> - символьная строка. Она возволяет определить:<br/>
'r' - число строк матрицы A<br/>
'c' - число столбцов матрицы A.</p>

<div class="image-container">
<p><b>На этом месте располагается листинг, который не может быть правильно отображен в rss-ленте. Перейдите к оригинальной статье: <a href='http://inclab.ru/articles/specialnye-matrichnye-funkcii'>http://inclab.ru/articles/specialnye-matrichnye-funkcii</a></b></p>
</div>	

<p class="text-center"> 
\( 
  \begin{matrix}  
  A = \begin{pmatrix}
  7 & 2 & 1\\
  3 & 4 & 10 
  \end{pmatrix} &
  
  m = 2   &    n = 3  
   \end{matrix}
   \)  
 </p>


<h3 style="font-weight: normal"><em>Найдём сумму элементов массива/матрицы</em>: функция <em>sum(A,option) </em>в Scilab</h3>

<p><em>option</em> - символьная строка. Она возволяет определить:<br/>
'r' - поэлементную сумму строк матрицы A. Возвращает строку.<br/>
'c' - поэлементную сумму столбцов матрицы A. Возвращает столбец.</p>
<p>Если <em>option</em> отсутствует, то возвращается сумма всех элементов.</p>
<div class="image-container">
<p><b>На этом месте располагается листинг, который не может быть правильно отображен в rss-ленте. Перейдите к оригинальной статье: <a href='http://inclab.ru/articles/specialnye-matrichnye-funkcii'>http://inclab.ru/articles/specialnye-matrichnye-funkcii</a></b></p>
</div>	

<p class="text-center"> 
\( 
  \begin{matrix}  
  A = \begin{pmatrix}
  7 & 2 & 1\\
  3 & 4 & 10 
  \end{pmatrix} &
  
  R = \begin{pmatrix}
  10 & 6 & 11
  \end{pmatrix}&
  
  V = \begin{pmatrix}
  10 \\ 17
  \end{pmatrix} &
  S = 27
  
   \end{matrix}
   \)  
 </p>


<h3 style="font-weight: normal"><em>Найдём произведение элементов массива/матрицы</em>: функция <em>prod(A,option) </em> в Scilab</h3>

<p><em>option</em> - символьная строка. Она возволяет определить:<br/>
'r' - поэлементное произведение строк матрицы A. Возвращает строку.<br/>
'c' - поэлементное произведение столбцов матрицы A. Возвращает столбец.</p>
<p>Если <em>option</em> отсутствует, то возвращается произведение всех элементов.</p>
<div class="image-container">
<p><b>На этом месте располагается листинг, который не может быть правильно отображен в rss-ленте. Перейдите к оригинальной статье: <a href='http://inclab.ru/articles/specialnye-matrichnye-funkcii'>http://inclab.ru/articles/specialnye-matrichnye-funkcii</a></b></p>
</div>	

<p class="text-center"> 
\( 
  \begin{matrix}  
  A = \begin{pmatrix}
  7 & 2 & 1\\
  3 & 4 & 10 
  \end{pmatrix} &
  
  R = \begin{pmatrix}
  21 & 8 & 10
  \end{pmatrix}&
  
  V = \begin{pmatrix}
  14 \\ 120
  \end{pmatrix} &
  P = 1680
  
   \end{matrix}
   \)  
 </p>


<h3 style="font-weight: normal"><em>Найдём наибольший элемент массива/матрицы</em>: функция <em>max(A,option) </em> в Scilab</h3>

<p><em>option</em> - символьная строка. Она возволяет определить:<br/>
'r' - наибольший элемент в каждом столбце матрицы A. Возвращает строку.<br/>
'c' - наибольший элемент в каждой строке матрицы A. Возвращает столбец.</p>
<p>Если <em>option</em> отсутствует, то возвращается наибольший элемент во всей матрице.</p>
<div class="image-container">
<p><b>На этом месте располагается листинг, который не может быть правильно отображен в rss-ленте. Перейдите к оригинальной статье: <a href='http://inclab.ru/articles/specialnye-matrichnye-funkcii'>http://inclab.ru/articles/specialnye-matrichnye-funkcii</a></b></p>
</div>	

<p class="text-center"> 
\( 
  \begin{matrix}  
  A = \begin{pmatrix}
  7 & 2 & 1\\
  3 & 4 & 10 
  \end{pmatrix} &
  
  R = \begin{pmatrix}
  7 & 4 & 10
  \end{pmatrix}&
  
  V = \begin{pmatrix}
  7 \\ 10
  \end{pmatrix} &
  M = 10
  
   \end{matrix}
   \)  
 </p>


<h3 style="font-weight: normal"><em>Найдём наименьший элемент массива/матрицы</em>: функция <em>min(A,option) </em> в Scilab</h3>
<p><em>option</em> - символьная строка. Она возволяет определить:<br/>
'r' - наименьший элемент в каждом столбце матрицы A. Возвращает строку.<br/>
'c' - наименьший элемент в каждой строке матрицы A. Возвращает столбец.</p>
<p>Если <em>option</em> отсутствует, то возвращается наименьший элемент во всей матрице.</p>
<div class="image-container">
<p><b>На этом месте располагается листинг, который не может быть правильно отображен в rss-ленте. Перейдите к оригинальной статье: <a href='http://inclab.ru/articles/specialnye-matrichnye-funkcii'>http://inclab.ru/articles/specialnye-matrichnye-funkcii</a></b></p>
</div>	

<p class="text-center"> 
\( 
  \begin{matrix}  
  A = \begin{pmatrix}
  7 & 2 & 1\\
  3 & 4 & 10 
  \end{pmatrix} &
  
  R = \begin{pmatrix}
  3 & 2 & 1
  \end{pmatrix}&
  
  V = \begin{pmatrix}
  1 \\ 3
  \end{pmatrix} &
  M = 1
  
   \end{matrix}
   \)  
 </p>

<h3 style="font-weight: normal"><em>Найдём среднее значение массива/матрицы</em>: функция <em>mean(A,option) </em> в Scilab</h3>
<p><em>option</em> - символьная строка. Она возволяет определить:<br/>
'r' - среднее значение в каждом столбце матрицы A. Возвращает строку.<br/>
'c' - среднее значение в каждой строке матрицы A. Возвращает столбец.</p>
<p>Если <em>option</em> отсутствует, то возвращается среднее значение всей матрицы.</p>
<div class="image-container">
<p><b>На этом месте располагается листинг, который не может быть правильно отображен в rss-ленте. Перейдите к оригинальной статье: <a href='http://inclab.ru/articles/specialnye-matrichnye-funkcii'>http://inclab.ru/articles/specialnye-matrichnye-funkcii</a></b></p>
</div>	

<p class="text-center"> 
\( 
  \begin{matrix}  
  A = \begin{pmatrix}
  7 & 2 & 1\\
  3 & 4 & 10 
  \end{pmatrix} &
  
  R = \begin{pmatrix}
  5 & 3 & 5.5
  \end{pmatrix}&
  
  V = \begin{pmatrix}
  3.3333 \\ 5.6666
  \end{pmatrix} &
  M = 4.5
  
   \end{matrix}
   \)  
 </p>

<p>Основные функции для работы с матрицами рассмотрены в статье <a href="https://inclab.ru/beginner/odnomernye-i-mnogomernye-massivy-v-skilabe">Массивы в Scilab</a>.</p>



<p>Оригинальный адрес статьи: <a href='http://inclab.ru/articles/specialnye-matrichnye-funkcii'>http://inclab.ru/articles/specialnye-matrichnye-funkcii</a><p>]]></description>
			<pubDate>Mon, 27 Jun 2022 21:50:51 +0400</pubDate>
		</item>
		<item>
			<title><![CDATA[Линии, многоугольники, эллипсы, сектора в Scilab]]></title>
			<link>http://inclab.ru/articles/risuem-geometricheskie-obekty-v-scilab</link>
			<guid>http://inclab.ru/articles/risuem-geometricheskie-obekty-v-scilab</guid>
			<description><![CDATA[<img src="http://inclab.ru" />Примеры того, как нарисовать сложные фигуры в Scilab<p>Рассмотрим, как в Scilab строить эллипсы, прямоугольники и произвольные геометрические фигуры.</p>

<h2>Прямая линия</h2>
<p>Начнём с простого примера построения линии.</p>
<p>Прежде всего, сделаем заготовку графической области, на которой будем рисовать</p>
<div class="image-container">
<p><b>На этом месте располагается листинг, который не может быть правильно отображен в rss-ленте. Перейдите к оригинальной статье: <a href='http://inclab.ru/articles/risuem-geometricheskie-obekty-v-scilab'>http://inclab.ru/articles/risuem-geometricheskie-obekty-v-scilab</a></b></p>
<span class="image-description text-italic">Неизменная часть для всех рисуночков</span>
</div>	 
<div class="image-container" itemscope itemtype="http://schema.org/ImageObject">
    <picture>
        <source type="image/webp" srcset="/images/articles/risuem-geometricheskie-obekty-v-scilab/k4uqpw/kvadratnaya-oblast-s-setkoy-v-scilab.webp"/>
        <img class="image-in-container" src="http://inclab.ru/images/articles/risuem-geometricheskie-obekty-v-scilab/k4uqpw/kvadratnaya-oblast-s-setkoy-v-scilab.jpg" itemprop="contentUrl" alt="Квадратная область с сеткой в Scilab" title="Квадратная область с сеткой в Scilab"/>
    </picture>
    <span class="image-description text-italic" itemprop="description">Квадратная область с сеткой в Scilab</span>
</div> 

<p>Для того, чтобы нарисовать прямую нам понадобятся две точки и функция \(plot() \). <br/>Итак, для линии, идущей из точки (-1.5, 0) в (1, 1.5) зададим два массива \(х-ов \) и \(у-ков \) соответственно:</p>
<div class="image-container">
<p><b>На этом месте располагается листинг, который не может быть правильно отображен в rss-ленте. Перейдите к оригинальной статье: <a href='http://inclab.ru/articles/risuem-geometricheskie-obekty-v-scilab'>http://inclab.ru/articles/risuem-geometricheskie-obekty-v-scilab</a></b></p>
<span class="image-description text-italic">Задание вектор-строк координат \(х-ов \) и \(у-ков \)</span>
</div>

<p>А далее просто построим наш график по заданным точкам (которых всего две):</p>
<div class="image-container">
<p><b>На этом месте располагается листинг, который не может быть правильно отображен в rss-ленте. Перейдите к оригинальной статье: <a href='http://inclab.ru/articles/risuem-geometricheskie-obekty-v-scilab'>http://inclab.ru/articles/risuem-geometricheskie-obekty-v-scilab</a></b></p>
<span class="image-description text-italic">Построение прямой по 2м точкам</span>
</div>

<div class="image-container">
<p><b>На этом месте располагается листинг, который не может быть правильно отображен в rss-ленте. Перейдите к оригинальной статье: <a href='http://inclab.ru/articles/risuem-geometricheskie-obekty-v-scilab'>http://inclab.ru/articles/risuem-geometricheskie-obekty-v-scilab</a></b></p>
<span class="image-description text-italic">Немного подправим цвет и жирность прямой</span>
</div>

<div class="image-container">
<p><b>На этом месте располагается листинг, который не может быть правильно отображен в rss-ленте. Перейдите к оригинальной статье: <a href='http://inclab.ru/articles/risuem-geometricheskie-obekty-v-scilab'>http://inclab.ru/articles/risuem-geometricheskie-obekty-v-scilab</a></b></p>
<span class="image-description text-italic">Добавим соединительные пипульки и увеличим их размер</span>
</div>

<p>В итоге получим зелёную полужирную прямую с кругляшами на концах:</p>

<div class="image-container" itemscope itemtype="http://schema.org/ImageObject">
    <picture>
        <source type="image/webp" srcset="/images/articles/risuem-geometricheskie-obekty-v-scilab/1clu3zc/pryamaya-liniya-v-scilab.webp"/>
        <img class="image-in-container" src="http://inclab.ru/images/articles/risuem-geometricheskie-obekty-v-scilab/1clu3zc/pryamaya-liniya-v-scilab.jpg" itemprop="contentUrl" alt="Прямая линия в Scilab" title="Прямая линия в Scilab"/>
    </picture>
    <span class="image-description text-italic" itemprop="description">Прямая линия в Scilab</span>
</div> 

<h2>Ломаная линия</h2>
<p>Эту линию, конечно, можно продолжить, просто добавив новые элементы в массивы  \(xpts \), \(ypts \):</p>
<div class="image-container">
<p><b>На этом месте располагается листинг, который не может быть правильно отображен в rss-ленте. Перейдите к оригинальной статье: <a href='http://inclab.ru/articles/risuem-geometricheskie-obekty-v-scilab'>http://inclab.ru/articles/risuem-geometricheskie-obekty-v-scilab</a></b></p>
<span class="image-description text-italic">Рисуем произвольную ломаную в Scilab</span>
</div>	 
<div class="image-container" itemscope itemtype="http://schema.org/ImageObject">
    <picture>
        <source type="image/webp" srcset="/images/articles/risuem-geometricheskie-obekty-v-scilab/4ve1cy/lomanaya-liniya-v-scilab.webp"/>
        <img class="image-in-container" src="http://inclab.ru/images/articles/risuem-geometricheskie-obekty-v-scilab/4ve1cy/lomanaya-liniya-v-scilab.jpg" itemprop="contentUrl" alt="Ломаная линия в Scilab" title="Ломаная линия в Scilab"/>
    </picture>
    <span class="image-description text-italic" itemprop="description">Ломаная линия в Scilab</span>
</div> 


<h2>Произвольный многоугольник</h2>
<p>Из линии можно сделать многоуголиник, если в массивы  координат последними элементами добавить их начальные значения: </p>
<div class="image-container">
<p><b>На этом месте располагается листинг, который не может быть правильно отображен в rss-ленте. Перейдите к оригинальной статье: <a href='http://inclab.ru/articles/risuem-geometricheskie-obekty-v-scilab'>http://inclab.ru/articles/risuem-geometricheskie-obekty-v-scilab</a></b></p>
<span class="image-description text-italic">Фигура по точкам в Scilab</span>
</div>	 
<div class="image-container" itemscope itemtype="http://schema.org/ImageObject">
    <picture>
        <source type="image/webp" srcset="/images/articles/risuem-geometricheskie-obekty-v-scilab/ur9qxb/nepravilnyy-mnogougolnik-v-scilab.webp"/>
        <img class="image-in-container" src="http://inclab.ru/images/articles/risuem-geometricheskie-obekty-v-scilab/ur9qxb/nepravilnyy-mnogougolnik-v-scilab.jpg" itemprop="contentUrl" alt="Неправильный многоугольник в Scilab" title="Неправильный многоугольник в Scilab"/>
    </picture>
    <span class="image-description text-italic" itemprop="description">Неправильный многоугольник в Scilab</span>
</div> 

<p>Этот многоугольник можно закрасить, используя способ 1 <b>polyline_style</b>: </p>
<div class="image-container">
<p><b>На этом месте располагается листинг, который не может быть правильно отображен в rss-ленте. Перейдите к оригинальной статье: <a href='http://inclab.ru/articles/risuem-geometricheskie-obekty-v-scilab'>http://inclab.ru/articles/risuem-geometricheskie-obekty-v-scilab</a></b></p>
<span class="image-description text-italic">Закрашиваем многоугольник в Scilab</span>
</div>	 
<div class="image-container" itemscope itemtype="http://schema.org/ImageObject">
    <picture>
        <source type="image/webp" srcset="/images/articles/risuem-geometricheskie-obekty-v-scilab/r5b5wo/zakrashennyy-mnogougolnik-v-scilab.webp"/>
        <img class="image-in-container" src="http://inclab.ru/images/articles/risuem-geometricheskie-obekty-v-scilab/r5b5wo/zakrashennyy-mnogougolnik-v-scilab.jpg" itemprop="contentUrl" alt="Закрашенный многоугольник в Scilab" title="Закрашенный многоугольник в Scilab"/>
    </picture>
    <span class="image-description text-italic" itemprop="description">Закрашенный многоугольник в Scilab</span>
</div> 

<p>Если же требуется более тонкая настрока цветов, то нуно прибегнуть к способу 2 и вместо <b>polyline_style</b> испольщовать <b>fill_mode</b> и <b>closed</b>. При этом, замыкать ломаную вручную необязательно: </p>
<div class="image-container">
<p><b>На этом месте располагается листинг, который не может быть правильно отображен в rss-ленте. Перейдите к оригинальной статье: <a href='http://inclab.ru/articles/risuem-geometricheskie-obekty-v-scilab'>http://inclab.ru/articles/risuem-geometricheskie-obekty-v-scilab</a></b></p>
<span class="image-description text-italic">Закрашиваем и замыкаем многоугольник в Scilab</span>
</div>	 
<div class="image-container" itemscope itemtype="http://schema.org/ImageObject">
    <picture>
        <source type="image/webp" srcset="/images/articles/risuem-geometricheskie-obekty-v-scilab/d8dpvx/zakrashennyy-mnogougolnik-v-scilab.webp"/>
        <img class="image-in-container" src="http://inclab.ru/images/articles/risuem-geometricheskie-obekty-v-scilab/d8dpvx/zakrashennyy-mnogougolnik-v-scilab.jpg" itemprop="contentUrl" alt="Закрашенный многоугольник в Scilab" title="Закрашенный многоугольник в Scilab"/>
    </picture>
    <span class="image-description text-italic" itemprop="description">Закрашенный многоугольник в Scilab</span>
</div> 

<h2>Правильный n-угольник</h2>
<p>Теперь, когда мы натренеровались строить и настравивать отображение фигур в Scilab, построим правильный многоугольник, вписанный в единичную окружность. </p>
<div class="image-container">
<p><b>На этом месте располагается листинг, который не может быть правильно отображен в rss-ленте. Перейдите к оригинальной статье: <a href='http://inclab.ru/articles/risuem-geometricheskie-obekty-v-scilab'>http://inclab.ru/articles/risuem-geometricheskie-obekty-v-scilab</a></b></p>
<span class="image-description text-italic">Зададим массивы для ординат и абсцисс</span>
</div>	 

<div class="image-container">
<p><b>На этом месте располагается листинг, который не может быть правильно отображен в rss-ленте. Перейдите к оригинальной статье: <a href='http://inclab.ru/articles/risuem-geometricheskie-obekty-v-scilab'>http://inclab.ru/articles/risuem-geometricheskie-obekty-v-scilab</a></b></p>
<span class="image-description text-italic">Зададим количество углов и сразу посчитаем градус одного угла</span>
</div>
<p>Осталось в цикле вычислисть все \(х-ы\) и \(у-ки\).<br/> 
  Для этого, мы будем \(angles\)-раз крутить вектор, который прикреплён в начале координат, каждый раз увеличивая угол поворота на \(degreeStep\).</p> 
<p>Следовательно, интересующие нас координаты - это \(cos() \) и \(sin()\) текущего угла.<br/> 
  А чтобы начинать движение из точки (0, 1), нужно прибавить \( \pi/2 \) к текущему углу:</p>

<div class="image-container">
<p><b>На этом месте располагается листинг, который не может быть правильно отображен в rss-ленте. Перейдите к оригинальной статье: <a href='http://inclab.ru/articles/risuem-geometricheskie-obekty-v-scilab'>http://inclab.ru/articles/risuem-geometricheskie-obekty-v-scilab</a></b></p>
<span class="image-description text-italic">Цикл для вычисления координат вершин правильного многоугольника</span>
</div>

<p>Нарисуем правильный пятиугольник в Scilab, замкнув ломаную и изменим толщину линий и их цвет на графике</p>
<div class="image-container">
<p><b>На этом месте располагается листинг, который не может быть правильно отображен в rss-ленте. Перейдите к оригинальной статье: <a href='http://inclab.ru/articles/risuem-geometricheskie-obekty-v-scilab'>http://inclab.ru/articles/risuem-geometricheskie-obekty-v-scilab</a></b></p>
</div>

<div class="image-container" itemscope itemtype="http://schema.org/ImageObject">
    <picture>
        <source type="image/webp" srcset="/images/articles/risuem-geometricheskie-obekty-v-scilab/1q84tjc/pravilnyy-mnogougolnik-v-scilab.webp"/>
        <img class="image-in-container" src="http://inclab.ru/images/articles/risuem-geometricheskie-obekty-v-scilab/1q84tjc/pravilnyy-mnogougolnik-v-scilab.jpg" itemprop="contentUrl" alt="Правильный многоугольник в Scilab" title="Правильный многоугольник в Scilab"/>
    </picture>
    <span class="image-description text-italic" itemprop="description">Правильный многоугольник в Scilab</span>
</div> 


<p>Эту задачу можно решить и другим способом - с помощью \(xpoly()\)</p>
<div class="image-container">
<p><b>На этом месте располагается листинг, который не может быть правильно отображен в rss-ленте. Перейдите к оригинальной статье: <a href='http://inclab.ru/articles/risuem-geometricheskie-obekty-v-scilab'>http://inclab.ru/articles/risuem-geometricheskie-obekty-v-scilab</a></b></p>
  <span class="image-description text-italic">Рисуем правильный многоугольник в Scilab</span>
</div>

<div class="image-container" itemscope itemtype="http://schema.org/ImageObject">
    <picture>
        <source type="image/webp" srcset="/images/articles/risuem-geometricheskie-obekty-v-scilab/103u9vv/pravilnyy-mnogougolnik-s-pomoschyu-xpoly.webp"/>
        <img class="image-in-container" src="http://inclab.ru/images/articles/risuem-geometricheskie-obekty-v-scilab/103u9vv/pravilnyy-mnogougolnik-s-pomoschyu-xpoly.jpg" itemprop="contentUrl" alt="Правильный многоугольник с помощью xpoly()" title="Правильный многоугольник с помощью xpoly()"/>
    </picture>
    <span class="image-description text-italic" itemprop="description">Правильный многоугольник с помощью xpoly()</span>
</div> 

<p>Для того, чтобы нарисовать закрашенный многоугольник, нужно использовать функцию \(xfpoly()\)</p>
<div class="image-container">
<p><b>На этом месте располагается листинг, который не может быть правильно отображен в rss-ленте. Перейдите к оригинальной статье: <a href='http://inclab.ru/articles/risuem-geometricheskie-obekty-v-scilab'>http://inclab.ru/articles/risuem-geometricheskie-obekty-v-scilab</a></b></p>
  <span class="image-description text-italic">Рисуем правильный многоугольник в Scilab</span>
</div>
<div class="image-container" itemscope itemtype="http://schema.org/ImageObject">
    <picture>
        <source type="image/webp" srcset="/images/articles/risuem-geometricheskie-obekty-v-scilab/17ffpnm/pravilnyy-mnogougolnik-s-pomoschyu-xfpoly.webp"/>
        <img class="image-in-container" src="http://inclab.ru/images/articles/risuem-geometricheskie-obekty-v-scilab/17ffpnm/pravilnyy-mnogougolnik-s-pomoschyu-xfpoly.jpg" itemprop="contentUrl" alt="Правильный многоугольник с помощью xfpoly()" title="Правильный многоугольник с помощью xfpoly()"/>
    </picture>
    <span class="image-description text-italic" itemprop="description">Правильный многоугольник с помощью xfpoly()</span>
</div> 

<h2>Эллипс</h2>
<p>Для построения эллипса нужно задать 6 значений: </p>
<div class="image-container" itemscope itemtype="http://schema.org/ImageObject">
    <picture>
        <source type="image/webp" srcset="/images/articles/risuem-geometricheskie-obekty-v-scilab/1hocvdb/znacheniya-matricy-ehllipsa.webp"/>
        <img class="image-in-container" src="http://inclab.ru/images/articles/risuem-geometricheskie-obekty-v-scilab/1hocvdb/znacheniya-matricy-ehllipsa.jpg" itemprop="contentUrl" alt="Значения матрицы эллипса" title="Значения матрицы эллипса"/>
    </picture>
    <span class="image-description text-italic" itemprop="description">Значения матрицы эллипса</span>
</div> 
<p>Координаты <b>(xLeftTop, yLeftTop)</b> верхнего левого угла прямоугольника, в который будет вписан эллипс;</p>
<p>Ширину <b>elWidth</b> и Высоту <b>elWidth</b> прямоугольника, в который будет вписан эллипс;</p>
<p>Угол <b>angleStart</b>, откуда будет стартовать дуга эллипса и Угол <b>angleEnd</b>, где дуга остановится.</p>

<p>Для того, чтобы построить изображённый выше эллипс, зададим следующие значения:</p>

<div class="image-container">
<p><b>На этом месте располагается листинг, который не может быть правильно отображен в rss-ленте. Перейдите к оригинальной статье: <a href='http://inclab.ru/articles/risuem-geometricheskie-obekty-v-scilab'>http://inclab.ru/articles/risuem-geometricheskie-obekty-v-scilab</a></b></p>
<span class="image-description text-italic">Задаём параметры эллипса</span>
</div>	 

<p>Сам эллипс по заданным параметрам строится с помощью функции \(xarcs()\):</p>

<div class="image-container">
<p><b>На этом месте располагается листинг, который не может быть правильно отображен в rss-ленте. Перейдите к оригинальной статье: <a href='http://inclab.ru/articles/risuem-geometricheskie-obekty-v-scilab'>http://inclab.ru/articles/risuem-geometricheskie-obekty-v-scilab</a></b></p>
<span class="image-description text-italic">Задаём параметры эллипса</span>
</div>	


<h2>Сектор</h2>
<p>Из эллипса можно строить произвольные сектора, располагая их в желаемом месте на координатной сетке. </p>
<div class="image-container" itemscope itemtype="http://schema.org/ImageObject">
    <picture>
        <source type="image/webp" srcset="/images/articles/risuem-geometricheskie-obekty-v-scilab/1dg57m6/proizvolnye-sektora.webp"/>
        <img class="image-in-container" src="http://inclab.ru/images/articles/risuem-geometricheskie-obekty-v-scilab/1dg57m6/proizvolnye-sektora.jpg" itemprop="contentUrl" alt="Произвольные сектора" title="Произвольные сектора"/>
    </picture>
    <span class="image-description text-italic" itemprop="description">Произвольные сектора</span>
</div> 


<p>Построим два сектора на основе эллипса с заданными параметрами: </p>
<div class="image-container">
<p><b>На этом месте располагается листинг, который не может быть правильно отображен в rss-ленте. Перейдите к оригинальной статье: <a href='http://inclab.ru/articles/risuem-geometricheskie-obekty-v-scilab'>http://inclab.ru/articles/risuem-geometricheskie-obekty-v-scilab</a></b></p>
<span class="image-description text-italic">Рисуем сектора в Scilab с помощью функции xarcs()</span>
</div>	


<h2>Звезда Сименса</h2>
<p>В заключении построим Звезду Сименса  изображение, применяемое для проверки остроты зрения (<a href="https://ru.wikipedia.org/wiki/%D0%97%D0%B2%D0%B5%D0%B7%D0%B4%D0%B0_%D0%A1%D0%B8%D0%BC%D0%B5%D0%BD%D1%81%D0%B0" target="_blank">wiki</a>). </p>

  <div class="image-container" itemscope itemtype="http://schema.org/ImageObject">
    <picture>
        <source type="image/webp" srcset="/images/articles/risuem-geometricheskie-obekty-v-scilab/1phex9o/zvezda-simensa-s-50-luchami.webp"/>
        <img class="image-in-container" src="http://inclab.ru/images/articles/risuem-geometricheskie-obekty-v-scilab/1phex9o/zvezda-simensa-s-50-luchami.jpg" itemprop="contentUrl" alt="Звезда Сименса с 50 лучами" title="Звезда Сименса с 50 лучами"/>
    </picture>
    <span class="image-description text-italic" itemprop="description">Звезда Сименса с 50 лучами</span>
</div> 

  
<div class="image-container">
<p><b>На этом месте располагается листинг, который не может быть правильно отображен в rss-ленте. Перейдите к оригинальной статье: <a href='http://inclab.ru/articles/risuem-geometricheskie-obekty-v-scilab'>http://inclab.ru/articles/risuem-geometricheskie-obekty-v-scilab</a></b></p>
<span class="image-description text-italic">Рисуем закрашенные сектора в цикле в Scilab</span>
</div>	











<p>Оригинальный адрес статьи: <a href='http://inclab.ru/articles/risuem-geometricheskie-obekty-v-scilab'>http://inclab.ru/articles/risuem-geometricheskie-obekty-v-scilab</a><p>]]></description>
			<pubDate>Fri, 24 Jun 2022 00:38:48 +0400</pubDate>
		</item>
		<item>
			<title><![CDATA[Поэтапно создаём нейронку в Scilab]]></title>
			<link>http://inclab.ru/articles/prosteyshaya-neyronnaya-set-na-scilab</link>
			<guid>http://inclab.ru/articles/prosteyshaya-neyronnaya-set-na-scilab</guid>
			<description><![CDATA[<img src="http://inclab.ru" />Рассмотрим поэтапно прямое распространение импульса на примере трёхслойной нейронной сети в Scilab<p>Ранее был рассмотрен вопрос <a href="https://inclab.ru/profi/nastroyka-lineynogo-klassifikatora-scilab">настройки линейного классификатора</a>, как заготовки для понимания принципов машинного обучения.</p>
<p>В даннном материале попробуем углубиться в тему и рассмотрим, как распространяется импульс в искусственной нейронной сети.</p>

<h2>Искусственная нейросеть из 3-х слоёв</h2>
<p>На иллюстрации ниже представлены три слоя нейронки, каждый из которых включает три искусственных нейрона, или узла. Как нетрудно заметить, здесь каждый узел соединен с каждым из узлов предшествующего и последующего слоев.</p>
<div class="image-container" itemscope itemtype="http://schema.org/ImageObject">
    <picture>
        <source type="image/webp" srcset="/images/articles/prosteyshaya-neyronnaya-set-na-scilab/bk9qb/trehsloynaya-neyroset-izobrazhenie-iz-1.webp"/>
        <img class="image-in-container" src="http://inclab.ru/images/articles/prosteyshaya-neyronnaya-set-na-scilab/bk9qb/trehsloynaya-neyroset-izobrazhenie-iz-1.jpg" itemprop="contentUrl" alt="Трёхслойная нейросеть. Изображение из (1)" title="Трёхслойная нейросеть. Изображение из (1)"/>
    </picture>
    <span class="image-description text-italic" itemprop="description">Трёхслойная нейросеть. Изображение из (1)</span>
</div> 
<p>Каждый нейрон принимает сигнал, неким образом его обрабатывает и передаёт дальше.</p>
<h2>Функция активации</h2>
<p>В качестве правила, по которому происходят метаморфозы сигнала внутри нейрона мы будем использовать логистическую функцию вида:</p>
<p class="text-center"> \( \sigma = \displaystyle\frac{1}{1+e^{-x}}  \quad (1) \)  </p>
<p>Функция (1) называется ещё и сигмоидой, она очень популярна в области искусственного интеллекта благодаря своей гладкости и простоте расчётов.</p>
<p>Кроме того, выбранная функция хороша ещё и тем, что если комбинированный сигнал недостаточно сильный, то сигмоида подавляет выходной сигнал, в противном случае
 функция возбуждает нейрон.</p>
<p>Итак, структура сети определена, функция активации выбрана, осталось определить, каким образом наша сеть будет обучаться.</p>

<h2>Весовые коэффициенты</h2>
<p>Величиной, которую мы будем регулировать на основе тренировочных данных, является сила связи между узлами.</p>
<p>При этом, будем считать, что низкий весовой коэффициент ослабляет сигнал, высокий - усиливает его. Как только сеть научится улучшать свои выходные значения путем уточнения весовых коэффициентов, некоторые веса обнулятся  или станут близкими к нулю, что означает фактический разрыв связи.</p>

<p>Определим для каждого соединения его вес:</p>
<div class="image-container" itemscope itemtype="http://schema.org/ImageObject">
    <picture>
        <source type="image/webp" srcset="/images/articles/prosteyshaya-neyronnaya-set-na-scilab/12wbseg/zadanie-vesov-v-neyroseti-izobrazhenie-iz-1.webp"/>
        <img class="image-in-container" src="http://inclab.ru/images/articles/prosteyshaya-neyronnaya-set-na-scilab/12wbseg/zadanie-vesov-v-neyroseti-izobrazhenie-iz-1.jpg" itemprop="contentUrl" alt="Задание весов в нейросети. Изображение из (1)" title="Задание весов в нейросети. Изображение из (1)"/>
    </picture>
    <span class="image-description text-italic" itemprop="description">Задание весов в нейросети. Изображение из (1)</span>
</div> 

<p>Посмотрим внимательно на схему распределения весов.<br/>
<p>Заметим, что весовой коэффициет \(  w_{i,j} \) соответствует сигналу, передаваемому от \(  i-го\) узла текущего слоя к \( j-му\) узлу следующего слоя.</p>
<p>Например к 1-му нейрону 2-го слоя подходят три стрелочки: от 1-го, 2-го и 3-го нейронов 1-го слоя, с весами \( w_{1,1}, w_{2,1}, w_{3,1} \) соотвественно.</p>

<p>Согласно общепрянотой терминологии, мы будем называть слои следуюющим образом:</p> 
<ul> 
<li><p>Первый слой узлов будем называть \(входным\);</p></li> 
<li><p>Последний слой - \(выходным\);</p></li> 
<li><p>А все слои между ними - \(скрытыми\). </p></li> 
</ul>   
  
<h2>Прямое распространение сигнала в нейронной сети</h2>
<p>Приступим к пошаговой реализации распространения сигнала в нашей нейросети.</p> 
<div class="image-container" itemscope itemtype="http://schema.org/ImageObject">
    <picture>
        <source type="image/webp" srcset="/images/articles/prosteyshaya-neyronnaya-set-na-scilab/lumswi/zadanie-vesov-v-neyroseti-izobrazhenie-iz-1.webp"/>
        <img class="image-in-container" src="http://inclab.ru/images/articles/prosteyshaya-neyronnaya-set-na-scilab/lumswi/zadanie-vesov-v-neyroseti-izobrazhenie-iz-1.jpg" itemprop="contentUrl" alt="Задание весов в нейросети. Изображение из (1)" title="Задание весов в нейросети. Изображение из (1)"/>
    </picture>
    <span class="image-description text-italic" itemprop="description">Задание весов в нейросети. Изображение из (1)</span>
</div> 
  
<h3>Входной слой</h3> 
<p>Зададим вектор входных сигналов:</p>
<p class="text-center"> 
\( I = \begin{pmatrix}
  0.9 \\
  0.1 \\
  0.8
  \end{pmatrix} \)  
 </p>

<p>С первым слоем все просто - никаких вычислений.<br/>
Первый слой узлов имеет единственное назначение - представлять входные сигналы. Таким образом, во входных узлах функция активации к входным сигналам не применяется. </p>
<p>Хорошо. что Scilab - матрично-ориентированный язык, поэтому задание вектора входного сигнала будет выглядеть следующим образом:</p>  
<div class="image-container">
<p><b>На этом месте располагается листинг, который не может быть правильно отображен в rss-ленте. Перейдите к оригинальной статье: <a href='http://inclab.ru/articles/prosteyshaya-neyronnaya-set-na-scilab'>http://inclab.ru/articles/prosteyshaya-neyronnaya-set-na-scilab</a></b></p>
<span class="image-description text-italic">Вектор-столбец в Scilab.</span>
</div>	   
  
<h3>Скрытый слой</h3> 
<p>Следующий на очереди - промежуточный слой. <br/>
Для каждого нейрона этого слоя нужно будет посчитать свой вход, к нему применить функцию активации и подать результат на выход нейрона. </p>
<!--p>Чтобы посчитать, что приходит на вход каждого нейрона скрытого слоя необходимо просуммировать выходы предыдущего слоя, помноженные на соответствующие веса.  </p-->
 <h4>Вход скрытого слоя</h4>
<p>Предположим, весовые коэффициенты для связи между <b>входным и скрытым</b> слоями заданы следующим образом:  </p>
  
<p class="text-center"> \( w_{1,1}=0.9, w_{2,1}=0.3, w_{3,1}=0.4 \)  </p>
<p class="text-center"> \( w_{1,2}=0.2, w_{2,2}=0.8, w_{3,2}=0.2 \)  </p>
<p class="text-center"> \( w_{1,3}=0.1, w_{2,3}=0.5, w_{3,3}=0.5 \)  </p>
<p>Индексы весовых коэффициентов показывают откуда куда идут стрелочки.</p>
  
<p>Соответственно, чтобы вычислить <b>вход 1-го нейрона скрытого</b> слоя \( H_{i}(1) \), необдимо взять сумму весов \( w_{1,1}=0.9, w_{2,1}=0.3, w_{3,1}=0.4 \) (стрелочки идут от 1-го, 2-го и 3-го нейрона входного слоя <b>к 1-му нейрону скрытого</b>), умноженных на соответсвующий выход предыдущего слоя:  </p>
<p class="text-center"> 
\( H_{i}(1) = w_{1,1}\cdot I(1) + w_{2,1}\cdot I(2) + w_{3,1}\cdot I(3) = 0.9\cdot0.9 + 0.3\cdot0.1 + 0.4\cdot0.8=1.16 \)  
 </p>
<p>Аналогично вычислим вход 2-го и 3-го нейронов скрытого слоя \( H_{i}(2), H_{i}(3) \):  </p>
<p class="text-center"> 
\( H_{i}(2) = w_{1,2}\cdot I(1) + w_{2,2}\cdot I(2) + w_{3,2}\cdot I(3) = 0.2\cdot0.9 + 0.8\cdot0.1 + 0.2\cdot0.8=0.42 \)   
 </p>  
<p class="text-center"> 
\( H_{i}(3) = w_{1,3}\cdot I(1) + w_{2,3}\cdot I(2) + w_{3,3}\cdot I(3) = 0.1\cdot0.9 + 0.5\cdot0.1 + 0.6\cdot0.8=0.62 \)   
 </p>   
  
<p>Кажется, имеется некоторая закономерность в производимых действиях 	&#128521;. Действительно, если из весовых коэффициентов сформировать матрицу:</p>
 <p class="text-center"> 
\( W_{IH} = \begin{pmatrix}
	w_{1,1} & w_{2,1} & w_{3,1} \\
	w_{1,2} & w_{2,2} & w_{3,2} \\
	w_{1,3} & w_{2,3} & w_{3,3} \\
  \end{pmatrix} \)  
 </p> 
  
<p>То вход скрытого слоя можно отыскать простым матричным умножением:</p>
<p class="text-center"> 
\( H_{i} = W_{IH}\cdot I \quad (2) \)   
 </p> 
  
<p>Зададим матрицу весов входной-скрытый на Scilab:</p>
<div class="image-container">
<p><b>На этом месте располагается листинг, который не может быть правильно отображен в rss-ленте. Перейдите к оригинальной статье: <a href='http://inclab.ru/articles/prosteyshaya-neyronnaya-set-na-scilab'>http://inclab.ru/articles/prosteyshaya-neyronnaya-set-na-scilab</a></b></p>
</div>	 
  
<p>А чтобы посчитать вход скрытого слоя напишем функцию согласно (2):</p>
<div class="image-container">
<p><b>На этом месте располагается листинг, который не может быть правильно отображен в rss-ленте. Перейдите к оригинальной статье: <a href='http://inclab.ru/articles/prosteyshaya-neyronnaya-set-na-scilab'>http://inclab.ru/articles/prosteyshaya-neyronnaya-set-na-scilab</a></b></p>
</div>	  

  
<p>Отобразим входные сигналы для скрытого слоя на диаграмме.</p>
<div class="image-container" itemscope itemtype="http://schema.org/ImageObject">
    <picture>
        <source type="image/webp" srcset="/images/articles/prosteyshaya-neyronnaya-set-na-scilab/18toqsv/vhod-skrytogo-sloya-izobrazhenie-iz-1.webp"/>
        <img class="image-in-container" src="http://inclab.ru/images/articles/prosteyshaya-neyronnaya-set-na-scilab/18toqsv/vhod-skrytogo-sloya-izobrazhenie-iz-1.jpg" itemprop="contentUrl" alt="Вход скрытого слоя. Изображение из (1)" title="Вход скрытого слоя. Изображение из (1)"/>
    </picture>
    <span class="image-description text-italic" itemprop="description">Вход скрытого слоя. Изображение из (1)</span>
</div> 
  
<p>Итак, мы сформировали вектор-столбец входных сигналов скрытого слоя:</p>
<p class="text-center"> 
\( H_i = \begin{pmatrix}
  1.16 \\
  0.42 \\
  0.62
  \end{pmatrix} \)  
 </p>  
<p>Пока что все хорошо, но нам еще остается кое-что сделать.</p>     
  
  
<h4>Выход скрытого слоя</h4>
<p>Как вы помните, чтобы отклик слоя на входной сигнал как можно лучше имитировал аналогичный реальный процесс, мы должны применить к узлам функцию активации. Так и поступим:  </p>
<p class="text-center"> 
\( H_{o} = \sigma(H_i) \quad (3) \)   
 </p>     
<p>Применяя сигмоиду ко входу скрытого слоя, получим его выход:</p>
<p class="text-center"> 
\( H_o = \begin{pmatrix}
  0.761 \\
  0.603 \\
  0.650
  \end{pmatrix} \)  
 </p>   
<div class="image-container" itemscope itemtype="http://schema.org/ImageObject">
    <picture>
        <source type="image/webp" srcset="/images/articles/prosteyshaya-neyronnaya-set-na-scilab/1u60z4b/vhod-i-vyhod-skrytogo-sloya-izobrazhenie-iz-1.webp"/>
        <img class="image-in-container" src="http://inclab.ru/images/articles/prosteyshaya-neyronnaya-set-na-scilab/1u60z4b/vhod-i-vyhod-skrytogo-sloya-izobrazhenie-iz-1.jpg" itemprop="contentUrl" alt="Вход и выход скрытого слоя. Изображение из (1)" title="Вход и выход скрытого слоя. Изображение из (1)"/>
    </picture>
    <span class="image-description text-italic" itemprop="description">Вход и выход скрытого слоя. Изображение из (1)</span>
</div> 
   
<p>В Sciab нет встроенной функции сигмоиды, поэтому напишем свою:</p>
<div class="image-container">
<p><b>На этом месте располагается листинг, который не может быть правильно отображен в rss-ленте. Перейдите к оригинальной статье: <a href='http://inclab.ru/articles/prosteyshaya-neyronnaya-set-na-scilab'>http://inclab.ru/articles/prosteyshaya-neyronnaya-set-na-scilab</a></b></p>
</div>	
<p>Заметьте, что в функции присутствует "./" - это поэлементное деление в Scilab, так как в качестве параметра мы передаём вектор 	&#128526;</p>  
<p>И применим её ко входу скрытого слоя:</p>
<div class="image-container">
<p><b>На этом месте располагается листинг, который не может быть правильно отображен в rss-ленте. Перейдите к оригинальной статье: <a href='http://inclab.ru/articles/prosteyshaya-neyronnaya-set-na-scilab'>http://inclab.ru/articles/prosteyshaya-neyronnaya-set-na-scilab</a></b></p>
</div>	  
  
  
<p>Функция \( roundToDecimal(\cdot, \cdot); \) нам нужна, чтобы округлять результат до нужного знака после запятой. Выглядит она предельно просто:</p>
<div class="image-container">
<p><b>На этом месте располагается листинг, который не может быть правильно отображен в rss-ленте. Перейдите к оригинальной статье: <a href='http://inclab.ru/articles/prosteyshaya-neyronnaya-set-na-scilab'>http://inclab.ru/articles/prosteyshaya-neyronnaya-set-na-scilab</a></b></p>
</div>	  
    

  <h3>Выходной слой</h3> 
<p>Для выходного слоя задача прохождения сигнала (О чудо!) ничем не отличается от предыдущего шага!</p> 
<p>Перелесть проделанных на шаге 2 действий в том, что сколько бы слоёв ни было в нашей сети, <b>вход каждого</b> из них будет вычисляться путём умножения соответствующей матрицы весов и на выход предыдущего слоя, а <b>его выход</b> - путём применениия функции активации к полученному результату &#128079;</p>  
    
<p>Итак, по  аналогии со скрытым слоем, зададим матрицу весовых коэффициентов скрытый-выходной:</p> 
 <p class="text-center"> 
\( W_{HO} = \begin{pmatrix}
	w_{1,1} & w_{2,1} & w_{3,1} \\
	w_{1,2} & w_{2,2} & w_{3,2} \\
	w_{1,3} & w_{2,3} & w_{3,3} \\
  \end{pmatrix} =
\begin{pmatrix}
	0.3 & 0.7 & 0.5 \\
	0.6 & 0.5 & 0.2 \\
	0.8 & 0.1 & 0.9 \\
  \end{pmatrix}   
   \)  
 </p> 
      
<p>И посчитаем вход выходного слоя:</p> 
 <p class="text-center"> 
\( O_i = W_{HO}\cdot I_o = 
   
   \begin{pmatrix}
	0.3 & 0.7 & 0.5 \\
	0.6 & 0.5 & 0.2 \\
	0.8 & 0.1 & 0.9 \\
  \end{pmatrix} \cdot 
\begin{pmatrix}
  0.761 \\
  0.603 \\
  0.650
  \end{pmatrix} =    
   \begin{pmatrix}
  0.975 \\
  0.888 \\
  1.254
  \end{pmatrix} 
   \)  
 </p>   
  
<!--p>Вектор-столбец входных сигналов выходного слоя получился:</p>
<p class="text-center"> 
\( O_i = \begin{pmatrix}
  0.975 \\
  0.888 \\
  1.254
  \end{pmatrix} \)  
 </p-->    
  
<p>Все, что нам остается,  это применить сигмоиду к \( O_i \)  </p>
<p class="text-center"> 
\( O_o = \sigma \begin{pmatrix}
  0.975 \\
  0.888 \\
  1.254
  \end{pmatrix}  =
  \begin{pmatrix}
  0.726 \\
  0.708 \\
  0.778
  \end{pmatrix} \) 
  
 </p>  
  
<p>И, наконец, мы получили сигналы на выходе нейронной сейти:</p>   
<div class="image-container" itemscope itemtype="http://schema.org/ImageObject">
    <picture>
        <source type="image/webp" srcset="/images/articles/prosteyshaya-neyronnaya-set-na-scilab/ghw0pa/vhod-i-vyhod-vyhodnogo-sloya-izobrazhenie-iz-1.webp"/>
        <img class="image-in-container" src="http://inclab.ru/images/articles/prosteyshaya-neyronnaya-set-na-scilab/ghw0pa/vhod-i-vyhod-vyhodnogo-sloya-izobrazhenie-iz-1.jpg" itemprop="contentUrl" alt="Вход и выход выходного слоя. Изображение из (1)" title="Вход и выход выходного слоя. Изображение из (1)"/>
    </picture>
    <span class="image-description text-italic" itemprop="description">Вход и выход выходного слоя. Изображение из (1)</span>
</div> 
     
<p>Проделаем те же действия в Scilab:</p>
<div class="image-container">
<p><b>На этом месте располагается листинг, который не может быть правильно отображен в rss-ленте. Перейдите к оригинальной статье: <a href='http://inclab.ru/articles/prosteyshaya-neyronnaya-set-na-scilab'>http://inclab.ru/articles/prosteyshaya-neyronnaya-set-na-scilab</a></b></p>
  <span class="image-description text-italic">Задание матрицы весов скрытый-выходной в Scilab.</span>
</div>	  
<div class="image-container">
<p><b>На этом месте располагается листинг, который не может быть правильно отображен в rss-ленте. Перейдите к оригинальной статье: <a href='http://inclab.ru/articles/prosteyshaya-neyronnaya-set-na-scilab'>http://inclab.ru/articles/prosteyshaya-neyronnaya-set-na-scilab</a></b></p>
  <span class="image-description text-italic">Вычисление входа выходного слоя в Scilab.</span>
</div>	  
<div class="image-container">
<p><b>На этом месте располагается листинг, который не может быть правильно отображен в rss-ленте. Перейдите к оригинальной статье: <a href='http://inclab.ru/articles/prosteyshaya-neyronnaya-set-na-scilab'>http://inclab.ru/articles/prosteyshaya-neyronnaya-set-na-scilab</a></b></p>
  <span class="image-description text-italic">Вычисление выхода выходного слоя в Scilab.</span>
</div>	   
 
<p>Итак, нам удалось успешно описать прямое распространение сигналов по нейросети, т.е. определить величину выходных сигналов при заданных величинах входных сигналов. </p>

<h3>Цикл для прямого распределения сигнала в нейронке</h3>   
  
<p>Рассмотренный пошаговый метод, конечно, имеет место быть, но при увеличении числа слоёв и нейронов в слое, нам придётся многократно повторять одни и те же действия. Поэтому облегчим себе жизнь с помощью циклической обработки однотипных действий. </p> 
  
<p>Соберём все собственные функции:</p>   
<div class="image-container">
<p><b>На этом месте располагается листинг, который не может быть правильно отображен в rss-ленте. Перейдите к оригинальной статье: <a href='http://inclab.ru/articles/prosteyshaya-neyronnaya-set-na-scilab'>http://inclab.ru/articles/prosteyshaya-neyronnaya-set-na-scilab</a></b></p>
  <span class="image-description text-italic">Кастомные функции Scilab.</span>
</div>	   
  
<p>Зададим желаемое число нейронов и слоёв в нейросети:</p>   
<div class="image-container">
<p><b>На этом месте располагается листинг, который не может быть правильно отображен в rss-ленте. Перейдите к оригинальной статье: <a href='http://inclab.ru/articles/prosteyshaya-neyronnaya-set-na-scilab'>http://inclab.ru/articles/prosteyshaya-neyronnaya-set-na-scilab</a></b></p>
  <span class="image-description text-italic">Ограничимся 3-мя нейронами и 3-мя слоями, чтобы сверить результаты</span>
</div>	
<p>И сгенерируем заготовку для сети:</p>   
<div class="image-container">
<p><b>На этом месте располагается листинг, который не может быть правильно отображен в rss-ленте. Перейдите к оригинальной статье: <a href='http://inclab.ru/articles/prosteyshaya-neyronnaya-set-na-scilab'>http://inclab.ru/articles/prosteyshaya-neyronnaya-set-na-scilab</a></b></p>
</div>  
<p class="text-center"> 
\( 
  neuralNetwork = \begin{pmatrix}
  0 & 0 & 0\\
  0 & 0 & 0\\
  0 & 0 & 0
  \end{pmatrix}   
  \)  
 </p>  
  
  
<p>Первый столбец в матрице сети- это входной вектор \( I \). Зададим первый стобец матрицы, как в разобранном примере:</p>   
<div class="image-container">
<p><b>На этом месте располагается листинг, который не может быть правильно отображен в rss-ленте. Перейдите к оригинальной статье: <a href='http://inclab.ru/articles/prosteyshaya-neyronnaya-set-na-scilab'>http://inclab.ru/articles/prosteyshaya-neyronnaya-set-na-scilab</a></b></p>
</div>    
<p class="text-center"> 
\( 
  neuralNetwork = \begin{pmatrix}
  0.9 & 0 & 0\\
  0.1 & 0 & 0\\
  0.8 & 0 & 0
  \end{pmatrix}   
  \)  
 </p>   
  
<p>Далее необходимо задать матрицы весов. Чтобы с ними было удобно работать, объединим матрицы в гипер-структуру - список \(  list();  \) и зададим две матрицы \( W_{IH}, W_{HO} \), как в примере выше: </p>   
<div class="image-container">
<p><b>На этом месте располагается листинг, который не может быть правильно отображен в rss-ленте. Перейдите к оригинальной статье: <a href='http://inclab.ru/articles/prosteyshaya-neyronnaya-set-na-scilab'>http://inclab.ru/articles/prosteyshaya-neyronnaya-set-na-scilab</a></b></p>
  <span class="image-description text-italic">Создаём массив массивов в Scilab.</span>  
</div>  
  
<p> Теперь элемент списка \(  weightMatrixes();  \) - это целиком весовая матрица: </p>     
  
<p class="text-center"> 
\( 
  \begin{matrix}
  weightMatrixes(1) = \begin{pmatrix}
   0.9 &  0.3 &  0.4\\
   0.2 &  0.8 &  0.2\\
   0.1 &  0.5 &  0.6
  \end{pmatrix}   &
   weightMatrixes(2) = \begin{pmatrix}
 	0.3 &  0.7 &  0.5\\
   0.6 &  0.5 &  0.2\\
   0.8 &  0.1 &  0.9
  \end{pmatrix}
  \end{matrix} 
  \)  
 </p>   
  
 <p>Осталось лишь запустить цикл вычисления скрытого и выходного слоёв. <br/>Каждый новый слой (столбец матрицы neuralNetwork) - это результат применения сигмоиды к произведению текущего слоя (столбца) и соответствующей весовой матрицы: </p>     
<div class="image-container">
<p><b>На этом месте располагается листинг, который не может быть правильно отображен в rss-ленте. Перейдите к оригинальной статье: <a href='http://inclab.ru/articles/prosteyshaya-neyronnaya-set-na-scilab'>http://inclab.ru/articles/prosteyshaya-neyronnaya-set-na-scilab</a></b></p>
  <span class="image-description text-italic">Обновляем столбы матрицы в Scilab.</span>  
</div>   
  
<p>Убедимся, что результат совпадает с посчитанным поэтапно: </p>   
<div class="image-container">
<p><b>На этом месте располагается листинг, который не может быть правильно отображен в rss-ленте. Перейдите к оригинальной статье: <a href='http://inclab.ru/articles/prosteyshaya-neyronnaya-set-na-scilab'>http://inclab.ru/articles/prosteyshaya-neyronnaya-set-na-scilab</a></b></p> 
</div>    
<p class="text-center"> 
\( 
  neuralNetwork = \begin{pmatrix}
   0.9 &  0.761 &  0.726\\
   0.1 &  0.603 &  0.708\\
   0.8 &  0.65  &  0.778
  \end{pmatrix}   

  \)  
 </p>    
<p>Отлично! Результат совпал. Можно двигаться дальше.</p>   
  
  
<p>Далее мы приступим к разбору <a href="https://inclab.ru/profi/obuchenie-neyronnoy-seti">метода обратного распределения ошибки и корректировки весов</a> &#129299;</p>
  
<p>Данная статья создана на основе <a id="tarikbook" target="_blank" href="https://books.google.ru/books?id=wynnDwAAQBAJ">чудесной книги</a>(1) с реализацией автором  приведённых примеров на Scilab.</p><p>Оригинальный адрес статьи: <a href='http://inclab.ru/articles/prosteyshaya-neyronnaya-set-na-scilab'>http://inclab.ru/articles/prosteyshaya-neyronnaya-set-na-scilab</a><p>]]></description>
			<pubDate>Mon, 04 Jul 2022 17:15:53 +0400</pubDate>
		</item>
		<item>
			<title><![CDATA[Настройка графиков в Scilab полный гайд]]></title>
			<link>http://inclab.ru/articles/nastroyka-grafikov-v-scilab-polnyy-gayd</link>
			<guid>http://inclab.ru/articles/nastroyka-grafikov-v-scilab-polnyy-gayd</guid>
			<description><![CDATA[<img src="http://inclab.ru" />Рассмотрим, как изменить вид графиков в Scilab.<p>Основы построения графиков рассмотрены в <a href="https://inclab.ru/beginner/postroenie-grafikov-v-scilab" target="_blank">статье</a>, а в <a href="https://inclab.ru/beginner/kak-zadat-tolschinu-linii-na-grafike">статье</a> подробно рассмотрен вопрос настройки толщины и начертания графиков.</p>

<p>Создадим заготовку графика, который будем всячески кастомизировать.</p>

<div class="image-container">
<p><b>На этом месте располагается листинг, который не может быть правильно отображен в rss-ленте. Перейдите к оригинальной статье: <a href='http://inclab.ru/articles/nastroyka-grafikov-v-scilab-polnyy-gayd'>http://inclab.ru/articles/nastroyka-grafikov-v-scilab-polnyy-gayd</a></b></p>
</div>

<h2>Название графика и подписи осей</h2>
<p>Чтобы задать название графика в Scilab, запишем:</p>
<div class="image-container">
<p><b>На этом месте располагается листинг, который не может быть правильно отображен в rss-ленте. Перейдите к оригинальной статье: <a href='http://inclab.ru/articles/nastroyka-grafikov-v-scilab-polnyy-gayd'>http://inclab.ru/articles/nastroyka-grafikov-v-scilab-polnyy-gayd</a></b></p>
</div>

<p>Изменим цвет и размер шрифта у названия графика:</p>
<div class="image-container">
<p><b>На этом месте располагается листинг, который не может быть правильно отображен в rss-ленте. Перейдите к оригинальной статье: <a href='http://inclab.ru/articles/nastroyka-grafikov-v-scilab-polnyy-gayd'>http://inclab.ru/articles/nastroyka-grafikov-v-scilab-polnyy-gayd</a></b></p>
</div>
<div class="image-container" itemscope itemtype="http://schema.org/ImageObject">
    <picture>
        <source type="image/webp" srcset="/images/articles/nastroyka-grafikov-v-scilab-polnyy-gayd/1fc26oa/nastroyka-otobrazheniya-zagolovka-na-grafike-v-scilab.webp"/>
        <img class="image-in-container" src="http://inclab.ru/images/articles/nastroyka-grafikov-v-scilab-polnyy-gayd/1fc26oa/nastroyka-otobrazheniya-zagolovka-na-grafike-v-scilab.jpg" itemprop="contentUrl" alt="Настройка отображения заголовка на графике в Scilab" title="Настройка отображения заголовка на графике в Scilab"/>
    </picture>
    <span class="image-description text-italic" itemprop="description">Настройка отображения заголовка на графике в Scilab</span>
</div> 

<p>Похожим образом зададим подписи горизонтальной и вертикальной осей:</p>
<div class="image-container">
<p><b>На этом месте располагается листинг, который не может быть правильно отображен в rss-ленте. Перейдите к оригинальной статье: <a href='http://inclab.ru/articles/nastroyka-grafikov-v-scilab-polnyy-gayd'>http://inclab.ru/articles/nastroyka-grafikov-v-scilab-polnyy-gayd</a></b></p>
</div>
<p>И изменим начертание и размер шрифта у подписей осей:</p>
<div class="image-container">
<p><b>На этом месте располагается листинг, который не может быть правильно отображен в rss-ленте. Перейдите к оригинальной статье: <a href='http://inclab.ru/articles/nastroyka-grafikov-v-scilab-polnyy-gayd'>http://inclab.ru/articles/nastroyka-grafikov-v-scilab-polnyy-gayd</a></b></p>
</div>
<div class="image-container" itemscope itemtype="http://schema.org/ImageObject">
    <picture>
        <source type="image/webp" srcset="/images/articles/nastroyka-grafikov-v-scilab-polnyy-gayd/ldq7ve/nastroyka-otobrazheniya-podpisey-osey-na-grafike-v-scilab.webp"/>
        <img class="image-in-container" src="http://inclab.ru/images/articles/nastroyka-grafikov-v-scilab-polnyy-gayd/ldq7ve/nastroyka-otobrazheniya-podpisey-osey-na-grafike-v-scilab.jpg" itemprop="contentUrl" alt="Настройка отображения подписей осей на графике в Scilab" title="Настройка отображения подписей осей на графике в Scilab"/>
    </picture>
    <span class="image-description text-italic" itemprop="description">Настройка отображения подписей осей на графике в Scilab</span>
</div> 


<h2>Положение осей</h2>
<p>Начнем с того, что поменяем расположение горизонтальной и вертикальной осей на графике.</p>
<p>Чтобы переместить ось абсцисс, нужно воспользоваться командой:</p>
<div class="image-container">
<p><b>На этом месте располагается листинг, который не может быть правильно отображен в rss-ленте. Перейдите к оригинальной статье: <a href='http://inclab.ru/articles/nastroyka-grafikov-v-scilab-polnyy-gayd'>http://inclab.ru/articles/nastroyka-grafikov-v-scilab-polnyy-gayd</a></b></p>
</div>
<p>Где xyz - принимает значения: "bottom", "top", "middle", "origin".</p>

<div class="image-container" itemscope itemtype="http://schema.org/ImageObject">
    <picture>
        <source type="image/webp" srcset="/images/articles/nastroyka-grafikov-v-scilab-polnyy-gayd/1jdv892/varianty-raspolozheniya-osi-h-na-grafike-v-scilab.webp"/>
        <img class="image-in-container" src="http://inclab.ru/images/articles/nastroyka-grafikov-v-scilab-polnyy-gayd/1jdv892/varianty-raspolozheniya-osi-h-na-grafike-v-scilab.jpg" itemprop="contentUrl" alt="Варианты расположения оси х на графике в Scilab" title="Варианты расположения оси х на графике в Scilab"/>
    </picture>
    <span class="image-description text-italic" itemprop="description">Варианты расположения оси х на графике в Scilab</span>
</div> 


<p>Аналогично можно поменять расположение оси ординат, для этого нужно воспользоваться командой:</p>
<div class="image-container">
<p><b>На этом месте располагается листинг, который не может быть правильно отображен в rss-ленте. Перейдите к оригинальной статье: <a href='http://inclab.ru/articles/nastroyka-grafikov-v-scilab-polnyy-gayd'>http://inclab.ru/articles/nastroyka-grafikov-v-scilab-polnyy-gayd</a></b></p>
</div>
<p>Где xyz - принимает значения: "left", "right", "middle", "origin".</p>

<div class="image-container" itemscope itemtype="http://schema.org/ImageObject">
    <picture>
        <source type="image/webp" srcset="/images/articles/nastroyka-grafikov-v-scilab-polnyy-gayd/uxyzzu/varianty-raspolozheniya-osi-y-na-grafike-v-scilab.webp"/>
        <img class="image-in-container" src="http://inclab.ru/images/articles/nastroyka-grafikov-v-scilab-polnyy-gayd/uxyzzu/varianty-raspolozheniya-osi-y-na-grafike-v-scilab.jpg" itemprop="contentUrl" alt="Варианты расположения оси y на графике в Scilab" title="Варианты расположения оси y на графике в Scilab"/>
    </picture>
    <span class="image-description text-italic" itemprop="description">Варианты расположения оси y на графике в Scilab</span>
</div> 



<h2>Настройка сетки</h2>
<p>Добавим на наш график сетку с помощью стандартной команды:</p>
<div class="image-container">
<p><b>На этом месте располагается листинг, который не может быть правильно отображен в rss-ленте. Перейдите к оригинальной статье: <a href='http://inclab.ru/articles/nastroyka-grafikov-v-scilab-polnyy-gayd'>http://inclab.ru/articles/nastroyka-grafikov-v-scilab-polnyy-gayd</a></b></p>
</div>

<p>Чтобы поменять цвет grid, нужно воспользоваться командой:</p>
<div class="image-container">
<p><b>На этом месте располагается листинг, который не может быть правильно отображен в rss-ленте. Перейдите к оригинальной статье: <a href='http://inclab.ru/articles/nastroyka-grafikov-v-scilab-polnyy-gayd'>http://inclab.ru/articles/nastroyka-grafikov-v-scilab-polnyy-gayd</a></b></p>
</div>
<p>Где вектор из трех индексов цветов [xCol, yCol, zCol], используется для рисования сетки в соответствующих направлениях. Чтобы отменить сетку в направлении, используйте -1 в качестве индекса. </p>
<div class="image-container" itemscope itemtype="http://schema.org/ImageObject">
    <picture>
        <source type="image/webp" srcset="/images/articles/nastroyka-grafikov-v-scilab-polnyy-gayd/11h6kln/raznye-cveta-setki-na-grafike-v-scilab.webp"/>
        <img class="image-in-container" src="http://inclab.ru/images/articles/nastroyka-grafikov-v-scilab-polnyy-gayd/11h6kln/raznye-cveta-setki-na-grafike-v-scilab.jpg" itemprop="contentUrl" alt="Разные цвета сетки на графике в Scilab" title="Разные цвета сетки на графике в Scilab"/>
    </picture>
    <span class="image-description text-italic" itemprop="description">Разные цвета сетки на графике в Scilab</span>
</div> 

<p>Заодно можно изменить толщину сеткти grid. Для этого нужно воспользоваться командой:</p>
<div class="image-container">
<p><b>На этом месте располагается листинг, который не может быть правильно отображен в rss-ленте. Перейдите к оригинальной статье: <a href='http://inclab.ru/articles/nastroyka-grafikov-v-scilab-polnyy-gayd'>http://inclab.ru/articles/nastroyka-grafikov-v-scilab-polnyy-gayd</a></b></p>
</div>
<p>Где вектор [xLineThick, yLineThick, zLineThick] состоит из 2 или 3 положительных десятичных чисел, задающих толщину линий сетки вдоль соответствующих направлений (в 2D или 3D).</p>
<div class="image-container" itemscope itemtype="http://schema.org/ImageObject">
    <picture>
        <source type="image/webp" srcset="/images/articles/nastroyka-grafikov-v-scilab-polnyy-gayd/ro89pm/raznaya-tolschina-setki-na-grafike-v-scilab.webp"/>
        <img class="image-in-container" src="http://inclab.ru/images/articles/nastroyka-grafikov-v-scilab-polnyy-gayd/ro89pm/raznaya-tolschina-setki-na-grafike-v-scilab.jpg" itemprop="contentUrl" alt="Разная толщина сетки на графике в Scilab" title="Разная толщина сетки на графике в Scilab"/>
    </picture>
    <span class="image-description text-italic" itemprop="description">Разная толщина сетки на графике в Scilab</span>
</div> 

<p>Кроме того, линиям сетки сеткти grid можно задать разное начертание. Для этого нужно воспользоваться командой:</p>
<div class="image-container">
<p><b>На этом месте располагается листинг, который не может быть правильно отображен в rss-ленте. Перейдите к оригинальной статье: <a href='http://inclab.ru/articles/nastroyka-grafikov-v-scilab-polnyy-gayd'>http://inclab.ru/articles/nastroyka-grafikov-v-scilab-polnyy-gayd</a></b></p>
</div>
<p>Где вектор [xLineStyle, yLineStyle, zLineStyle] состоит из 2 или 3 идентификаторов стилей линий от 1 до 10 (сплошные, штрихи, точки и т. д.), используемые для рисования сетки в соответствующих направлениях (в 2D или 3D).</p>
<div class="image-container" itemscope itemtype="http://schema.org/ImageObject">
    <picture>
        <source type="image/webp" srcset="/images/articles/nastroyka-grafikov-v-scilab-polnyy-gayd/1wizxpg/raznyyy-stil-liniy-setki-na-grafike-v-scilab.webp"/>
        <img class="image-in-container" src="http://inclab.ru/images/articles/nastroyka-grafikov-v-scilab-polnyy-gayd/1wizxpg/raznyyy-stil-liniy-setki-na-grafike-v-scilab.jpg" itemprop="contentUrl" alt="Разныый стиль линий сетки на графике в Scilab" title="Разныый стиль линий сетки на графике в Scilab"/>
    </picture>
    <span class="image-description text-italic" itemprop="description">Разныый стиль линий сетки на графике в Scilab</span>
</div> 

<h2>Пример настройки plot</h2>
<p>Не только ради развлеения, но и для практической пользы, поиграем с настройками параметров графика в Scilab.</p>

<div class="image-container">
<p><b>На этом месте располагается листинг, который не может быть правильно отображен в rss-ленте. Перейдите к оригинальной статье: <a href='http://inclab.ru/articles/nastroyka-grafikov-v-scilab-polnyy-gayd'>http://inclab.ru/articles/nastroyka-grafikov-v-scilab-polnyy-gayd</a></b></p>
  <span class="image-description text-italic">Заготовка графика</span>
</div>

<p>А теперь приступим к изменению параметров графика.</p>
<p>Зададим название графика и подписи осей.</p>
<div class="image-container">
<p><b>На этом месте располагается листинг, который не может быть правильно отображен в rss-ленте. Перейдите к оригинальной статье: <a href='http://inclab.ru/articles/nastroyka-grafikov-v-scilab-polnyy-gayd'>http://inclab.ru/articles/nastroyka-grafikov-v-scilab-polnyy-gayd</a></b></p>
</div>

<p>Приступим к разукрашиванию.</p>
<div class="image-container">
<p><b>На этом месте располагается листинг, который не может быть правильно отображен в rss-ленте. Перейдите к оригинальной статье: <a href='http://inclab.ru/articles/nastroyka-grafikov-v-scilab-polnyy-gayd'>http://inclab.ru/articles/nastroyka-grafikov-v-scilab-polnyy-gayd</a></b></p>
<span class="image-description text-italic">Изменим цвет фона у окна и графика</span>
</div>

<div class="image-container">
<p><b>На этом месте располагается листинг, который не может быть правильно отображен в rss-ленте. Перейдите к оригинальной статье: <a href='http://inclab.ru/articles/nastroyka-grafikov-v-scilab-polnyy-gayd'>http://inclab.ru/articles/nastroyka-grafikov-v-scilab-polnyy-gayd</a></b></p>
<span class="image-description text-italic">Изменим цвета названия осей и названия графика</span>
</div>

<div class="image-container">
<p><b>На этом месте располагается листинг, который не может быть правильно отображен в rss-ленте. Перейдите к оригинальной статье: <a href='http://inclab.ru/articles/nastroyka-grafikov-v-scilab-polnyy-gayd'>http://inclab.ru/articles/nastroyka-grafikov-v-scilab-polnyy-gayd</a></b></p>
<span class="image-description text-italic">Добавим сетку на график и изменим стиль её линий</span>
</div>


<div class="image-container">
<p><b>На этом месте располагается листинг, который не может быть правильно отображен в rss-ленте. Перейдите к оригинальной статье: <a href='http://inclab.ru/articles/nastroyka-grafikov-v-scilab-polnyy-gayd'>http://inclab.ru/articles/nastroyka-grafikov-v-scilab-polnyy-gayd</a></b></p>
<span class="image-description text-italic">Изменим цвет тиков на сетке по горизонтали и вертикали</span>
</div>


<div class="image-container">
<p><b>На этом месте располагается листинг, который не может быть правильно отображен в rss-ленте. Перейдите к оригинальной статье: <a href='http://inclab.ru/articles/nastroyka-grafikov-v-scilab-polnyy-gayd'>http://inclab.ru/articles/nastroyka-grafikov-v-scilab-polnyy-gayd</a></b></p>
<span class="image-description text-italic">Изменим цвет графика и его толщину</span>
</div>

<p>В итоге получится вот такой результат:</p>
<div class="image-container" itemscope itemtype="http://schema.org/ImageObject">
    <picture>
        <source type="image/webp" srcset="/images/articles/nastroyka-grafikov-v-scilab-polnyy-gayd/1ipu7y1/grafik-v-forme-serdca-v-scilab.webp"/>
        <img class="image-in-container" src="http://inclab.ru/images/articles/nastroyka-grafikov-v-scilab-polnyy-gayd/1ipu7y1/grafik-v-forme-serdca-v-scilab.jpg" itemprop="contentUrl" alt="График в форме сердца в Scilab" title="График в форме сердца в Scilab"/>
    </picture>
    <span class="image-description text-italic" itemprop="description">График в форме сердца в Scilab</span>
</div> 





<p>Оригинальный адрес статьи: <a href='http://inclab.ru/articles/nastroyka-grafikov-v-scilab-polnyy-gayd'>http://inclab.ru/articles/nastroyka-grafikov-v-scilab-polnyy-gayd</a><p>]]></description>
			<pubDate>Wed, 22 Jun 2022 00:12:14 +0400</pubDate>
		</item>
		<item>
			<title><![CDATA[Восстановление сигнала по Комплексным коэффициентам Фурье]]></title>
			<link>http://inclab.ru/articles/vosstanovlenie-signala-i-ehffekt-gibbsa</link>
			<guid>http://inclab.ru/articles/vosstanovlenie-signala-i-ehffekt-gibbsa</guid>
			<description><![CDATA[<img src="http://inclab.ru" />Сгенерируем прямоугольный импульс с заданными характеристиками, построим его спектр и попробуем его восстановить по нескольким гармоникам.<p>Сгенерируем прямоугольный импульс с заданными характеристиками, построим его спектр и попробуем его восстановить по нескольким гармоникам.</p>

<h2>Построение прямоугольного импульса</h2>
<p>Прежде всего, напишем функцию, которая будет генерировать несимметричный прямоугольный импульс с заданными характеристиками, например, такой:</p>
<div class="image-container" itemscope itemtype="http://schema.org/ImageObject">
    <picture>
        <source type="image/webp" srcset="/images/articles/vosstanovlenie-signala-i-ehffekt-gibbsa/69pex8/pryamougolnyy-impuls-s-amplitudoy-1-dlinoy-4-i-periodom-12.webp"/>
        <img class="image-in-container" src="http://inclab.ru/images/articles/vosstanovlenie-signala-i-ehffekt-gibbsa/69pex8/pryamougolnyy-impuls-s-amplitudoy-1-dlinoy-4-i-periodom-12.jpg" itemprop="contentUrl" alt="Прямоугольный импульс с амплитудой 1, длиной 4 и периодом 12." title="Прямоугольный импульс с амплитудой 1, длиной 4 и периодом 12."/>
    </picture>
    <span class="image-description text-italic" itemprop="description">Прямоугольный импульс с амплитудой 1, длиной 4 и периодом 12.</span>
</div>   

<p>Зададим период и длительность импульса, а также временной промежуток, на котором будем строить импульс:</p>
<div class="image-container">
<p><b>На этом месте располагается листинг, который не может быть правильно отображен в rss-ленте. Перейдите к оригинальной статье: <a href='http://inclab.ru/articles/vosstanovlenie-signala-i-ehffekt-gibbsa'>http://inclab.ru/articles/vosstanovlenie-signala-i-ehffekt-gibbsa</a></b></p>
<span class="image-description text-italic">Задание характеристик импульса</span>
</div>

<p>Далее напишем функцию, которая будет строить импульс на заданном промежутке: </p>
<div class="image-container">
<p><b>На этом месте располагается листинг, который не может быть правильно отображен в rss-ленте. Перейдите к оригинальной статье: <a href='http://inclab.ru/articles/vosstanovlenie-signala-i-ehffekt-gibbsa'>http://inclab.ru/articles/vosstanovlenie-signala-i-ehffekt-gibbsa</a></b></p>
<span class="image-description text-italic">Функция построения прямоугольного импульса в Scilab</span>
</div>
<p>В функции \( imp() \) сначала формируется вектор, заполненный нулями той же размерности, что и временной промежуток.</p>
<p>Чтобы построить прямоугольный импульс, нам нужно на первых 4-х секундах задать его высоту = 1, оставив остальные элементы вектора без изменения (потому что они уже нулевые), а далее повторить эту процедуру с заданным периодом, т.е. через каждые 12 с. </p>
<p>Повторение импульса обеспечивает деление по модулю, которое в Scilab реализовано функцией \( modulo( \cdot, \cdot) \)</p>
  
<p>Осталось  лишь вызвать функцию \( imp() \) с заданными параметрами импульса и немного подкорректировать первый и последний элементы сформированного вектора:</p>  
  
<div class="image-container">
<p><b>На этом месте располагается листинг, который не может быть правильно отображен в rss-ленте. Перейдите к оригинальной статье: <a href='http://inclab.ru/articles/vosstanovlenie-signala-i-ehffekt-gibbsa'>http://inclab.ru/articles/vosstanovlenie-signala-i-ehffekt-gibbsa</a></b></p>
<span class="image-description text-italic">Формирование скорректированного прямоугольного импульса</span>
</div>
  
<p>Построим график нашей функции, чтобы убедиться, что всё идёт по плану:</p>
<div class="image-container">
<p><b>На этом месте располагается листинг, который не может быть правильно отображен в rss-ленте. Перейдите к оригинальной статье: <a href='http://inclab.ru/articles/vosstanovlenie-signala-i-ehffekt-gibbsa'>http://inclab.ru/articles/vosstanovlenie-signala-i-ehffekt-gibbsa</a></b></p>
<span class="image-description text-italic">Строим график прямоугольного импульса Scilab</span>
</div>  

<div class="image-container" itemscope itemtype="http://schema.org/ImageObject">
    <picture>
        <source type="image/webp" srcset="/images/articles/vosstanovlenie-signala-i-ehffekt-gibbsa/1o7naa8/pryamougolnyy-impuls-s-amplitudoy-1-dlinoy-4-i-periodom-12.webp"/>
        <img class="image-in-container" src="http://inclab.ru/images/articles/vosstanovlenie-signala-i-ehffekt-gibbsa/1o7naa8/pryamougolnyy-impuls-s-amplitudoy-1-dlinoy-4-i-periodom-12.jpg" itemprop="contentUrl" alt="Прямоугольный импульс с амплитудой 1, длиной 4 и периодом 12." title="Прямоугольный импульс с амплитудой 1, длиной 4 и периодом 12."/>
    </picture>
    <span class="image-description text-italic" itemprop="description">Прямоугольный импульс с амплитудой 1, длиной 4 и периодом 12.</span>
</div>   
<p>Заметьте, что здесь заголовок графика формируется с учетом заданных характеристик, которые переводятся в строку функцией \( string() \).</p>  
  
<h2>Разложение несимметричного импульса в комплексный ряд Фурье</h2>
<p>Для несимметричного импульса с амплитудой 1 комплексные коэффициенты Фурье примут вид:</p>
<p class="text-center">\( c_k = \displaystyle\frac{1}{T} \displaystyle\int_{0}^{\tau} e^{-i\frac{2\pi k t}{T}}dt = \left( \frac{1}{\pi k} sin \left( \frac{\pi k \tau}{T} \right) \right) e^{-i\frac{\pi k \tau}{T}}  \quad     (1) \) </p>  
<p>При этом, на нулевой частоте было деление на 0, поэтому её нужно задать отдельно в виде:</p>  
<p class="text-center">\( c_0 = \displaystyle\frac{\tau}{T}    \) </p>  
<p>Вычислим коэффициенты \( c_k \) разложения несимметричного импульса в Scilab по формуле (1), заодно посчитаем частоты гармоник \( \omega_k \). </p>
<div class="image-container">
<p><b>На этом месте располагается листинг, который не может быть правильно отображен в rss-ленте. Перейдите к оригинальной статье: <a href='http://inclab.ru/articles/vosstanovlenie-signala-i-ehffekt-gibbsa'>http://inclab.ru/articles/vosstanovlenie-signala-i-ehffekt-gibbsa</a></b></p>
<span class="image-description text-italic">Строим график прямоугольного импульса Scilab</span>
</div>    
  
<h2>Выделяем амплитудный и фазовый спектр</h2>
<p>Вещественные коэффициенты \( A_k  \) и \( \phi_k  \), где </p>
<p class="text-center">\( A_k = |c_k| \quad \phi_k = arg(c_k) \) </p>
<p>несут полную информацию о периодической с известным периодом \( T \) функции.</p>
<p>Набор \( A_k  \) называется амплитудным спектром, а коэффициенты \( \phi_k  \) определяют фазы отдельных гармоник, их совокупность называется фазовым спектром.</p>
<p>Из сформированных комплекснозначных коэффициетов Фурье \( c_k \) выделим амплитудный и фазовый спект в Scilab: для нахождения модуля комплексного числа воспользуемся функцией \( abs() \), а угол  \( \phi_k  \) найдём с помощью функции \( atan(\cdot, \cdot) \).  </p>  
<div class="image-container">
<p><b>На этом месте располагается листинг, который не может быть правильно отображен в rss-ленте. Перейдите к оригинальной статье: <a href='http://inclab.ru/articles/vosstanovlenie-signala-i-ehffekt-gibbsa'>http://inclab.ru/articles/vosstanovlenie-signala-i-ehffekt-gibbsa</a></b></p>
<span class="image-description text-italic">Строим график прямоугольного импульса Scilab</span>
</div>   
  
<div class="image-container" itemscope itemtype="http://schema.org/ImageObject">
    <picture>
        <source type="image/webp" srcset="/images/articles/vosstanovlenie-signala-i-ehffekt-gibbsa/1nz7i43/napominanie-pro-kompleksnye-chisla.webp"/>
        <img class="image-in-container" src="http://inclab.ru/images/articles/vosstanovlenie-signala-i-ehffekt-gibbsa/1nz7i43/napominanie-pro-kompleksnye-chisla.jpg" itemprop="contentUrl" alt="Напоминание про комплексные числа." title="Напоминание про комплексные числа."/>
    </picture>
    <span class="image-description text-italic" itemprop="description">Напоминание про комплексные числа.</span>
</div>   
  
<p>Построим графики найденных спектров. Здесь стоит отметить, что \( A_k  \) и \( \phi_k  \) - это дискретные величины. Чтобы построить дискретный график в Scilab воспользуемся функцией \( plot2d3()  \) в совокупности с классическим \( plot()  \), который будет формировать кружочки:</p>
<div class="image-container">
<p><b>На этом месте располагается листинг, который не может быть правильно отображен в rss-ленте. Перейдите к оригинальной статье: <a href='http://inclab.ru/articles/vosstanovlenie-signala-i-ehffekt-gibbsa'>http://inclab.ru/articles/vosstanovlenie-signala-i-ehffekt-gibbsa</a></b></p>
<span class="image-description text-italic">Строим графики спектров прямоугольного импульса Scilab</span>
</div>    
<div class="image-container" itemscope itemtype="http://schema.org/ImageObject">
    <picture>
        <source type="image/webp" srcset="/images/articles/vosstanovlenie-signala-i-ehffekt-gibbsa/18jzn8k/faza-i-amplituda-pryamougolnogo-impulsa.webp"/>
        <img class="image-in-container" src="http://inclab.ru/images/articles/vosstanovlenie-signala-i-ehffekt-gibbsa/18jzn8k/faza-i-amplituda-pryamougolnogo-impulsa.jpg" itemprop="contentUrl" alt="Фаза и амплитуда прямоугольного импульса." title="Фаза и амплитуда прямоугольного импульса."/>
    </picture>
    <span class="image-description text-italic" itemprop="description">Фаза и амплитуда прямоугольного импульса.</span>
</div>   
  
<h2>Восстанавливаем несимметричный импульс</h2>
<p>Периодическая функция, представленная в виде комплексного ряда Фурье, может быть восстановлена по найденным коэффициентам (1) согласно формуле:</p>
<p class="text-center">\( x(t) = c_0 + 2 \displaystyle \sum_{k=1}^{+\infty} |c_k| cos(\omega_k t + arg(c_k)) \quad (2) \) </p>
<p>Представим формулу (2) на языке Scilab. Чтобы процесс был более наглядным, выражение под знаком суммы в (2) вынесем в отдельную функцию, аргументами которой будут: модуль комлекных коэффициентов \( |c_k| \) , частоты гармоник \( \omega_k \), временной промежуток - транспонированный вектор \( t \) и аргумент комлекных коэффициентов \( arg(c_k) \):</p>  
<div class="image-container">
<p><b>На этом месте располагается листинг, который не может быть правильно отображен в rss-ленте. Перейдите к оригинальной статье: <a href='http://inclab.ru/articles/vosstanovlenie-signala-i-ehffekt-gibbsa'>http://inclab.ru/articles/vosstanovlenie-signala-i-ehffekt-gibbsa</a></b></p>
<span class="image-description text-italic">Восстанавливаем сигнал по комплексным коэффициентам Фурье</span>
</div>   

<p>Заметьте, что коэффициент \( |c_0| \) представлен как \( С(1) \), так как <b>нумерация элементов массива в Scilab начинается с 1</b>.</p>
  
  
<p>Функция \( summ() \) будет иметь следующий вид:</p>
<div class="image-container">
<p><b>На этом месте располагается листинг, который не может быть правильно отображен в rss-ленте. Перейдите к оригинальной статье: <a href='http://inclab.ru/articles/vosstanovlenie-signala-i-ehffekt-gibbsa'>http://inclab.ru/articles/vosstanovlenie-signala-i-ehffekt-gibbsa</a></b></p>
<span class="image-description text-italic">выражение под знаком суммы в (2)</span>
</div>  
  
<p>Итак, осталось лишь вывести восстановленный сигнал и посмотреть, насколько он совпадает с оригинальным:</p>
<div class="image-container">
<p><b>На этом месте располагается листинг, который не может быть правильно отображен в rss-ленте. Перейдите к оригинальной статье: <a href='http://inclab.ru/articles/vosstanovlenie-signala-i-ehffekt-gibbsa'>http://inclab.ru/articles/vosstanovlenie-signala-i-ehffekt-gibbsa</a></b></p>
<span class="image-description text-italic">Выводим восстановленный сигнал на первый график.</span>
</div>  
 <div class="image-container" itemscope itemtype="http://schema.org/ImageObject">
    <picture>
        <source type="image/webp" srcset="/images/articles/vosstanovlenie-signala-i-ehffekt-gibbsa/10u48jh/ishodnyy-impuls-i-vosstanovlennyy-po-15-garmonikam.webp"/>
        <img class="image-in-container" src="http://inclab.ru/images/articles/vosstanovlenie-signala-i-ehffekt-gibbsa/10u48jh/ishodnyy-impuls-i-vosstanovlennyy-po-15-garmonikam.jpg" itemprop="contentUrl" alt="Исходный импульс и восстановленный по 15 гармоникам" title="Исходный импульс и восстановленный по 15 гармоникам"/>
    </picture>
    <span class="image-description text-italic" itemprop="description">Исходный импульс и восстановленный по 15 гармоникам</span>
</div>   
 <p>На графике можно заметить осцилляции в точках излома импульса.</p> 
 <p>Если взять число гармоник \( N=50\), то картина улучшится, но кардинально не изменится:</p>   
  <div class="image-container" itemscope itemtype="http://schema.org/ImageObject">
    <picture>
        <source type="image/webp" srcset="/images/articles/vosstanovlenie-signala-i-ehffekt-gibbsa/1l0qfh3/ishodnyy-impuls-i-vosstanovlennyy-po-50-garmonikam.webp"/>
        <img class="image-in-container" src="http://inclab.ru/images/articles/vosstanovlenie-signala-i-ehffekt-gibbsa/1l0qfh3/ishodnyy-impuls-i-vosstanovlennyy-po-50-garmonikam.jpg" itemprop="contentUrl" alt="Исходный импульс и восстановленный по 50 гармоникам" title="Исходный импульс и восстановленный по 50 гармоникам"/>
    </picture>
    <span class="image-description text-italic" itemprop="description">Исходный импульс и восстановленный по 50 гармоникам</span>
</div>  
<p>Дело в том, что если функция, которую раскладывают в ряд Фурье, имеет разрывы первого рода, то в точках разрыва ряд сходится к полусумме значений функции слева и справа от точки разрыва. Если оставить в сумме конечное число слагаемых, то есть выполнять приближение функции тригонометрическим полиномом, то в окрестности точки разрыва будут осцилляции. Это называется эффектом Гиббса. </p>

<p></p><p>Оригинальный адрес статьи: <a href='http://inclab.ru/articles/vosstanovlenie-signala-i-ehffekt-gibbsa'>http://inclab.ru/articles/vosstanovlenie-signala-i-ehffekt-gibbsa</a><p>]]></description>
			<pubDate>Wed, 22 Jun 2022 00:31:20 +0400</pubDate>
		</item>
		<item>
			<title><![CDATA[Реализация свёртки в Scilab]]></title>
			<link>http://inclab.ru/articles/realizaciya-svertki-v-scilab</link>
			<guid>http://inclab.ru/articles/realizaciya-svertki-v-scilab</guid>
			<description><![CDATA[<img src="http://inclab.ru" /> Проведём пошаговую операцию свёртки двух сигналов, чтобы детально разобраться в смысле данной математической операции.<p>Свёртка  это математическая операция, применимая к \( f(t) \) и \( g(t) \), которая порождает третью функцию и определяется формулой:</p>
<p class="text-center">\( y(t) = (f * g)(t) = \displaystyle\int_{-\infty}^{\infty}f(\tau)g(t-\tau)d\tau \) (1)</p>

<p>Рассмотрим реализацию свёртки двух сигналов на примере. Пусть сигналы \( f(t) \) и \( g(t) \) задаются в следующем виде:</p>
<p class="text-center">
  \begin{matrix}  

  f(t) = \begin{cases} 
  2, \quad 0 \leq t < 1 \\
  -2t+4, \quad 1 \leq t < 2  \\
  0, \quad t<0 \text{ or } t \geq 2 \\ 
   \end{cases} 

&               

  g(t) = \begin{cases} 
  1, \quad  t = 0 \\
  1 - \frac{1}{3}t, \quad 0 < t < 3  \\
  0, \quad t<0 \text{ or } t \geq 3 \\ 
   \end{cases} 

\end{matrix}                
 </p>

<p>Их графики, соответственно будут представлять собой ломаные, как показано ниже</p>
<div class="image-container" itemscope itemtype="http://schema.org/ImageObject">
    <picture>
        <source type="image/webp" srcset="/images/articles/realizaciya-svertki-v-scilab/1fa12o4/grafiki-signalov-f-t-i-g-t.webp"/>
        <img class="image-in-container" src="http://inclab.ru/images/articles/realizaciya-svertki-v-scilab/1fa12o4/grafiki-signalov-f-t-i-g-t.jpg" itemprop="contentUrl" alt="Графики сигналов f(t) и g(t)" title="Графики сигналов f(t) и g(t)"/>
    </picture>
    <span class="image-description text-italic" itemprop="description">Графики сигналов f(t) и g(t)</span>
</div>      

<h2>Пример свёртки двух функций пошагово</h2>
<p>Проведём пошаговую операцию свёртки двух сигналов, чтобы детально разобраться в смысле данной математической операции.</p>
<p>Итак, начнём с того, что в интегральном выражении у функции \( g(t-\tau) \)  по переменной, которой производится интегрирование, стоит знак "-", а значит график  нужно отразить по горизонтальной оси относительно оси ординат, как показано на рисунке ниже:</p>

<div class="image-container" itemscope itemtype="http://schema.org/ImageObject">
    <picture>
        <source type="image/webp" srcset="/images/articles/realizaciya-svertki-v-scilab/1bb14rd/otrazhennyy-signal-g-t.webp"/>
        <img class="image-in-container" src="http://inclab.ru/images/articles/realizaciya-svertki-v-scilab/1bb14rd/otrazhennyy-signal-g-t.jpg" itemprop="contentUrl" alt="Отражённый сигнал g(t)" title="Отражённый сигнал g(t)"/>
    </picture>
    <span class="image-description text-italic" itemprop="description">Отражённый сигнал g(t)</span>
</div> 

<p>Выражение \(  (t-\tau) \) означает, что движение будет происходить оси \(  t \). Причём, если  \(  t<0 \), то график функции  \( g(t) \) будет двигаться влево, при  \(  t \geq 0 \) движение будет происходить вправо.</p>
<p>Далее необходимо вычислить произведение \(  g(t)(t-\tau) \)  для каждого значения  \(  t \)  и посчитать площадь получившейся в результате произведения двух графиков фигуры.</p>
<p>На рисунке ниже показано, какие случаи пересечений нам необходимо просчитать по мере движения графика  по оси  \(  t \) .</p>

<div class="image-container" itemscope itemtype="http://schema.org/ImageObject">
    <picture>
        <source type="image/webp" srcset="/images/articles/realizaciya-svertki-v-scilab/1n6opiv/grafichekaya-poshagovaya-interpretaciya-svertki-signalov-f-t-i-g-t.webp"/>
        <img class="image-in-container" src="http://inclab.ru/images/articles/realizaciya-svertki-v-scilab/1n6opiv/grafichekaya-poshagovaya-interpretaciya-svertki-signalov-f-t-i-g-t.jpg" itemprop="contentUrl" alt="Графичекая пошаговая интерпретация свёртки сигналов f(t) и g(t)" title="Графичекая пошаговая интерпретация свёртки сигналов f(t) и g(t)"/>
    </picture>
    <span class="image-description text-italic" itemprop="description">Графичекая пошаговая интерпретация свёртки сигналов f(t) и g(t)</span>
</div>   
  
  
<p>Остановимся на каждом из 6-ти случаев и произведём расчёты площадей получившихся фигур.</p>
<ol type="a">
  <li>
    <p>При \(  t<0 \)  графики сигналов не пересекаются, а значит и площадь фигуры их пересечения нулевая, то есть, результирующий интеграл примет вид: </p>
<p class="text-center">\(  \displaystyle\int_{-\infty}^{0}f(\tau)g(t-\tau)d\tau=0 \) </p>      
      
 </li>   
    <li>
    <p>На интервале \(  0 \leq t < 1 \)   сигнал \( f(t) \) представляет собой константу: \( f(t)=2 \) , а график сигнала \( g(t) \)  - есть прямая  \(1 - \frac{1}{3}t\). Исходя из вышесказанного, результатом сворачивания двух функций будет функция  \( y(t) \)  вида: </p>
<p class="text-center">\(  y(t) = \displaystyle\int_{0}^{t} 2 \left(1 - \frac{1}{3}(t-\tau)\right)  d\tau = 2t - \frac{t^2}{3} \) </p>      
      
 </li> 
        <li>
    <p>На интервале  \(  1 \leq t < 2 \)  результирующий интеграл можно разбить на 2 интеграла: первый  вида, описанного в пункте b). Второй интеграл будет представлять собой площадь фигуры, имеющей стороны, описываемые  прямыми \(1 - \frac{1}{3}t\)  и  \( -2t+4 \) . В результате, функция \( y(t) \)   примет вид: </p>
<p class="text-center">\(  y(t) = \displaystyle\int_{0}^{1} 2 \left(1 - \frac{1}{3}(t-\tau)\right)  d\tau  +  \displaystyle\int_{1}^{t} \left( 4 - 2\tau \right) \left(1 - \frac{1}{3}(t-\tau)\right)  d\tau  = \frac{t^3}{9} -\frac{5}{3}t^2 + \frac{13}{3}t - \frac{10}{9} \)</p>      
      
 </li> 
            <li>
    <p>На интервале \(  2 \leq t < 3 \) результатом свёртки будет функция  \( y(t) \): </p>
<p class="text-center">\(  y(t) = \displaystyle\int_{0}^{1} 2 \left(1 - \frac{1}{3}(t-\tau)\right)  d\tau  +  \displaystyle\int_{1}^{2} \left( 4 - 2\tau \right) \left(1 - \frac{1}{3}(t-\tau)\right)  d\tau  = \frac{34}{9} -t \)</p>      
      
 </li> 
                <li>
    <p>Предпоследним, дающим непустое пересечение графиков, будет интервал  \(  3 \leq t < 4 \), который породит функцию  \( y(t) \): </p>
<p class="text-center">\(  y(t) = \displaystyle\int_{t-3}^{1}2 \left(1 - \frac{1}{3}(t-\tau)\right)  d\tau  + \displaystyle\int_{1}^{2}\left( 4 - 2\tau \right) \left(1 - \frac{1}{3}(t-\tau)\right)  d\tau  = \frac{1}{3}t^2 -3t + \frac{61}{9} \)</p>      
      
 </li> 
                    <li>
    <p>Результирующей функцией на интервале \(  4 \leq t < 5 \) будет второе слагаемое из предыдущего случая со своими пределами интегрирования: </p>
<p class="text-center">\(  y(t) = \displaystyle\int_{t-3}^{2} \left( 4 - 2\tau \right) \left(1 - \frac{1}{3}(t-\tau)\right)  d\tau  = \frac{1}{9}t^3 + \frac{5}{3}t^2 - \frac{25}{3}t + \frac{125}{9} \)</p>       
      
 </li> 
</ol>    
<p>Таким образом, результатом свёртки игналов \( f(t) \) и \( g(t) \) будет функция \( y(t) \), задаваемая совокупностью уравнений:</p>
<p class="text-center">
  \begin{matrix}  

  y(t) = \begin{cases} 
  0, \quad t<0 \text{ or } t \geq 5 \\
  2t - \frac{t^2}{3}, \quad 0 \leq t < 1  \\
  \frac{t^3}{9} -\frac{5}{3}t^2 + \frac{13}{3}t - \frac{10}{9}, \quad 1 \leq t < 2 \\ 
   \frac{34}{9} -t, \quad 2 \leq t < 3 \\ 
    \frac{1}{3}t^2 -3t + \frac{61}{9}, \quad 3 \leq t < 4 \\ 
   \frac{1}{9}t^3 + \frac{5}{3}t^2 - \frac{25}{3}t + \frac{125}{9}, \quad 4 \leq t < 5 \\ 
   \end{cases} 
\end{matrix}                
 </p>
                  
                  
<p>На рисунке ниже приведена функция являющаяся результатом сворачивания двух сигналов на каждом из смысловых промежутков.</p>
<div class="image-container" itemscope itemtype="http://schema.org/ImageObject">
    <picture>
        <source type="image/webp" srcset="/images/articles/realizaciya-svertki-v-scilab/1tymzbb/funkciya-y-t---rezultat-svertki-signalov-f-t-i-g-t.webp"/>
        <img class="image-in-container" src="http://inclab.ru/images/articles/realizaciya-svertki-v-scilab/1tymzbb/funkciya-y-t---rezultat-svertki-signalov-f-t-i-g-t.jpg" itemprop="contentUrl" alt="Функция y(t) - результат свёртки сигналов  f(t) и g(t) " title="Функция y(t) - результат свёртки сигналов  f(t) и g(t) "/>
    </picture>
    <span class="image-description text-italic" itemprop="description">Функция y(t) - результат свёртки сигналов  f(t) и g(t) </span>
</div>   
       
                  
<h2>Реализация свёртки на Scilab</h2>    
                  
<p>Для реализации в численных методах, рассматривается дискретный случай свертки двух функций \( f(j) \) и \( g(j) \)  </p>
                  
<p class="text-center">\( z(k) = \displaystyle\sum_{j=max(1, k+1-L_g)}^{min(k,L_f)} f(j)\cdot g(k+1-j), \quad  k=1,..,L_f+L_g \quad (3) \) </p>
                  
<p>где \( L_f, L_g\) - количество элементов функций \( f(j) \) и \( g(j) \)  соответственно.</p>

<p>Прежде всего, зададим функции \( f(j) \) и \( g(j) \) с помощью условных операторов в Scilab:</p>
<div class="image-container">
<p><b>На этом месте располагается листинг, который не может быть правильно отображен в rss-ленте. Перейдите к оригинальной статье: <a href='http://inclab.ru/articles/realizaciya-svertki-v-scilab'>http://inclab.ru/articles/realizaciya-svertki-v-scilab</a></b></p>
<span class="image-description text-italic">Задание сигнала f(t) </span>
</div>	    
                      
<div class="image-container">
<p><b>На этом месте располагается листинг, который не может быть правильно отображен в rss-ленте. Перейдите к оригинальной статье: <a href='http://inclab.ru/articles/realizaciya-svertki-v-scilab'>http://inclab.ru/articles/realizaciya-svertki-v-scilab</a></b></p>
<span class="image-description text-italic">Задание сигнала g(t) </span>
</div>	                  
                  
<p>Далее на пишем функцию, реализующую свёртку, согласно формулы (3)</p>
  
<div class="image-container">
<p><b>На этом месте располагается листинг, который не может быть правильно отображен в rss-ленте. Перейдите к оригинальной статье: <a href='http://inclab.ru/articles/realizaciya-svertki-v-scilab'>http://inclab.ru/articles/realizaciya-svertki-v-scilab</a></b></p>
<span class="image-description text-italic">Задание сигнала g(t) </span>
</div>	  
  
  
<p>И посмотрим, сойдётся ли результат, полученный с помощью нашей функции \( myconv() \) с результатом, полученным при использовании встроенной функции \( conv() \) </p>
                  
<div class="image-container">
<p><b>На этом месте располагается листинг, который не может быть правильно отображен в rss-ленте. Перейдите к оригинальной статье: <a href='http://inclab.ru/articles/realizaciya-svertki-v-scilab'>http://inclab.ru/articles/realizaciya-svertki-v-scilab</a></b></p>
<span class="image-description text-italic">Вывод графиков двух функций с настройкой толщины в Scilab</span>
</div>	                  
                  
<p>Глядя на изображение ниже, можно с уверенностью сказать, что результаты совпадают :) </p>                  
<div class="image-container" itemscope itemtype="http://schema.org/ImageObject">
    <picture>
        <source type="image/webp" srcset="/images/articles/realizaciya-svertki-v-scilab/gll1o6/rezultat-nalozheniya-vstroennoy-i-samopisnoy-funkcii-svertki.webp"/>
        <img class="image-in-container" src="http://inclab.ru/images/articles/realizaciya-svertki-v-scilab/gll1o6/rezultat-nalozheniya-vstroennoy-i-samopisnoy-funkcii-svertki.jpg" itemprop="contentUrl" alt="Результат наложения встроенной и самописной функции свёртки " title="Результат наложения встроенной и самописной функции свёртки "/>
    </picture>
    <span class="image-description text-italic" itemprop="description">Результат наложения встроенной и самописной функции свёртки </span>
</div>   
       
<p>Вот только масштаб и отсчёты не похожи на наши задынные промежутки. Поэтому, проведём масштабирование результатов.</p>                       
                  
<h2>Корректировка результатов свёртки</h2>                     
<p>Для корректного отображения результирующего графика нам потребуется несколько модифицировать функцию  \( myconv() \). Прежде всего, заведём переменную, отвечающую за сдвиг результата по горизонтальной оси:</p>                       
<div class="image-container">
<p><b>На этом месте располагается листинг, который не может быть правильно отображен в rss-ленте. Перейдите к оригинальной статье: <a href='http://inclab.ru/articles/realizaciya-svertki-v-scilab'>http://inclab.ru/articles/realizaciya-svertki-v-scilab</a></b></p>
<span class="image-description text-italic">Переменная сдвига</span>
</div>	 
  
<p>И изменим функцию \( myconv() \) следующим образом:</p>                       
<div class="image-container">
<p><b>На этом месте располагается листинг, который не может быть правильно отображен в rss-ленте. Перейдите к оригинальной статье: <a href='http://inclab.ru/articles/realizaciya-svertki-v-scilab'>http://inclab.ru/articles/realizaciya-svertki-v-scilab</a></b></p>
<span class="image-description text-italic">Обновлённая функция свёртки</span>
</div>	                  
                  
<p>Посмотрим, как теперь будет выглядеть результат:</p>                       
<div class="image-container">
<p><b>На этом месте располагается листинг, который не может быть правильно отображен в rss-ленте. Перейдите к оригинальной статье: <a href='http://inclab.ru/articles/realizaciya-svertki-v-scilab'>http://inclab.ru/articles/realizaciya-svertki-v-scilab</a></b></p>
<span class="image-description text-italic">Рисум график масштабированной свёртки</span>
</div>	                  
<div class="image-container" itemscope itemtype="http://schema.org/ImageObject">
    <picture>
        <source type="image/webp" srcset="/images/articles/realizaciya-svertki-v-scilab/1neakai/rezultat-modifikacii-svertki.webp"/>
        <img class="image-in-container" src="http://inclab.ru/images/articles/realizaciya-svertki-v-scilab/1neakai/rezultat-modifikacii-svertki.jpg" itemprop="contentUrl" alt="Результат модификации свёртки " title="Результат модификации свёртки "/>
    </picture>
    <span class="image-description text-italic" itemprop="description">Результат модификации свёртки </span>
</div>   
 <p>Стало значительно лучше: мы укладываемся в интервал и стартуем из нуля.</p>                     
                  
<h2>Реализация анимации свёртки двух сигналов</h2>                     
<p>Прежде всего, выведем графики сигналов, которые сворачиваем:</p>                       
<div class="image-container">
<p><b>На этом месте располагается листинг, который не может быть правильно отображен в rss-ленте. Перейдите к оригинальной статье: <a href='http://inclab.ru/articles/realizaciya-svertki-v-scilab'>http://inclab.ru/articles/realizaciya-svertki-v-scilab</a></b></p>
<span class="image-description text-italic">Рисуем графики функций f(t) и отражённой и сдвинутой g(t)</span>
</div>	                   
<p>Чтобы графики выглядели поприличнее, нужно уменьшить шаг дискретизации, например до \( d=0,01 \) и настроить их толщину с помощью \(  gca().children.children.thickness \) </p>                   
<div class="image-container" itemscope itemtype="http://schema.org/ImageObject">
    <picture>
        <source type="image/webp" srcset="/images/articles/realizaciya-svertki-v-scilab/akir99/grafiki-funkciy-f-t-i-g-t.webp"/>
        <img class="image-in-container" src="http://inclab.ru/images/articles/realizaciya-svertki-v-scilab/akir99/grafiki-funkciy-f-t-i-g-t.jpg" itemprop="contentUrl" alt="Графики функций f(t) и g(t)" title="Графики функций f(t) и g(t)"/>
    </picture>
    <span class="image-description text-italic" itemprop="description">Графики функций f(t) и g(t)</span>
</div>                   
                  
<p>Осталось лишь реализовать анимационный цикл.</p>   
<p>В <a href="https://inclab.ru/profi/osnova-animacii-v-scilab-imitaciya-dvijeniya">статье</a>дано описание основ анимации в Scilab.</p>  
 <p>Здесь на каждом шагу цикла мы рисуем i-ю точку свёртки, а зелёный график рисуем и стираем, что имитирует его движение.</p>   
<div class="image-container">
<p><b>На этом месте располагается листинг, который не может быть правильно отображен в rss-ленте. Перейдите к оригинальной статье: <a href='http://inclab.ru/articles/realizaciya-svertki-v-scilab'>http://inclab.ru/articles/realizaciya-svertki-v-scilab</a></b></p>
<span class="image-description text-italic">Эффект движущегося графика в Scilab</span>
</div>	                   
<p>В результате получим такую анимированную картинку движения графика и построения результирующего интеграла-свёртки:</p>    

<div class="image-container" itemscope="" itemtype="http://schema.org/ImageObject">
<picture><img class="image-in-container" src="http://inclab.ru/files/articles/realizaciya-svertki-v-scilab/51.gif" itemprop="contentUrl" alt="Анимация свёртки" title="Анимация свёртки" /></picture>
<span class="image-description text-italic" itemprop="description">Анимация свёртки</span>
</div>

  
  
  
  
  
  
                  
                  <p>Оригинальный адрес статьи: <a href='http://inclab.ru/articles/realizaciya-svertki-v-scilab'>http://inclab.ru/articles/realizaciya-svertki-v-scilab</a><p>]]></description>
			<pubDate>Tue, 21 Jun 2022 19:48:32 +0400</pubDate>
		</item>
		<item>
			<title><![CDATA[Основной принципа машинного обучения на простом примере Scilab]]></title>
			<link>http://inclab.ru/articles/nastroyka-lineynogo-klassifikatora-scilab</link>
			<guid>http://inclab.ru/articles/nastroyka-lineynogo-klassifikatora-scilab</guid>
			<description><![CDATA[<img src="http://inclab.ru" />Обучение линейного классификатора на эталонной выборке с целью правильно классифицировать жуков, относя их к гусеницам или божьим коровкам
<p>Рассмотрим задачу классификации данных на примере разделения садовых жуков.</p>
<p>Будем рассматривать гусениц и божьих коровок, разделяя их в зависимости от размера.</p>

<div class="tableWrapper">
<table>
  <tr>
    <td>Гусеницы длинные и узкие</td>
    <td>Божьи коровки короткие и широкие</td>  
  </tr>
  <tr>
    <td><center><img style="width: 100%; max-width: 100px" src="http://inclab.ru/images/articles/nastroyka-lineynogo-klassifikatora-scilab/zgk22w/osnovnoy-principa-mashinnogo-obucheniya-na-prostom-primere-scilab.jpg" /></center></td>
    <td><center><img style="width: 100%; max-width: 100px" src="http://inclab.ru/images/articles/nastroyka-lineynogo-klassifikatora-scilab/d3wx5/osnovnoy-principa-mashinnogo-obucheniya-na-prostom-primere-scilab.jpg" /></center></td>       
  </tr>    
  <tr>
    <td><small class="small">Image from <a href="https://pixabay.com/?utm_source=link-attribution&amp;utm_medium=referral&amp;utm_campaign=image&amp;utm_content=158701">Pixabay</a></small></td>
    <td><small class="small">Image from <a href="https://pixabay.com/?utm_source=link-attribution&amp;utm_medium=referral&amp;utm_campaign=image&amp;utm_content=297875">Pixabay</a></small></td>       
  </tr>  
</table>  
</div>

<p>Определим шкалу, где по вертикали будет откладываться длина жука, а по горизонтали  ширина.</p>
<p>Тогда на введённой шкале всех жуков можно условно разделить следующим образом:</p>
<div class="image-container" itemscope itemtype="http://schema.org/ImageObject">
    <picture>
        <source type="image/webp" srcset="/images/articles/nastroyka-lineynogo-klassifikatora-scilab/1ozgonh/zhuki-v-sisteme-koordinat-izobrazhenie-iz-1.webp"/>
        <img class="image-in-container" src="http://inclab.ru/images/articles/nastroyka-lineynogo-klassifikatora-scilab/1ozgonh/zhuki-v-sisteme-koordinat-izobrazhenie-iz-1.jpg" itemprop="contentUrl" alt="Жуки в системе координат. Изображение из (1)" title="Жуки в системе координат. Изображение из (1)"/>
    </picture>
    <span class="image-description text-italic" itemprop="description">Жуки в системе координат. Изображение из (1)</span>
</div>   

<p>Попробуем разделить наших жуков с помощью прямой. Уравнение прямой имеет вид:</p>
<p class="text-center"> \( y = Ax, \)  </p>

<p>где A  это коэффициент наклона.</p>
<p>Проведём пару разделительных линий:</p>

<div class="tableWrapper">
<table>
  <tr>
    <td style="width:50%"><div class="image-container" itemscope itemtype="http://schema.org/ImageObject">
    <picture>
        <source type="image/webp" srcset="/images/articles/nastroyka-lineynogo-klassifikatora-scilab/kh96um/popytka-razdelit-zhukov-1-izobrazhenie-iz-1.webp"/>
        <img class="image-in-container" src="http://inclab.ru/images/articles/nastroyka-lineynogo-klassifikatora-scilab/kh96um/popytka-razdelit-zhukov-1-izobrazhenie-iz-1.jpg" itemprop="contentUrl" alt="Попытка разделить жуков 1. Изображение из (1)" title="Попытка разделить жуков 1. Изображение из (1)"/>
    </picture>
    <span class="image-description text-italic" itemprop="description">Попытка разделить жуков 1. Изображение из (1)</span>
</div>   </td>
    <td style="width:50%"><div class="image-container" itemscope itemtype="http://schema.org/ImageObject">
    <picture>
        <source type="image/webp" srcset="/images/articles/nastroyka-lineynogo-klassifikatora-scilab/1mqccpr/popytka-razdelit-zhukov-2-izobrazhenie-iz-1.webp"/>
        <img class="image-in-container" src="http://inclab.ru/images/articles/nastroyka-lineynogo-klassifikatora-scilab/1mqccpr/popytka-razdelit-zhukov-2-izobrazhenie-iz-1.jpg" itemprop="contentUrl" alt="Попытка разделить жуков 2. Изображение из (1)" title="Попытка разделить жуков 2. Изображение из (1)"/>
    </picture>
    <span class="image-description text-italic" itemprop="description">Попытка разделить жуков 2. Изображение из (1)</span>
</div> </td>       
  </tr>    
  <tr>
    <td>Тут мы попали в гусениц. То, что выше линии  гусеницы, то, что ниже линии - гусеницы и божьи коровки. Плохо разделили 	&#129320; </td>
    <td>Тут мы ни в кого не попали, однако, выше линии оказались и гусеницы, и  божьи коровки, а снизу  никого. Совсем не разделили жуков &#129300;</td>       
  </tr>  
</table>  
</div>

<p>Итак, нам надо подобрать коэффициент наклона прямой таким образом, чтобы снизу были божьи коровки, а сверху - гусеницы:</p>
<div class="image-container" itemscope itemtype="http://schema.org/ImageObject">
    <picture>
        <source type="image/webp" srcset="/images/articles/nastroyka-lineynogo-klassifikatora-scilab/1t3gvd8/idealnyy-klassifikator-izobrazhenie-iz-1.webp"/>
        <img class="image-in-container" src="http://inclab.ru/images/articles/nastroyka-lineynogo-klassifikatora-scilab/1t3gvd8/idealnyy-klassifikator-izobrazhenie-iz-1.jpg" itemprop="contentUrl" alt="Идеальный классификатор. Изображение из (1)" title="Идеальный классификатор. Изображение из (1)"/>
    </picture>
    <span class="image-description text-italic" itemprop="description">Идеальный классификатор. Изображение из (1)</span>
</div>

<p>Тогда, выбирая некоторого жука на анализ, по его координатам (длине и ширине),  мы поймём, где, относительно разделителя, он находится, а значит, сможем сказать, божья коровка это или гусеница.</p>
<p>Вот как-то, как на графике:</p>
 <div class="image-container" itemscope itemtype="http://schema.org/ImageObject">
    <picture>
        <source type="image/webp" srcset="/images/articles/nastroyka-lineynogo-klassifikatora-scilab/1juut62/opredelenie-tipa-zhuka-po-ego-polozheniyu-izobrazhenie-iz-1.webp"/>
        <img class="image-in-container" src="http://inclab.ru/images/articles/nastroyka-lineynogo-klassifikatora-scilab/1juut62/opredelenie-tipa-zhuka-po-ego-polozheniyu-izobrazhenie-iz-1.jpg" itemprop="contentUrl" alt="Определение типа жука по его положению. Изображение из (1)" title="Определение типа жука по его положению. Изображение из (1)"/>
    </picture>
    <span class="image-description text-italic" itemprop="description">Определение типа жука по его положению. Изображение из (1)</span>
</div> 
  
<h2>Тренировочные данные</h2> 
<p>Сейчас мы займемся тренировкой (обучением) нашего линейного классификатора и научим его правильно классифицировать жуков, относя их к гусеницам или божьим коровкам.</p>
<p>Первое, что нам понадобится - это эталонные данные, на основе которых мы будет тренировать классификатор. </p>
<p>Чтобы не усложнять себе жизнь, мы ограничимся двумя простыми примерами, приведенными ниже.</p>
<div class="tableWrapper">
<table>
  <tr>
    <th>Пример</th>
    <th>Ширина</th>     
    <th>Длина</th> 
    <th>Жук</th> 
  </tr>      
  <tr>
    <td>1</td>
    <td>3.0</td>     
    <td>1.0</td> 
    <td>Божья коровка</td> 
  </tr>    
  <tr>
    <td>2</td>
    <td>1.0</td>     
    <td>3.0</td> 
    <td>Гусеница</td> 
  </tr>  
</table>  
</div>

<p>Итак, для обучения классификатора у нас в арсенале имеются:</p>
<ul>
  <li>жук, имеющий ширину 3.0 и длину 1.0, который, как нам известно, является божьей коровкой; </li>
  <li>жук, имеющий ширину 1.0 и длину 3.0, которым является гусеницей.</li>
</ul>  

<p>Изобразим их на нашей шкале:</p>
 <div class="image-container" itemscope itemtype="http://schema.org/ImageObject">
    <picture>
        <source type="image/webp" srcset="/images/articles/nastroyka-lineynogo-klassifikatora-scilab/1cnyjp0/polozhenie-ehtalonnyh-zhukov-na-koordinatnoy-setke-izobrazhenie-iz-1.webp"/>
        <img class="image-in-container" src="http://inclab.ru/images/articles/nastroyka-lineynogo-klassifikatora-scilab/1cnyjp0/polozhenie-ehtalonnyh-zhukov-na-koordinatnoy-setke-izobrazhenie-iz-1.jpg" itemprop="contentUrl" alt="Положение эталонных жуков на координатной сетке. Изображение из (1)" title="Положение эталонных жуков на координатной сетке. Изображение из (1)"/>
    </picture>
    <span class="image-description text-italic" itemprop="description">Положение эталонных жуков на координатной сетке. Изображение из (1)</span>
</div> 
  
<p>И попробуем построить классификатор. То есть, провести прямую \( y=Ax \) с некоторым коэффициентом наклона \(  A \). </p>
<p>Возьмём \( А=0.25\). Тогда уравнение прямой будет иметь вид \( y=0.25x\). Изобразим наш классификатор на графике с жуками и посмотрим, каких результатов мы достигли:</p>
 <div class="image-container" itemscope itemtype="http://schema.org/ImageObject">
    <picture>
        <source type="image/webp" srcset="/images/articles/nastroyka-lineynogo-klassifikatora-scilab/1w1ntll/klassifikator-s-a-0-25-izobrazhenie-iz-1.webp"/>
        <img class="image-in-container" src="http://inclab.ru/images/articles/nastroyka-lineynogo-klassifikatora-scilab/1w1ntll/klassifikator-s-a-0-25-izobrazhenie-iz-1.jpg" itemprop="contentUrl" alt=" Классификатор с А=0.25. Изображение из (1)" title=" Классификатор с А=0.25. Изображение из (1)"/>
    </picture>
    <span class="image-description text-italic" itemprop="description"> Классификатор с А=0.25. Изображение из (1)</span>
</div> 

<p>Так себе классификатор, честно говоря.</p>
<p>С таким классификатором мы не можем делать выводы вида: «Если точка данных располагается над линией, то она соответствует гусенице».</p>
<p>А именно к этому мы и стремимся: по графику понять, что за жук перед нами. Если он выше прямой - гусеница,  ниже - коровка.</p>

<h2>Процесс настройки  классификатора</h2>
<p>Приступим к выработке алгоритма, который бы подбирал оптимальный коэффициент наклона прямой.</p>
<h4>Шаг 1</h4>
<p>Возьмём первого эталонного жука - божью коровку: у неё ширина 3 (это х), длина 1 (это у). Подставим ширину жука в наш классификатор:</p>
<p class="text-center"> \( y = 0.25 \cdot 3 = 0.75 \)  </p>  
  
<p>Получили \(у=0.75 \), а по эталону должно было получиться \( y_э = 1 \). Налицо отклонение от эталона.</p>


<h4>Шаг 2</h4> 
<p>Считаем ошибку которая вычисляется, как разница между желаемым значением и фактическим результатом.</p>

<p class="text-center"> \(e = y_э - y = 1 - 0.75 = 0.25 \)  </p>    
<p>Давайте подумаем, каким должно быть подходящее желаемое значение \( y  \). </p>
<p>Если положить его равным 1, как в эталоне, то линия пройдет через точку с координатами (х, у) = (3; 1), соответствующую божьей коровке. Само по себе это неплохо, но это не совсем то, что нам нужно. </p>
<p>Нам желательно, чтобы линия проходила над этой точкой. Почему? Да потому, что мы хотим, чтобы точки данных божьей коровки лежали под линией, а не нанизывались на неё. </p>
   
<p>Поэтому, мы немного приподнимем классификатор, т.е. </p> 
<p class="text-center"><b>отступим от \( y_э = 1 \) на небольшое значение \( D=0.1\) </b> </p>  
  
<p>Тогда ошибка будет вычисляться следующим образом:</p>
<p class="text-center"> \(e = y_э - y = 1.1 - 0.75 = 0.35 \)  </p>     
<p>На графике наши манипуляции с углом наклона прямой будут выглядеть так:</p>
 <div class="image-container" itemscope itemtype="http://schema.org/ImageObject">
    <picture>
        <source type="image/webp" srcset="/images/articles/nastroyka-lineynogo-klassifikatora-scilab/1cr6sfh/nemnogo-korrektiruem-ugol-naklona-klassifikatora-izobrazhenie-iz-1.webp"/>
        <img class="image-in-container" src="http://inclab.ru/images/articles/nastroyka-lineynogo-klassifikatora-scilab/1cr6sfh/nemnogo-korrektiruem-ugol-naklona-klassifikatora-izobrazhenie-iz-1.jpg" itemprop="contentUrl" alt="Немного корректируем угол наклона классификатора. Изображение из (1)" title="Немного корректируем угол наклона классификатора. Изображение из (1)"/>
    </picture>
    <span class="image-description text-italic" itemprop="description">Немного корректируем угол наклона классификатора. Изображение из (1)</span>
</div> 
  
<h4>Шаг 3</h4> 
<p>Выясним как связаны \(A\) и \(D\).</p>
<p>Так как брать величину поправки с потолка нехорошо, формализуем поиск этого самого \(D\) - величины, на которую мы хотим изменить наклон классификатора.</p>
<p>Изначально классификатор имел уравнение</p>
<p class="text-center"> \(y=Ax \)  </p>    
<p>Приподняв его, мы произвели изменение угла наклона, получив прямую  </p>
<p class="text-center"> \(y=(A+D)x \)  </p>   
<p>А теперь подставим эти данные в ошибку \( e \): </p>
<p class="text-center"> \(e = y_э - y = (A + D)x - Aх = Aх + Dx - Ax = Dx. \)  </p>
<p>Итак, ошибка  \( e \)  связана с \( D \)  очень простым соотношением. Используем информацию об ошибку для определения величины поправки \( D \):</p>
<p class="text-center"> \( D = \frac{e}{x} \)  </p>
<p>Теперь мы можем использовать ошибку  \( e \) для вычисления величины, на которую следует изменить наклон классификатора. В нашем случае:</p>
<p class="text-center"> \( D = \frac{0.35}{3}=0.1167 \)  </p>

<h4>Шаг 4</h4> 
<p>Корректируем наклон классификатора. Текущее значение \(А=0.25\)  необходимо изменить на величину \( D = 0.1167 \), стало быть, улучшенное уравнение классификатора примет вид: </p>
<p class="text-center"> \( y = (0.25+0.1167)x=0.3667x \)  </p>
<p>Итак, новый классификатор \( у=0,3667х \) получен на основе всего одного эталонного значения.</p>

<p>Проделаем те же манипуляции для второго жука, но уже с подстроенным классификатором \( у=0,3667х \).</p>
<h4>Шаг 1</h4>
<p>Подставим гусеницу \( (x,y) = (1, 3) \)   в классификатор:</p>
<p class="text-center"> \( y = 0.3667 \cdot 1 = 0.3667 \)  </p>  
<h4>Шаг 2</h4> 
<p>Посмотрим на эталон:</p>
<p class="text-center"> \( y_э  = 3  \)  </p> 
<p>Отступим от эталона на \(D=0.1\) и посчитаем ошибку:</p>
<p class="text-center"> \(e = 2.9 - 0.3667 = 2.5333 \)  </p> 
<h4>Шаг 3</h4> 
<p>Вычислим величину \( D  \), на которую нужно изменить наклон классификатора: .</p>
<p class="text-center"> \( D = \frac{2.5333}{1}=2.5333 \)  </p>
<h4>Шаг 4</h4> 
<p>Корректируем наклон классификатора: </p>
<p class="text-center"> \( y = (0.3667 + 2.5333)x=2,9x \)  </p>


<p>Отобразим на графике проделанные манипуляции:</p>
 <div class="image-container" itemscope itemtype="http://schema.org/ImageObject">
    <picture>
        <source type="image/webp" srcset="/images/articles/nastroyka-lineynogo-klassifikatora-scilab/i0soqz/process-nastroyki-klassifikatora-po-dvum-ehtalonnym-dannym-izobrazhenie-iz-1.webp"/>
        <img class="image-in-container" src="http://inclab.ru/images/articles/nastroyka-lineynogo-klassifikatora-scilab/i0soqz/process-nastroyki-klassifikatora-po-dvum-ehtalonnym-dannym-izobrazhenie-iz-1.jpg" itemprop="contentUrl" alt="Процесс настройки классификатора по двум эталонным данным. Изображение из (1)" title="Процесс настройки классификатора по двум эталонным данным. Изображение из (1)"/>
    </picture>
    <span class="image-description text-italic" itemprop="description">Процесс настройки классификатора по двум эталонным данным. Изображение из (1)</span>
</div> 
  

<p>Глядя на график, мы видим, что нам не удалось добиться того наклона прямой, которого мы хотели. </p>
<p>Линия обновляется каждый раз, подстраиваясь под то целевое значение у, которое мы задаем. В результате этого мы отбрасываем весь предыдущий опыт обучения, который могли бы использовать, и учимся лишь на самом последнем примере.</p>
<p>Давайте это исправим.</p>

<h2>Сглаживание поправки</h2>
<p>Воспользуемся идеей, которая играет ключевую роль в машинном обучении.</p>
<p>Вместо того чтобы каждый раз с энтузиазмом заменять \(А \)  новым значением, мы используем лишь некоторую долю поправки \(D \) , а не всю ее целиком. </p>

<!--p>Благодаря этому мы движемся в том направлении, которое подсказывает эталонные данные, но делаем это осторожно, сохраняя некоторую часть предыдущего значения, которое было получено в результате, возможно, многих предыдущих тренировочных циклов. </p>

<p>У такого сглаживания есть еще один очень мощный и полезный побочный эффект. </p>
<p>Если эталонные данные не являются надежными и могут содержать ошибки или шум (а в реальных измерениях обычно присутствуют оба этих фактора), то сглаживание уменьшает их влияние.</p-->

<p>Ну что ж, сделаем перерасчет шагов 1-3 для обоих жуков, на этот раз добавив сглаживание в формулу обновления коэффициента наклона:</p>
<p class="text-center"> \( D = L \frac{e}{х} \) </p>
<p>Фактор сглаживания, обозначенный здесь как \( L\), часто называют коэффициентом скорости обучения. </p>

<p>Выберем  \( L=0,5 \) в качестве разумного начального приближения. Это означает, что мы собираемся использовать поправку вдвое меньшей величины, чем без сглаживания.</p>

<p>Повторим шаги 1-4 для обоих жуков, используя начальное значение \( А=0,25 \).</p>
<p>Тестирование божьей коровки \( (x,y) = (3, 1) \)  дает нам:</p>
<ol>
<li>Вычисленное значение 
  <p class="text-center">\(у = 0.25 \cdot 3 = 0.75 \) </p>
  </li>
<li><p>При целевом значении   \(y_э = 1.1 \) ошибка \( e = 0.35 \)</p></li>
<li>Поправка равна 
  <p class="text-center">\( D = L \frac{e}{х} = 0.5 \frac{0,35}{3} = 0.0583 \)</p>
  </li>
<li>Обновленное значение 
  <p class="text-center">\( А = 0.25 + 0.0583 = 0.3083 \)</p> 
  <p>В итоге на первом жуке уравнение прямой преобразуется к виду</p>
  <p class="text-center">\( y = 0.3083x\) </p>
  </li>
</ol>

<!--p>Проверим, как работает новый классификатор на божьей коровке: при \(х=3.0 \) получим вычисленное значение </p>
  <p class="text-center"> \(у = 0.3083 \cdot 3.0 = 0.9250 \) </p>
<p>Как видим, расположение этой линии относительно оказалось неудачным  она проходит ниже значения 1,1, но этот результат не так уж и плох, если учесть, что это была всего лишь первая попытка. Главное то, что мы движемся в правильном направлении от первоначальной линии.</p-->



<p>Проведём расчеты с новым значением \( А \) для гусеницы \( (x,y) = (1, 3) \).</p>
<ol>
<li>Вычисленное значение 
  <p class="text-center">\(у = 0.3083 \cdot 1 = 0.3083 \) </p>
  </li>
<li><p>При целевом значении   \(y_э = 2.9 \) ошибка \( e = 2.9 - 0.3083 = 2.5917 \)</p></li>
<li>Поправка равна 
  <p class="text-center">\( D = L \frac{e}{х} = 0.5 \frac{2.5917}{1} = 1.2958 \)</p>
  </li>
<li>Теперь обновленное значение
  <p class="text-center">\( А = 0.3083 + 1.2958 = 1.6042 \)</p> 
  <p>В итоге на втором жуке уравнение прямой преобразуется к виду</p>
  <p class="text-center">\( y = 1.6042x\) </p>
  </li>
</ol>
<p>Отобразим на графике начальный, улучшенный и окончательный варианты классификатора, чтобы убедиться в том, что сглаживание обновлений приводит к более удовлетворительному расположению разделительной линии между областями данных божьих коровок и гусениц:</p>
 <div class="image-container" itemscope itemtype="http://schema.org/ImageObject">
    <picture>
        <source type="image/webp" srcset="/images/articles/nastroyka-lineynogo-klassifikatora-scilab/7e5p3h/rezultat-nastroyki-klassifikatora-s-koehfficientov-obucheniya-0-5-izobrazhenie-iz-1.webp"/>
        <img class="image-in-container" src="http://inclab.ru/images/articles/nastroyka-lineynogo-klassifikatora-scilab/7e5p3h/rezultat-nastroyki-klassifikatora-s-koehfficientov-obucheniya-0-5-izobrazhenie-iz-1.jpg" itemprop="contentUrl" alt="Результат настройки классификатора с коэффициентов обучения=0.5. Изображение из (1)" title="Результат настройки классификатора с коэффициентов обучения=0.5. Изображение из (1)"/>
    </picture>
    <span class="image-description text-italic" itemprop="description">Результат настройки классификатора с коэффициентов обучения=0.5. Изображение из (1)</span>
</div> 
  
<p>Это действительно отличный результат!</p>
<p>Всего лишь с двумя простыми тренировочными данными и относительно простым методом обновления мы, используя сглаживание поправки на основе скорости обучения, смогли очень быстро получить хорошую разделительную линию \( у=Ах \).</p>

<p>Теперь подав на вход данного классификатора некоторого жука \( (x,y) \), мы сможем определить, гусеница он или божья коровка, лишь взглянув на график.
Стоит отметить, что классификатор будет тем лучше настроен, чем больше эталонных данных он обработает.</p>

<h2>Реализация на Scilab настройки линейного классификатора по эталонной выборке</h2>

<p>Для начала, создадим массив с жуками</p>

<div class="image-container">
<p><b>На этом месте располагается листинг, который не может быть правильно отображен в rss-ленте. Перейдите к оригинальной статье: <a href='http://inclab.ru/articles/nastroyka-lineynogo-klassifikatora-scilab'>http://inclab.ru/articles/nastroyka-lineynogo-klassifikatora-scilab</a></b></p>
<span class="image-description text-italic">Матрица выборки в Scilab.</span>
</div>	 

<p>Далее, чтобы не привязываться к размерностям и без опаски добавлять\удалять элементы выборки, узнаем число строк в матрице:</p>
<div class="image-container">
<p><b>На этом месте располагается листинг, который не может быть правильно отображен в rss-ленте. Перейдите к оригинальной статье: <a href='http://inclab.ru/articles/nastroyka-lineynogo-klassifikatora-scilab'>http://inclab.ru/articles/nastroyka-lineynogo-klassifikatora-scilab</a></b></p>
<span class="image-description text-italic">узнаем размер выборки.</span>
</div>	
<p>Пусть тренировочная выборка составляет 40% от всей выборки - на ней будем настраивать классификатор,  на остальных 60% будем проверять классификатор:</p>
<div class="image-container">
<p><b>На этом месте располагается листинг, который не может быть правильно отображен в rss-ленте. Перейдите к оригинальной статье: <a href='http://inclab.ru/articles/nastroyka-lineynogo-klassifikatora-scilab'>http://inclab.ru/articles/nastroyka-lineynogo-klassifikatora-scilab</a></b></p>
<span class="image-description text-italic">обучающая и эксериментальная выборки</span>
</div>	

<p>Зададим  начальный коэффициент классификатора \( A \), скорость обучения \( L \), величину поправки \( d \): </p>
<div class="image-container">
<p><b>На этом месте располагается листинг, который не может быть правильно отображен в rss-ленте. Перейдите к оригинальной статье: <a href='http://inclab.ru/articles/nastroyka-lineynogo-klassifikatora-scilab'>http://inclab.ru/articles/nastroyka-lineynogo-klassifikatora-scilab</a></b></p>
<span class="image-description text-italic">обучающая и эксериментальная выборки</span>
</div>	

<p>Проведём в цикле обучение на тренировочной выборке:</p>
<div class="image-container">
<p><b>На этом месте располагается листинг, который не может быть правильно отображен в rss-ленте. Перейдите к оригинальной статье: <a href='http://inclab.ru/articles/nastroyka-lineynogo-klassifikatora-scilab'>http://inclab.ru/articles/nastroyka-lineynogo-klassifikatora-scilab</a></b></p>
<span class="image-description text-italic">обучающая и эксериментальная выборки</span>
</div>	

<p>Функция проверки "божья ли коровка попалась" имеет вид:</p>
<div class="image-container">
<p><b>На этом месте располагается листинг, который не может быть правильно отображен в rss-ленте. Перейдите к оригинальной статье: <a href='http://inclab.ru/articles/nastroyka-lineynogo-klassifikatora-scilab'>http://inclab.ru/articles/nastroyka-lineynogo-klassifikatora-scilab</a></b></p>
<span class="image-description text-italic">проверяем жука на коровкость</span>
</div>	
<p>Чтобы посмотреть, как прошла тренировка классификатора, нарисуем жуков, покрасив божьих коровок красным, на которых тренировались и сам классификатор:</p>  
 <div class="image-container">
<p><b>На этом месте располагается листинг, который не может быть правильно отображен в rss-ленте. Перейдите к оригинальной статье: <a href='http://inclab.ru/articles/nastroyka-lineynogo-klassifikatora-scilab'>http://inclab.ru/articles/nastroyka-lineynogo-klassifikatora-scilab</a></b></p>
<span class="image-description text-italic">Вывод тренировочной выборки и классификатора</span>
</div> 
<div class="image-container" itemscope itemtype="http://schema.org/ImageObject">
    <picture>
        <source type="image/webp" srcset="/images/articles/nastroyka-lineynogo-klassifikatora-scilab/vmh3f3/rezultat-nastroyki-klassifkatora-i-dannye-iz-obuchayuschey-vyborki.webp"/>
        <img class="image-in-container" src="http://inclab.ru/images/articles/nastroyka-lineynogo-klassifikatora-scilab/vmh3f3/rezultat-nastroyki-klassifkatora-i-dannye-iz-obuchayuschey-vyborki.jpg" itemprop="contentUrl" alt="Результат настройки классифкатора и данные из обучающей выборки." title="Результат настройки классифкатора и данные из обучающей выборки."/>
    </picture>
    <span class="image-description text-italic" itemprop="description">Результат настройки классифкатора и данные из обучающей выборки.</span>
</div> 
   
<p>А теперь посмотрим, как классификатор разделяет оставшихся жуков:</p>  
 <div class="image-container">
<p><b>На этом месте располагается листинг, который не может быть правильно отображен в rss-ленте. Перейдите к оригинальной статье: <a href='http://inclab.ru/articles/nastroyka-lineynogo-klassifikatora-scilab'>http://inclab.ru/articles/nastroyka-lineynogo-klassifikatora-scilab</a></b></p>
<span class="image-description text-italic">Разделение классификатором экспериментальной выборки</span>
</div> 
<div class="image-container" itemscope itemtype="http://schema.org/ImageObject">
    <picture>
        <source type="image/webp" srcset="/images/articles/nastroyka-lineynogo-klassifikatora-scilab/kvaidf/rezultat-nastroyki-klassifkatora-i-dannye-iz-ehksperimentalnoy-vyborki.webp"/>
        <img class="image-in-container" src="http://inclab.ru/images/articles/nastroyka-lineynogo-klassifikatora-scilab/kvaidf/rezultat-nastroyki-klassifkatora-i-dannye-iz-ehksperimentalnoy-vyborki.jpg" itemprop="contentUrl" alt="Результат настройки классифкатора и данные из экспериментальной выборки." title="Результат настройки классифкатора и данные из экспериментальной выборки."/>
    </picture>
    <span class="image-description text-italic" itemprop="description">Результат настройки классифкатора и данные из экспериментальной выборки.</span>
</div> 
   
 
  
<p>Прекрасно справляется. В конец выборки можно подобавлять значения и посмотреть, как справляется классификатор. А также, рекомендуется поизменять размер тренировочной выборки и параметры \( d \) и \( L \) .</p>

<p>Данная статья создана на основе <a id="tarikbook" target="_blank" href="https://books.google.ru/books?id=wynnDwAAQBAJ">чудесной книги</a>(1) с реализацией автором  приведённых примеров на Scilab.</p>
<p>Оригинальный адрес статьи: <a href='http://inclab.ru/articles/nastroyka-lineynogo-klassifikatora-scilab'>http://inclab.ru/articles/nastroyka-lineynogo-klassifikatora-scilab</a><p>]]></description>
			<pubDate>Fri, 27 May 2022 20:58:33 +0400</pubDate>
		</item>
		<item>
			<title><![CDATA[Создаём движущийся маятник в Scilab]]></title>
			<link>http://inclab.ru/articles/animaciya-stabilizacii-mayatnika-v-scilab</link>
			<guid>http://inclab.ru/articles/animaciya-stabilizacii-mayatnika-v-scilab</guid>
			<description><![CDATA[<img src="http://inclab.ru" />Стабилизация программной позиции маятника путём линеаризации уравнений в отклонениях
<p>На примере простой механической системы посмотрим, как "оживить" картинки в Scilab без дополнительных плагинов и без использования <em>comet()</em>.</p>
<p>Будем стабилизировать простой математический маятник.</p>
<div class="image-container" itemscope itemtype="http://schema.org/ImageObject">
    <picture>
        <source type="image/webp" srcset="/images/articles/animaciya-stabilizacii-mayatnika-v-scilab/9ux9bc/risunok-matematicheskiy-mayatnik.webp"/>
        <img class="image-in-container" src="http://inclab.ru/images/articles/animaciya-stabilizacii-mayatnika-v-scilab/9ux9bc/risunok-matematicheskiy-mayatnik.jpg" itemprop="contentUrl" alt="Рисунок. Математический маятник." title="Рисунок. Математический маятник."/>
    </picture>
    <span class="image-description text-italic" itemprop="description">Рисунок. Математический маятник.</span>
</div>


<p>Уравнения которого имеют вид.</p>
<p class="text-center">\( \ddot{\theta} + b\dot{\theta} + asin\theta = cT \)</p>
<p>Стабилизировать маятник будем в программной  позиции \( \theta = \delta=const \) с помощью вращающего момента:  \( T = u \)</p>
<p class="text-center">\( \ddot{\theta} + b\dot{\theta} + asin\theta = cu \) (1)</p>

<h2>Найдём программное управление \( u^p \)</h2>
<p>Программное управление \( u^p \) - это управление, которое обеспечивает программную позицию, т.е. отклоняет маятник на угол \( \delta \). Подставим \( \theta = \delta \)  в (1):</p>
<p class="text-center">\( \ddot{\delta} + b\dot{\delta} + asin\delta = cu^p \)</p>
<p>Так как угол \( \delta \) - это постояннная величина, ведь мы хотим, чтобы маятник остановился в таком положении, её производные будут равны 0, следовательно:</p>
<p class="text-center">\( 0 + 0 + asin\delta = cu^p \) </p>

<p>Откуда можно выразить искомое программное управление \( u^p \):</p>
<p class="text-center">\( u^p =  \frac{a}{c}sin\delta\) (2) </p>

<h2>Перейдём к системе д.у.</h2>
<p>Подробно переход к системе ДУ рассматривается в <a href="https://inclab.ru/beginner/reshenie-differencialnih-uravnenij-v-scilab">этом материале</a>. 

<p>Введём фазовые координаты:</p>
<p class="text-center">\( x_1 = \theta, x_2 = \dot{\theta} \) </p>  
  
<p>Тогда исходное уравнение (1) второго порядка сведётся к системе из двух дифференциальных уравнений первого порядка:</p>
<p class="text-center"> 
  \begin{cases} \dot{x_1} = x_2 \\ \dot{x_2} = cu - bx_2 - asinx_1  \quad (3)\end{cases} 
 </p>

<h2>Программная позиция для системы </h2>  
<p>Наша задача - обеспечить скорейшую остановку маятника в заданной позиции, т.е. перевести маятник в позицию \( \theta = \delta \), где скорость=0. Запишем это условие для фазовых координат</p>
<p class="text-center">\( x_1 = \delta, x_2 = \dot{\delta} = 0 \) </p>    
<p>Итак, для системы (3) нас интересует позиция:</p>
<p class="text-center"> 
  \begin{cases} \dot{x_1} = \delta \\ \dot{x_2} = 0 \quad (4) \end{cases} 
 </p>  
<p>Для того, чтобы к системе (3) можно было применят теоремы об асимтотической устойчивости нулевого положения равновесия, нам неоходимо перенести систему коордиинат в точку, где позиция \( (\delta, 0) \) - это нуль.</p>  
  
<h2>Переход к системе в отклонениях </h2>  
<p>Введём отклонения от программной позиции (4) в системе (3):</p>
<p class="text-center"> 
  \begin{cases} y_1 = x_1 - \delta \\ y_2 =x_2 - 0  \end{cases} (5)
  
  \begin{cases} x_1 = y_1 + \delta \\ x_2 =y_2   \end{cases} 
 </p>
  
<p>Подставим (5) в (3), тогда система в отклонениях примет вид: </p>  
<p class="text-center"> 
  \begin{cases} \dot{y_1} = y_2 \\ \dot{y_2} = cu - by_2 - asin\left( y_1 + \delta \right)  \end{cases}
 </p>  



<h2>Корректировка управляющего воздействия</h2>
<p>Как правило, для эффективного управления динамическими системами одного программного управления \( u^p \) бывает недостаточно из-за неточностей в измерениях и влияния внешних источников, поэтому мы введём добавочное стабилизирующее управление \( u^{st}\) :</p>
<p class="text-center">\( u = u^p + u^{st} \)</p>
  
<p>Тогда системе в отклонениях получим: </p>
<p class="text-center"> 
  \begin{cases} \dot{y_1} = y_2 \\ \dot{y_2} = c\left( u^p + u^{st} \right) - by_2 - asin\left( y_1 + \delta \right)   \end{cases}, или
  \begin{cases} \dot{y_1} = y_2 \\ \dot{y_2} = c \cdot \frac{a}{c} sin\delta\  + c \cdot  u^{st} - by_2 - asin\left( y_1 + \delta \right)   \end{cases}, что приводит к
  \begin{cases} \dot{y_1} = y_2 \\ \dot{y_2} = asin\delta\  + cu^{st} - by_2 - asin\left( y_1 + \delta \right) \quad (6)  \end{cases}
   </p>  
  
<h2>Линеаризация системы в отклонениях</h2>  
<p>Так как эффективнее всего теоремы об устойчивости работают для линейных систем, начнём с линеаризации системы (6).</p>  
<p>Разложжим \( sin\left( y_1 + \delta \right) \) в окрестности нуля:</p>  
 
<p class="text-center">\( sin\left( y_1 + \delta \right) \sim  y_1cos(\delta) + sin\delta \)</p>  
<p>Подставляя данное разложение в (6), получим:</p>   
 <p class="text-center"> 
  \begin{cases} \dot{y_1} = y_2 \\ \dot{y_2} = asin\delta\  + cu^{st} - by_2 - ay_1cos(\delta) - asin\delta  \end{cases}
   </p>   
<p>Таким образом, система (6) примет вид:  </p>
 <p class="text-center"> 
  \begin{cases} \dot{y_1} = y_2 \\ \dot{y_2} = - acos(\delta)y_1  - by_2   + cu^{st}  \quad (7) \end{cases}
   </p>    
 
<p>Запишем систему (7) в векторно-матричном виде, чтобы с ней было бы удобнее работать:  </p>

 <p class="text-center"> 
    \begin{matrix}
 \dot y= {  \begin{pmatrix} 0 & 1 \\  - acos(\delta) & -b \end{pmatrix} } y +  {  \begin{pmatrix} 0 \\  c \end{pmatrix} } u^{st} \quad (8) 
   \end{matrix}   
   </p> 
  
  
<h2>Найдём стабилизирующее управление \(u^{st} \) </h2>   
<p>Прежде всего, сделаем из системы (8) однородную систему. Для этого выберем \(u^{st} \) вида: </p>
<p class="text-center">\( u^{st}= -Ky, \quad  K = (k_1, k_2) \quad (9) \)</p>
 <p>и подставив (9) в (8), получим чудесную линейную однородную систему дифуров: </p> 
  <p class="text-center"> 
    \begin{matrix}
 \dot y= {  \begin{pmatrix} 0 & 1 \\  - acos(\delta)-сk_1 & -b-ck_2 \end{pmatrix} } y  \quad (10) 
   \end{matrix}   
   </p>  
<p>Стабилизиирующее управление \(u^{st} \) - это управление, которое стабилизирует систему. То есть обеспечивает асимтотическую устойчивость нулевого положения равновесия этой системы.</p>
<p>В обычных условиях, система (10) сосвем не обязательно будет ас. устойчивой, но чтобы победить эту несправедливость мы и ввели управление \(u^{st} \) в виде \( u^{st}= -Ky \), подрегулировав значения \(k_j \) которого, мы добьёмся того, чтобы корни характеристического уравнения системы (10) были бы "левыми".</p>  
<p>Значения \(k_j \), кстати, называются коэфффицентами усиления.</p>
  
<p>Итак, нам предстоит найти условия на основе \(k_j \), при которых собственные значения матрицы </p>  
  <p class="text-center"> 
    \begin{matrix}
 {  \begin{pmatrix} 0 & 1 \\  - acos(\delta)-сk_1 & -b-ck_2 \end{pmatrix} }  \quad (11) 
   \end{matrix}   
   </p>     

<p>были бы расположены в левой полуплоскости комплекной плоскости.</p>  
  
<h3>Условия гурвицевости матрицы (11)</h3>     
 <p>Чтобы не утруждаться поиском с.з. и с.в. матрицы (11), воспользуемся критерием асисмтотической устойчивости вида:</p>   
  <p class="text-center"> 
  \begin{cases} trA < 0 \\ |A| > 0 \end{cases} 
</p>    
 <p>Откуда получим условия на \(k_1 \) и \(k_2 \) :</p>   
  <p class="text-center"> 
  \begin{cases} k_2 > -\frac{b}{c} < 0 \\ k_1 > \frac{a}{c}cos(\delta)  \end{cases} 
</p>      

 <p>Итак, выбирая стабилизирующее упарвление в виде:</p>   
<p class="text-center">\(u^{st} = -k_1y_1 - k_2y_2 \) </p>   
<p>мы добьёмся стабилизации линейной системы в отклонениях (7), что, в свою очередь будет значить схождение моделируемого движения маятника к программной позиции при решении задачи стабилизации положения равновесия, где управление будет складываться из программного и стабилизирующего управлений</p>      
 <p class="text-center">\(u = u^p + u^{st} \) </p>     
    
<h2>Программная реализация</h2>
<p>Приступим, наконец, к моделированию процесса стабилизации математического маятника в Scilab. Для этого нам понадобятся:</p>
<ul>
<li>Система (3)</li>
<li>Управление (2)</li>
<li>Управление (12)</li>
<li>Замена (5)</li>
</ul>
<p>Сначала зададим параметры, фигурирующие в системе:</p>    
<div class="image-container">
<p><b>На этом месте располагается листинг, который не может быть правильно отображен в rss-ленте. Перейдите к оригинальной статье: <a href='http://inclab.ru/articles/animaciya-stabilizacii-mayatnika-v-scilab'>http://inclab.ru/articles/animaciya-stabilizacii-mayatnika-v-scilab</a></b></p>
<span class="image-description text-italic">Параметры математического маятника.</span>
</div>	    
    
<p>Далее зададим программное положение \(\delta \) и пaраметры стабилизирующего управления \(k_j \):</p>    
<div class="image-container">
<p><b>На этом месте располагается листинг, который не может быть правильно отображен в rss-ленте. Перейдите к оригинальной статье: <a href='http://inclab.ru/articles/animaciya-stabilizacii-mayatnika-v-scilab'>http://inclab.ru/articles/animaciya-stabilizacii-mayatnika-v-scilab</a></b></p>
<span class="image-description text-italic">Программная позиция и коэффициенты усиления</span>
</div>	

<p>Зададим начальные условия, шаг дискретизации и отрезок интегрирования для решения системы ОДУ в Scilab:</p>
<div class="image-container">
<p><b>На этом месте располагается листинг, который не может быть правильно отображен в rss-ленте. Перейдите к оригинальной статье: <a href='http://inclab.ru/articles/animaciya-stabilizacii-mayatnika-v-scilab'>http://inclab.ru/articles/animaciya-stabilizacii-mayatnika-v-scilab</a></b></p>
<span class="image-description text-italic">параметры для решения системы дифуров в Scilab.</span>
</div>	    
    
<p>И, наконец, запишем функцию, которая отвечает за формирование системы дифуров, описывающих движение маятника с найденным управлением:</p>
<div class="image-container">
<p><b>На этом месте располагается листинг, который не может быть правильно отображен в rss-ленте. Перейдите к оригинальной статье: <a href='http://inclab.ru/articles/animaciya-stabilizacii-mayatnika-v-scilab'>http://inclab.ru/articles/animaciya-stabilizacii-mayatnika-v-scilab</a></b></p>
<span class="image-description text-italic"> функциия системы ОДУ в Scilab.</span>
</div>	
<p>Этого, в принципе, достаточно, чтобы получить статическую графическую интерпретацию решения нашей задачи.</p>  
<div class="image-container">
<p><b>На этом месте располагается листинг, который не может быть правильно отображен в rss-ленте. Перейдите к оригинальной статье: <a href='http://inclab.ru/articles/animaciya-stabilizacii-mayatnika-v-scilab'>http://inclab.ru/articles/animaciya-stabilizacii-mayatnika-v-scilab</a></b></p>
<span class="image-description text-italic">вывод графиков с настройкой толщины в Scilab.</span>
</div>	   
    
<div class="image-container" itemscope itemtype="http://schema.org/ImageObject">
    <picture>
        <source type="image/webp" srcset="/images/articles/animaciya-stabilizacii-mayatnika-v-scilab/19wcedp/koordinata-i-skorost-mayatnika-pod-deystviem-upravleniya-k1-k2-0-1-10.webp"/>
        <img class="image-in-container" src="http://inclab.ru/images/articles/animaciya-stabilizacii-mayatnika-v-scilab/19wcedp/koordinata-i-skorost-mayatnika-pod-deystviem-upravleniya-k1-k2-0-1-10.jpg" itemprop="contentUrl" alt="Координата и скорость маятника под действием управления, (к1, к2) = (0.1, 10)" title="Координата и скорость маятника под действием управления, (к1, к2) = (0.1, 10)"/>
    </picture>
    <span class="image-description text-italic" itemprop="description">Координата и скорость маятника под действием управления, (к1, к2) = (0.1, 10)</span>
</div>    
<p>При этом, подправляя коэффициеты усиления, можно регулировать скорость сходимости.</p>    
<div class="image-container" itemscope itemtype="http://schema.org/ImageObject">
    <picture>
        <source type="image/webp" srcset="/images/articles/animaciya-stabilizacii-mayatnika-v-scilab/1p5jak9/koordinata-i-skorost-mayatnika-pod-deystviem-upravleniya-k1-k2-0-1-50.webp"/>
        <img class="image-in-container" src="http://inclab.ru/images/articles/animaciya-stabilizacii-mayatnika-v-scilab/1p5jak9/koordinata-i-skorost-mayatnika-pod-deystviem-upravleniya-k1-k2-0-1-50.jpg" itemprop="contentUrl" alt="Координата и скорость маятника под действием управления, (к1, к2) = (0.1, 50)" title="Координата и скорость маятника под действием управления, (к1, к2) = (0.1, 50)"/>
    </picture>
    <span class="image-description text-italic" itemprop="description">Координата и скорость маятника под действием управления, (к1, к2) = (0.1, 50)</span>
</div>    
<p>При этом, без управления маятник  будет бултыхаться довольно долго и остановится в устойчивом положении равновесия (0,0):</p>
<div class="image-container">
<p><b>На этом месте располагается листинг, который не может быть правильно отображен в rss-ленте. Перейдите к оригинальной статье: <a href='http://inclab.ru/articles/animaciya-stabilizacii-mayatnika-v-scilab'>http://inclab.ru/articles/animaciya-stabilizacii-mayatnika-v-scilab</a></b></p>
<span class="image-description text-italic">отключим управление в функции системы ОДУ</span>
</div>	    
<div class="image-container" itemscope itemtype="http://schema.org/ImageObject">
    <picture>
        <source type="image/webp" srcset="/images/articles/animaciya-stabilizacii-mayatnika-v-scilab/indiic/koordinata-i-skorost-mayatnika-bez-upravlyayuschego-vozdeysvtiya.webp"/>
        <img class="image-in-container" src="http://inclab.ru/images/articles/animaciya-stabilizacii-mayatnika-v-scilab/indiic/koordinata-i-skorost-mayatnika-bez-upravlyayuschego-vozdeysvtiya.jpg" itemprop="contentUrl" alt="Координата и скорость маятника без управляющего воздейсвтия" title="Координата и скорость маятника без управляющего воздейсвтия"/>
    </picture>
    <span class="image-description text-italic" itemprop="description">Координата и скорость маятника без управляющего воздейсвтия</span>
</div>      


<h2>Создание анимации движения в Scilab</h2>
<p>Пойдём дальше и приступим к реализации движущегося объекта.</p>
    
<p>Для начала, повернём сетку координат на 90 градусов, чтобы маятник смотрела вниз :)</p>
<div class="image-container">
<p><b>На этом месте располагается листинг, который не может быть правильно отображен в rss-ленте. Перейдите к оригинальной статье: <a href='http://inclab.ru/articles/animaciya-stabilizacii-mayatnika-v-scilab'>http://inclab.ru/articles/animaciya-stabilizacii-mayatnika-v-scilab</a></b></p>
<span class="image-description text-italic">новые координаты.</span>
</div>	

<p>Добавим звёздочки на координатную сетку - начальное положение и программную позицию маятника</p>
<div class="image-container">
<p><b>На этом месте располагается листинг, который не может быть правильно отображен в rss-ленте. Перейдите к оригинальной статье: <a href='http://inclab.ru/articles/animaciya-stabilizacii-mayatnika-v-scilab'>http://inclab.ru/articles/animaciya-stabilizacii-mayatnika-v-scilab</a></b></p>
<span class="image-description text-italic">начальное и конечное положения маятника</span>
</div>	    
    
<p>И изобразим маятник в исходном положении с помощью ломаной линии с координатами \( (0, 0) - ( L*cos(X_r(1,1)), L*sin(X_r(1,1)) )  \):</p>
<div class="image-container">
<p><b>На этом месте располагается листинг, который не может быть правильно отображен в rss-ленте. Перейдите к оригинальной статье: <a href='http://inclab.ru/articles/animaciya-stabilizacii-mayatnika-v-scilab'>http://inclab.ru/articles/animaciya-stabilizacii-mayatnika-v-scilab</a></b></p>
<span class="image-description text-italic">рисуем прямую в Scilab.</span>
</div>	

<p>Далее отредактируем параметры элемента <em>xpoly()</em>. Наличие соединений <em>mark</em> имитирует груз на конце стержня маятника, <em>mark_style = 9</em> говорит, что это кружочек, а <em>mark_offset = 1</em> отвечает за смещение кружочка относительно линии:</p>
<div class="image-container">
<p><b>На этом месте располагается листинг, который не может быть правильно отображен в rss-ленте. Перейдите к оригинальной статье: <a href='http://inclab.ru/articles/animaciya-stabilizacii-mayatnika-v-scilab'>http://inclab.ru/articles/animaciya-stabilizacii-mayatnika-v-scilab</a></b></p>
<span class="image-description text-italic">рисуем прямую в Scilab.</span>
</div>	

<div class="image-container" itemscope itemtype="http://schema.org/ImageObject">
    <picture>
        <source type="image/webp" srcset="/images/articles/animaciya-stabilizacii-mayatnika-v-scilab/nm17jb/pryamaya-s-kruzhochkom.webp"/>
        <img class="image-in-container" src="http://inclab.ru/images/articles/animaciya-stabilizacii-mayatnika-v-scilab/nm17jb/pryamaya-s-kruzhochkom.jpg" itemprop="contentUrl" alt="Прямая с кружочком" title="Прямая с кружочком"/>
    </picture>
    <span class="image-description text-italic" itemprop="description">Прямая с кружочком</span>
</div>

<p>Приступим к имитации движения маятника. Его траектория - это решени системы ОДУ, т.е. элементы матрицы <em>X_r</em>. В первой строке этой матрицы содержится координата маятника \( X_1 = \theta  \) в момент времени \( i \), а во второй строке - скорость маятника \( X_2 = \dot\theta  \) в этот момент времени. Нам нужна координата для изменения позиции палочки с кружком, причём, центр маятника так и будет оставаться в положении \( (0,0) \), двигаться же будет его не закреплённый конец:</p>
<div class="image-container">
<p><b>На этом месте располагается листинг, который не может быть правильно отображен в rss-ленте. Перейдите к оригинальной статье: <a href='http://inclab.ru/articles/animaciya-stabilizacii-mayatnika-v-scilab'>http://inclab.ru/articles/animaciya-stabilizacii-mayatnika-v-scilab</a></b></p>
<span class="image-description text-italic">Анимация движения маятника в Scilab. Рисуется каждая 12 точка - это имитация sleep()</span>
</div>	

<p>Под действием выбранного управления, маятник быстренько стабилизируется и не бултыхается безумно:</p>	
<div class="image-container" itemscope="" itemtype="http://schema.org/ImageObject">
<picture><img class="image-in-container" src="http://inclab.ru/files/articles/animaciya-stabilizacii-mayatnika-v-scilab/pend.gif" itemprop="contentUrl" alt="Стабилизация маятника с управлением" title="Стабилизация маятника с управлением" /></picture>
<span class="image-description text-italic" itemprop="description">Стабилизация маятника с управлением</span>
</div>
  
<p>Если же в теле функции <em>systNelin()</em> исключить найденное управление из процеса стабилизации маятника, получим поведения объекта под действием на него исходных внешних сил:</p>	
<div class="image-container" itemscope="" itemtype="http://schema.org/ImageObject">
<picture><img class="image-in-container" src="http://inclab.ru/files/articles/animaciya-stabilizacii-mayatnika-v-scilab/pend0.gif" itemprop="contentUrl" alt="Стандартное движение маятника" title="Стандартное движение маятника" /></picture>
<span class="image-description text-italic" itemprop="description">Стандартное поведение маятника</span>
</div>

  

<p>Оригинальный адрес статьи: <a href='http://inclab.ru/articles/animaciya-stabilizacii-mayatnika-v-scilab'>http://inclab.ru/articles/animaciya-stabilizacii-mayatnika-v-scilab</a><p>]]></description>
			<pubDate>Fri, 27 May 2022 17:26:28 +0400</pubDate>
		</item>
		<item>
			<title><![CDATA[Марковский случайный процесс с дискретными состояниями и непрерывным временем]]></title>
			<link>http://inclab.ru/articles/markovskiy-sluchaynyy-process-s-diskretnymi-sostoyaniyami</link>
			<guid>http://inclab.ru/articles/markovskiy-sluchaynyy-process-s-diskretnymi-sostoyaniyami</guid>
			<description><![CDATA[<img src="http://inclab.ru" />При моделировании информационных систем часто встречаются ситуации, которые указать заранее невозможно.<h2>Непрерывная цепь Маркова</h2> 
<p>При моделировании информационных систем часто встречаются ситуации, которые указать заранее невозможно. Например, любая деталь или агрегат могут выходить из строя в любой, непредсказуемый заранее момент времени. </p>

<p>В данной ситуации не удастся обойтись детерминированной матрицей переходов, как в <a href="https://inclab.ru/profi/realizaciya-markovskoy-cepi">дискретном случае</a> ведь <em>вероятность</em> \(p_{i}\) оказаться в состоянии \(S_i\) будет <em>функцией времени</em>, то есть:</p>
 
<p class="text-center" >
\(p_{i}(t) = p(S_i(t)) \quad i = 1,...,n, \quad t \geq 0 \)
</p> 

<p>Более того, вместо вероятности перехода \(p_{ij}\), мы теперь будем говорить о <em>плотности вероятности</em> перехода \(\lambda_{ij}(t)\) из состояния \(S_i\) в состояние \(S_j\)  в момент времени t:</p>
 
 <p class="text-center" >
   \(
\lambda_{ij}(t) = \displaystyle\lim_{\Delta t \to 0} \frac{p_{ij}(t,\Delta t)}{\Delta t}
   \)
</p> 
<p>которая запросто может становиться больше 1.</p>

<p>Вероятности \(\lambda_{ij}(t)\) будут составлять <em>матрицу плотностей вероятностей переходов</em>:</p>
  
 <p class="text-center" >
    \begin{matrix}
 \Lambda= {  \begin{pmatrix} \lambda_{11}(t) & \lambda_{12}(t) & ... & \lambda_{1n}(t) \\  ... & ... & ... & ... \\ \lambda_{n1}(t) & \lambda_{n2}(t) & ... & \lambda_{nn}(t) \end{pmatrix} \quad  (1)} 
   \end{matrix} 
</p>   

<p><small>Однако, несмотря на то, что всё меняется, некоторые вещи остаются неизменными, но становятся другими :)</small></p>
<p>В случае с непрерывным временем тоже будет иметь место равенство суммы вероятностей 1, которое будем называть <em>нормировочным условием</em>:</p>
 <p class="text-center" >
   \(
\displaystyle\sum_{i=1}^{n} p_{i}(t) = 1, \quad \forall t \geq 0 \quad (2)
   \) 
</p> 

<p>Как же отыскать \(p_{i}(t)\), если они в явном виде нигде не заданы?</p>
<p>Здесь на помощь приходят <em>дифференциальные уравнения Колмагорова</em>, которые и помогут найти исходные \(p_{i}(t)\).</p>
<p>Итак, вероятности состояний \(p_{i}(t)\) - это решение системы дифференциальных уравнений вида:</p>

 <p class="text-center" >
   \(
\displaystyle\frac{dp_{i}(t)}{dt} =  \displaystyle\sum_{j=1}^{n} \lambda_{ji}(t)\cdot p_{j}(t) - \displaystyle\sum_{j=1}^{n} \lambda_{ij}(t)\cdot p_{i}(t)  \quad (3)
   \)
</p> 

<p>Рассмотрим подробнее, что из себя представляет 1-е уравнение системы (3). Для этого заменим все \( i \) на 1 в (3):</p>
 <p class="text-center" >
   \(
\displaystyle\frac{dp_{1}(t)}{dt} =  \displaystyle\sum_{j=1}^{n} \lambda_{j1}(t)\cdot p_{j}(t) - \displaystyle\sum_{j=1}^{n} \lambda_{1j}(t)\cdot p_{1}(t)  \quad 
   \)
</p> 

<p>Теперь стало понятно, что в сумме с <em>плюсом</em> надо пробежаться по <em>1-му столбцу</em> матрицы (1), <em>домножив</em> каждый элемент на соответствующую вероятность \(p_{j}(t)\),<br/>
а в сумме с <em>минусом</em> надо пробежаться по <em>1-ой строке</em> матрицы (1), <em>домножив</em> каждый элемент на вероятность \( p_{1}(t) \).</p>

<p>Если перевести последнее высказывание на язык графов, то получим, что:<br/>
производная вероятности 1-го состояния - это сумма произведений входящих стрелок на интенсивности соответствующих потоков<br/>
минус сумма произведений исходящих стрелок на интенсивность 1-го потока.</p>

<p>Отсюда можно вывести <em>правило составлений уранений Колмагорова:</em></p>
 <ul> 
<li><p>В левой части каждого из них стоит  <em>производная вероятности i-го состояния</em>.</p> </li>
<li><p>В правой части<br/> 
  с плюсом -  суммарная интенсивность всех потоков, приводящих систему в данное состояние: <br/>
  с минусом - суммарная интенсивность всех потоков, выводящих систему из данного состояния.</p>
</li>  
 </ul> 

<h3>Финальные вероятности</h3>
<p>Уравнения Колмогорова дают возможность найти все вероятности состояний как функции времени. Особый интерес представляют вероятности системы <em>в предельном стационарном режиме</em>, т.е. при \( t \to \infty \), которые называются <em>предельными (или финальными) вероятностями </em> состояний.</p>

<p>Финальные вероятности состояний находятся путем решения СЛАУ, которые получаются из дифференциальных уравнений Колмогорова (3), если приравнять производные к нулю, а вероятностные функции состояний \( p_1(t),..., p_n(t) \) в правых частях уравнений заменить соответственно на неизвестные финальные вероятности \( p_1^*(t),..., p_n^*(t) \) и добавить нормировочное условие (2). </p>

 <p class="text-center" >
   \(
   \begin{cases}
0 =  \displaystyle\sum_{j=1}^{n} \lambda_{ji}(t)\cdot p^*_{j} - \displaystyle\sum_{j=1}^{n} \lambda_{ij}(t)\cdot p^*_{i}  \quad \\
   \displaystyle\sum_{i=1}^{n} p^*_{i} = 1
   \end{cases}
   \)
</p> 

<h2>Модель взаимодействия копмонент ПО средств активной защиты</h2> 
<p>Рассмотрим  процесс активной защиты информационной компьютерной системы, в которой функционируют 5 комплексов программ.</p>
<p>Пусть плотности вероятности \(\lambda_{ij}\) описывают интенсивность передачи управления от \(i\)-го компекса ПО к \(j\)-му в процессе решения задач активной защиты КС.</p>
<p>Предположим, что \(\lambda_{ij}\) задаются в виде:</p>
 <p class="text-center" >
   \(
\lambda_{12} = \frac{1}{T_1};  \lambda_{21} = \frac{1-\alpha}{T_2}; \lambda_{23} = \frac{\alpha}{T_2}; \lambda_{34} = \frac{1}{T_3}; 
   \)<br/>
    \(
\lambda_{43} = \frac{1-\beta}{T_4};  \lambda_{45} = \frac{\beta}{T_4}; \lambda_{51} = \frac{1}{T_5}; 
   \)  
</p> 

<p>где \(\alpha\) - вероятность того, что вторжение злоумышленника бедут распознано САЗ,<br/> 
  \(\beta\) - вероятность того, что выявленная уязвимость в КС будет использована для ответных атак.</p>

<p>Через  \( p_i(t) \) зададим вероятность того, что в момент времени \( t\) в КС выполняется \(i\)-й компекс программ.</p>

<p>Пусть взаимодействие комплексов ПО в КС описывается с помощью графа на рис.1 </p>
<div class="image-container" itemscope itemtype="http://schema.org/ImageObject">
    <picture>
        <source type="image/webp" srcset="/images/articles/markovskiy-sluchaynyy-process-s-diskretnymi-sostoyaniyami/j9yncv/risunok-1-graf-svyazi-kompleksov-po-v-ks.webp"/>
        <img class="image-in-container" src="http://inclab.ru/images/articles/markovskiy-sluchaynyy-process-s-diskretnymi-sostoyaniyami/j9yncv/risunok-1-graf-svyazi-kompleksov-po-v-ks.jpg" itemprop="contentUrl" alt="Рисунок 1. Граф связи комплексов ПО в КС." title="Рисунок 1. Граф связи комплексов ПО в КС."/>
    </picture>
    <span class="image-description text-italic" itemprop="description">Рисунок 1. Граф связи комплексов ПО в КС.</span>
</div> 

<p>Тогда соответствующая система ДУ Колмагорова будет иметь вид:</p>
 <p class="text-center" >
   \(
\begin{cases} 
   \dot p_1 = -\lambda_{12}p_1 + \lambda_{21}p_2 + \lambda_{51}p_5 \\ 
   \dot p_2 = \lambda_{12}p_1 - (\lambda_{21} + \lambda_{23})p_2 \\ 
   \dot p_3 = \lambda_{23}p_2 - \lambda_{34}p_3 + \lambda_{43}p_4 \\ 
   \dot p_4 = \lambda_{34}p_3 - (\lambda_{43} + \lambda_{45})p_4 \\ 
   \dot p_5 = \lambda_{45}p_4 - \lambda_{51}p_5  
\end{cases} (4)
   \)  
</p> 

<p>Для того, чтобы с уравнениями Колмагорова было удобнее работать в Scilab, перепишем систему (4) в матричном виде:</p>
 <p class="text-center" >
    \begin{matrix}
 \dot p = {  \begin{pmatrix} 
   -\lambda_{12} & \lambda_{21} & 0 & 0 & \lambda_{51}\\ 
   \lambda_{12} & -(\lambda_{21} + \lambda_{23}) & 0 & 0 & 0\\
   0 & \lambda_{23} & -\lambda_{34} & \lambda_{43} & 0\\
   0 & 0 & \lambda_{34} & - (\lambda_{43} + \lambda_{45}) & 0\\ 
   0 & 0 & 0 & \lambda_{45} & -\lambda_{51}\\
   \end{pmatrix} }p  \quad (5)
   \end{matrix} 
</p> 

<p>Кратко:</p>
 <p class="text-center" >
     \( \dot p = Bp \) 
</p>

<p>Зададим начальные условия для системы (5), т.е. вектор начального состояния (6):</p>
 <p class="text-center" >
     \( p_0  = (1, 0, 0, 0, 0) \quad (6) \) 
</p>


<h3>Решение ДУ Колмагорова в Scilab</h3>
<p>Решим задачу Коши для системы (5), с н.у. (6) в Scilab.</p>
<p>Решение данной задачи почти не отличается от рассмотренных ранее <a href="https://inclab.ru/beginner/reshenie-differencialnih-uravnenij-v-scilab">двумерных систем</a>.</p>
<p>Единственное нововведение - это замена в матрице системы (5) одной из строк на нормировочное условие (2). Это необходимо сделать, т.к. пара уравнений в (5) являются линейно зависимыми.</p>

<div class="image-container">
<p><b>На этом месте располагается листинг, который не может быть правильно отображен в rss-ленте. Перейдите к оригинальной статье: <a href='http://inclab.ru/articles/markovskiy-sluchaynyy-process-s-diskretnymi-sostoyaniyami'>http://inclab.ru/articles/markovskiy-sluchaynyy-process-s-diskretnymi-sostoyaniyami</a></b></p>  
<span class="image-description text-italic">Решение ДУ Колмагорова для марковской цепи.</span>
</div>	 

<p>На рис.2 представлены интегральне кривые системы (5), которые и представляют собой вероятности состояний КС как функции времени.</p>

<div class="image-container" itemscope itemtype="http://schema.org/ImageObject">
    <picture>
        <source type="image/webp" srcset="/images/articles/markovskiy-sluchaynyy-process-s-diskretnymi-sostoyaniyami/18i8oai/risunok-2-reshenie-du-kolmagorova.webp"/>
        <img class="image-in-container" src="http://inclab.ru/images/articles/markovskiy-sluchaynyy-process-s-diskretnymi-sostoyaniyami/18i8oai/risunok-2-reshenie-du-kolmagorova.jpg" itemprop="contentUrl" alt="Рисунок 2.Решение ДУ Колмагорова." title="Рисунок 2.Решение ДУ Колмагорова."/>
    </picture>
    <span class="image-description text-italic" itemprop="description">Рисунок 2.Решение ДУ Колмагорова.</span>
</div>
   
<h3>Решение СЛАУ Колмагорова в Scilab</h3>
<p>Так как марковский процесс, описывающий взаимодействие компонент ПО САЗ не имеет поглощающих состояний (см. рис.1), то с некоторого момента времени все компоненты КС будут функционировать в стационарном режиме, достигнув финальных вероятностей.</p>

<p>Найдём финальные вероятности \( p_i^* \). Для этого в системе (5) приравняем производные к нулю и решим СЛАУ с условием нормировки (2):</p>
 <p class="text-center" >
   \( 
    \begin{cases} 
 0 = {  \begin{pmatrix} 
   -\lambda_{12} & \lambda_{21} & 0 & 0 & \lambda_{51}\\ 
   \lambda_{12} & -(\lambda_{21} + \lambda_{23}) & 0 & 0 & 0\\
   0 & \lambda_{23} & -\lambda_{34} & \lambda_{43} & 0\\
   0 & 0 & \lambda_{34} & - (\lambda_{43} + \lambda_{45}) & 0\\ 
   0 & 0 & 0 & \lambda_{45} & -\lambda_{51}\\
   \end{pmatrix} }p^*  \\
   1 = p_1^* +p_2^* + p_3^* + p_4^* + p_5^* \quad 
   \end{cases} (7)
   \)
</p> 
<p>Чтобы не запутаться в последовательности линейных преобразований в системе (7), поручим эти действия Scilab.</p>

<p>Прежде всего, приведём матрицу B к ступенчатому виду. Для этого в Scilab имется функция rref:</p>

<div class="image-container">
<p><b>На этом месте располагается листинг, который не может быть правильно отображен в rss-ленте. Перейдите к оригинальной статье: <a href='http://inclab.ru/articles/markovskiy-sluchaynyy-process-s-diskretnymi-sostoyaniyami'>http://inclab.ru/articles/markovskiy-sluchaynyy-process-s-diskretnymi-sostoyaniyami</a></b></p>  
<span class="image-description text-italic">Функция приведения матрицы к ступенчатому виду в Scilab.</span>
</div>	 
<p>Убедимся, что <em>rB</em> действительно ступенчатая да ещё и с одной нулевой строкой (вспомните про ЛЗ уравнений в (5) ) :</p>
<div class="image-container" itemscope itemtype="http://schema.org/ImageObject">
    <picture>
        <source type="image/webp" srcset="/images/articles/markovskiy-sluchaynyy-process-s-diskretnymi-sostoyaniyami/1ax74lh/risunok-3-stupenchatyy-vid-matricy-v.webp"/>
        <img class="image-in-container" src="http://inclab.ru/images/articles/markovskiy-sluchaynyy-process-s-diskretnymi-sostoyaniyami/1ax74lh/risunok-3-stupenchatyy-vid-matricy-v.jpg" itemprop="contentUrl" alt="Рисунок 3.Ступенчатый вид матрицы В." title="Рисунок 3.Ступенчатый вид матрицы В."/>
    </picture>
    <span class="image-description text-italic" itemprop="description">Рисунок 3.Ступенчатый вид матрицы В.</span>
</div>


<p>Далее нам необходимо заменить последнюю строку матрицы на условие нормировки (2). Это условие выражено 6-м уравнением в системе (7). В нём фигурируют все элементы вектора p с коэффициентами 1. Поэтому последняя строка ступенчатой матрицы превратится в строку единиц.<br/>  
Последнюю строку матрицы в Scilab можно отыскать с помощью символа <em>$</em></p>

<div class="image-container">
<p><b>На этом месте располагается листинг, который не может быть правильно отображен в rss-ленте. Перейдите к оригинальной статье: <a href='http://inclab.ru/articles/markovskiy-sluchaynyy-process-s-diskretnymi-sostoyaniyami'>http://inclab.ru/articles/markovskiy-sluchaynyy-process-s-diskretnymi-sostoyaniyami</a></b></p>  
<span class="image-description text-italic">Заменим последнюю строку на условие нормировки в матрице В.</span>
</div>
<div class="image-container" itemscope itemtype="http://schema.org/ImageObject">
    <picture>
        <source type="image/webp" srcset="/images/articles/markovskiy-sluchaynyy-process-s-diskretnymi-sostoyaniyami/1gtqh1v/risunok-4-stupenchataya-matrica-so-strokoy-iz-1.webp"/>
        <img class="image-in-container" src="http://inclab.ru/images/articles/markovskiy-sluchaynyy-process-s-diskretnymi-sostoyaniyami/1gtqh1v/risunok-4-stupenchataya-matrica-so-strokoy-iz-1.jpg" itemprop="contentUrl" alt="Рисунок 4.Ступенчатая матрица со строкой из 1." title="Рисунок 4.Ступенчатая матрица со строкой из 1."/>
    </picture>
    <span class="image-description text-italic" itemprop="description">Рисунок 4.Ступенчатая матрица со строкой из 1.</span>
</div>

<p>Осталось лишь численно решить систему алгебраических уравнений. <br/> 
В Scilab <em>для решения системы  линейных уравнений</em> припасена функция <em>linsolve(A, b)</em>, которая ищет вектор <em>x</em> в системе уравнений вида:</p>
 <p class="text-center" >
     \( A*x + b = 0 \) 
</p>

<p>В нашем случае первый аргумемнт функции <em>linsolve(*, *)</em> - это матрица <em>rB</em>, а второй аргумент - это вектор <em>f</em>, сформированный из неоднородностей системы (7), перенесённых за знак "=".</p>
<div class="image-container">
<p><b>На этом месте располагается листинг, который не может быть правильно отображен в rss-ленте. Перейдите к оригинальной статье: <a href='http://inclab.ru/articles/markovskiy-sluchaynyy-process-s-diskretnymi-sostoyaniyami'>http://inclab.ru/articles/markovskiy-sluchaynyy-process-s-diskretnymi-sostoyaniyami</a></b></p>  
<span class="image-description text-italic">Численное решенеие системы алгебраических уравнений в Scilab.</span>
</div>	


<p>Нарисуем финальные вероятности \( p_i^* \), чтобы убедиться, что именно к ним сходится решение ДУ Колмагорова:</p>
<div class="image-container">
<p><b>На этом месте располагается листинг, который не может быть правильно отображен в rss-ленте. Перейдите к оригинальной статье: <a href='http://inclab.ru/articles/markovskiy-sluchaynyy-process-s-diskretnymi-sostoyaniyami'>http://inclab.ru/articles/markovskiy-sluchaynyy-process-s-diskretnymi-sostoyaniyami</a></b></p>  
<span class="image-description text-italic">нарисуем вероятности p*.</span>
</div>	

<div class="image-container" itemscope itemtype="http://schema.org/ImageObject">
    <picture>
        <source type="image/webp" srcset="/images/articles/markovskiy-sluchaynyy-process-s-diskretnymi-sostoyaniyami/moslk/risunok-5-vyhod-na-finalnye-veroyatnosti-integralnyh-krivyh.webp"/>
        <img class="image-in-container" src="http://inclab.ru/images/articles/markovskiy-sluchaynyy-process-s-diskretnymi-sostoyaniyami/moslk/risunok-5-vyhod-na-finalnye-veroyatnosti-integralnyh-krivyh.jpg" itemprop="contentUrl" alt="Рисунок 5.Выход на финальные вероятности интегральных кривых." title="Рисунок 5.Выход на финальные вероятности интегральных кривых."/>
    </picture>
    <span class="image-description text-italic" itemprop="description">Рисунок 5.Выход на финальные вероятности интегральных кривых.</span>
</div>

<p>Итак, где-то с 90сек. ПО в системе активной защиты КС будет функционировать в установившемся режиме.</p>







<p>Оригинальный адрес статьи: <a href='http://inclab.ru/articles/markovskiy-sluchaynyy-process-s-diskretnymi-sostoyaniyami'>http://inclab.ru/articles/markovskiy-sluchaynyy-process-s-diskretnymi-sostoyaniyami</a><p>]]></description>
			<pubDate>Thu, 12 May 2022 12:40:00 +0400</pubDate>
		</item>
		<item>
			<title><![CDATA[Реализация Марковской цепи]]></title>
			<link>http://inclab.ru/articles/realizaciya-markovskoy-cepi</link>
			<guid>http://inclab.ru/articles/realizaciya-markovskoy-cepi</guid>
			<description><![CDATA[<img src="http://inclab.ru" /><h2>Марковский случайный процесс с дискретным состоянием и дискретным временем</h2> 
<p>Предположим, что автоматизированная информационная системы может находиться в следующих <em>n</em> состояниях \( S_1, S_2, . . . , S_n\). При этом переход системы из <em>i</em>-го состояния в <em>j</em>-е характеризуется вероятностью  \(p_{ij}\), где <em>i, j = 1, 2, . . . , n</em>.</p>
<p>Поскольку система может пребывать в одном из состояний, то для каждого момента времени <em>t</em> необходимо задать \(n^2\) вероятностей перехода \(p_{ij}\), которые удобно представить в виде следующей матрицы:</p>
  
 <p class="text-center" >
    \begin{matrix}
 P= {  \begin{pmatrix} p_{11} & p_{12} & ... & p_{1n} \\ p_{21} & p_{22} & ... & p_{2n} \\ ... & ... & ... & ... \\ p_{n1} & p_{n2} & ... & p_{nn} \end{pmatrix}  (1)} 
   \end{matrix} 
</p>   
 <p>Матрица (1) называется <em>матрицей перехода системы</em>.</p>   
<p>В матрице перехода располагаются:<br>
  \(p_{ij} \) - вероятность перехода системы за один шаг из состояния \(S_i\) в состояние \(S_j\);<br/> 
  \(p_{ii}\) - вероятность задержки системы в состоянии \(S_i\).</p> 
<p>Таким образом, в обозначении \(p_{ij} \) первый индекс указывает номер предшествующего состояния, а второй  номер последующего.</p>

<p><em>Переходной вероятностью \(p_{ij} \)</em> называют условную вероятность того, что из состояния \(S_i\), в котором система оказалась в результате некоторого испытания, безразлично какого номера, в итоге следующего испытания система перейдет в состояние \(S_j\).</p>
  
<p>Так как в каждой строке матрицы перехода помещены вероятности событий перехода из одного и того же состояния в любое возможное, то сумма вероятностей этих событий равна 1. Т.е. сумма значений в каждой строке матрицы должна быть равна 1:</p>
  
 <p class="text-center" >
   \(
\displaystyle\sum_{j=1}^{n} p_{ij} = 1, \quad i = \bar{1,n}
   \)
</p> 
  
<p>Марковский случайный процесс с дискретными состояниями и дискретным временем называют <em>марковской цепью</em>.<br/> 
Для такого процесса моменты \( t_1, t_2, ...\), когда система может менять свое состояние, рассматривают как последовательные шаги процесса, а в качестве аргумента, от которого  <em>зависит процесс</em>, выступает не время \( t\), а  <em>номер шага</em> \( 1, 2, ... , k, ... \).</p>
  
<p>Случайный процесс в этом случае характеризуется последовательностью состояний \( S(0), S(1), S(2), ... , S(k), ... \), где<br/> 
\(S(0)\) - начальное состояние системы (перед первым шагом);<br/> 
\(S(1)\) - состояние системы после первого шага; <br/> 
\(S(k)\) - состояние системы после k-го шага.</p></p>
  
<p><em>Вероятностями перехода системы за \( k \) шагов из \(S_i\) состояния в \(S_j\) </em> называются вероятности \( P_{ij}(k) \) того, что в результате  \( k \) шагов  система перейдет из состояния \( S(0) = S_i \) в состояние \( S(k) = S_j \) \( i, j = 1, 2, ... \).</p>
  
<p>Например, \( P_{36}(8) \) - вероятность того, что за <em>8</em> шагов система перейдет из состояния \(S_3\) в \(S_6\).</p>
<p>Заметим, что при \(n = 1 \) вероятности состояний цепи Маркова \( P_{ij}(1) \) совпадают с переходными вероятностями \( p_{ij} \).  </p>
  
<p>Кроме того, как и в случае (1) должно выполняться равенство:</p>
  
 <p class="text-center" >
   \(
\displaystyle\sum_{j=1}^{n} P_{ij}(k) = 1, \quad i = \bar{1,n}, \quad \forall k \quad\quad (2)
   \)
</p>   
  
  
<p><em>Начальным распределением вероятностей</em> Марковской цепи называется распределение вероятностей состояний в начале процесса:</p>
 <p class="text-center" >  
\(
   p_1(0), p_2(0), ... , p_n(0) \quad\quad (3)
  \). 
</p> 
<p>Если для однородной Марковской цепи заданы начальное распределение вероятностей (3) и матрица P переходных вероятностей (1), то <em>вероятности состояний системы</em> \( p_i(k) (i = 1, 2, . . . ,) \) определяются по рекуррентной формуле:</p> 


 <p class="text-center" >
   \(
p_{i}(k) =  \displaystyle\sum_{j=1}^{n} p_{ji} \cdot p_{j}(k-1) = 1  \quad\quad  (4)
   \)
</p>  
  

<p>Итак, у нас имеются:</p> 
<ul>
<li><p>Вектор \( (p_1(0), p_2(0), ... , p_n(0)) \) начального распределения (3). Это вероятности стартовать из каждого из состояний.</p></li>
<li><p>Переходные вероятности \( p_{ij} \). Это вероятности перейти из состояния \(S_i\)  в \(S_j\) за 1 шаг. Из \( p_{ij} \)  составлена матрица перехода (1).</p></li>
<!--li>Вероятностями перехода за \( k \) шагов   \( P_{ij}(1) \) </li-->
<li><p>Вероятности состояний системы \( p_{i}(k) \). Это вероятности оказаться в состояния \(S_i\) через \( k \) шагов.</p></li>
<li><p>Чудесная формула (4), по которой, зная начальное положение системы, можно рассчитать вероятность оказаться в том или ином состоянии через определённое число шагов.</p></li>
</ul>
 
  
<h2>Моделирование АИС с двумя зависимыми внутренними угрозами с помощью цепи Маркова</h2>  
<p>Пусть дана информационная система с двумя зависимыми внутренними угрозами, орграф которой изображен на рис. 1.</p>
<p>В качестве двух зависимых внутренних угроз могут быть следующие.</p>
<ol>
<li><p>Неквалифицированная политика по управлению информационной безопасностью организации;</p></li>
<li><p>Отсутствие должной квалификации персонала по обеспечению деятельности и управлению информационной безопасностью.</p></li>
</ol>  
  <div class="image-container" itemscope itemtype="http://schema.org/ImageObject">
    <picture>
        <source type="image/webp" srcset="/images/articles/realizaciya-markovskoy-cepi/16rqoy2/risunok-1-graf-perehodov-sostoyaniy-ais-s-dvumya-zavisimymi-vnutrennimi-ugrozami.webp"/>
        <img class="image-in-container" src="http://inclab.ru/images/articles/realizaciya-markovskoy-cepi/16rqoy2/risunok-1-graf-perehodov-sostoyaniy-ais-s-dvumya-zavisimymi-vnutrennimi-ugrozami.jpg" itemprop="contentUrl" alt="Рисунок 1. Граф переходов (состояний) АИС с двумя зависимыми внутренними угрозами." title="Рисунок 1. Граф переходов (состояний) АИС с двумя зависимыми внутренними угрозами."/>
    </picture>
    <span class="image-description text-italic" itemprop="description">Рисунок 1. Граф переходов (состояний) АИС с двумя зависимыми внутренними угрозами.</span>
</div>
   
<p>Данная система моделируется Марковской цепью. Она содержит невозвратные состояния, называемые поглощающими. Из поглощающего состояния нельзя перейти
ни в какое другое. На графе поглощающему состоянию соответствует вершина, из которой не выходит ни одна дуга. Поглощающему состоянию соответствует вероятность, равная 1.</p>
  

  
<p>Пусть наша система может находиться в одном из четырех состояний:</p>
<ul>
<li><p>\(S_1\) - состояние, в котором внутренние угрозы ИБ не проявились,</p></li>
<li><p>\(S_2\) - состояние, в котором первая внутренняя угроза ИБ проявилась с вероятность \(p_{12}\),</p></li>
<li><p>\(S_3\) - состояние, в котором вторая внутренняя угроза ИБ проявилась с вероятность \(p_{13}\),</p></li>
<li><p>\(S_4\) - поглощающее состояние, в котором внутренние угрозы ИБ реализовались с вероятностями \(p_{24}\) и \(p_{34}\) соответственно.</p></li>
</ul>  
  

<p>Для данной системы у нас заданы:</p> 
<ul>
<li><p>Вектор начального распределения:</p>
<p class="text-center" >  
  \( (p_1(0), p_2(0), p_3(0) , p_4(0)) = (1, 0, 0, 0) \)
</p>  
<p>То есть, при запуске, мы стартуем всегда из 1-го состояния.</p>  
  </li>
<li><p>Матрица перехода:</p>
 
 <p class="text-center" >
    \begin{matrix}
 P= {  \begin{pmatrix} 0,2 & 0,3 & 0,5 & 0 \\ 0,4 & 0 & 0,3 & 0,3 \\ 0,1 & 0,4 & 0 & 0,5 \\ 0 & 0 & 0 & 1 \end{pmatrix} } 
   \end{matrix} 
</p> 
  </li>
</ul>
 
<p>А выяснить мы хотим вероятности состояний информационной системы через три шага, воспользовавшись формулой (4).</p> 


<p>Приступим к реализации на scilab пошагового моделирования марковского процесса.</p> 
<p>Зададим вектор начального распределения Po  и матрицу вероятностей перехода P.</p> 
<div class="image-container">
<p><b>На этом месте располагается листинг, который не может быть правильно отображен в rss-ленте. Перейдите к оригинальной статье: <a href='http://inclab.ru/articles/realizaciya-markovskoy-cepi'>http://inclab.ru/articles/realizaciya-markovskoy-cepi</a></b></p>  
<span class="image-description text-italic">Задание начального вектора и матрицы состояний.</span>
</div>	  
  
  
<p>А далее итерационно воспользуемся формулой (4), бережно сохранив промежуточные результаты в Y.</p> 
<div class="image-container">
<p><b>На этом месте располагается листинг, который не может быть правильно отображен в rss-ленте. Перейдите к оригинальной статье: <a href='http://inclab.ru/articles/realizaciya-markovskoy-cepi'>http://inclab.ru/articles/realizaciya-markovskoy-cepi</a></b></p>  
<span class="image-description text-italic">Реализация подсчета вероятности оказаться в каждом из состояний на 3-м шаге.</span>
</div>	  
  
<p>В консоли можно наблюдать за изменением вероятностей оказаться в каждом из 4-х состояний на 1,2 и 3-м шагах:</p>   
  <div class="image-container" itemscope itemtype="http://schema.org/ImageObject">
    <picture>
        <source type="image/webp" srcset="/images/articles/realizaciya-markovskoy-cepi/4rttvk/risunok-2-izmenenie-veroyatnostey-sostoyaniya-na-kazhdom-shage.webp"/>
        <img class="image-in-container" src="http://inclab.ru/images/articles/realizaciya-markovskoy-cepi/4rttvk/risunok-2-izmenenie-veroyatnostey-sostoyaniya-na-kazhdom-shage.jpg" itemprop="contentUrl" alt="Рисунок 2. Изменение вероятностей состояния на каждом шаге." title="Рисунок 2. Изменение вероятностей состояния на каждом шаге."/>
    </picture>
    <span class="image-description text-italic" itemprop="description">Рисунок 2. Изменение вероятностей состояния на каждом шаге.</span>
</div>
     
<p>Если же число шагов увеличить до 10, то можно наблюдать, как система все вероятнее перейдёт в поглошающее 4-е состояние.</p>   
<div class="image-container" itemscope itemtype="http://schema.org/ImageObject">
    <picture>
        <source type="image/webp" srcset="/images/articles/realizaciya-markovskoy-cepi/g3glc3/risunok-3-s-rostom-chisla-ispytaniy-veroyatnost-okazatsya-v-s4-vozrastaet.webp"/>
        <img class="image-in-container" src="http://inclab.ru/images/articles/realizaciya-markovskoy-cepi/g3glc3/risunok-3-s-rostom-chisla-ispytaniy-veroyatnost-okazatsya-v-s4-vozrastaet.jpg" itemprop="contentUrl" alt="Рисунок 3. С ростом числа испытаний, вероятность оказаться в S4 возрастает." title="Рисунок 3. С ростом числа испытаний, вероятность оказаться в S4 возрастает."/>
    </picture>
    <span class="image-description text-italic" itemprop="description">Рисунок 3. С ростом числа испытаний, вероятность оказаться в S4 возрастает.</span>
</div>  
<p>Отдельно стоит отметить, что сумма элементов вектора = 1.</p>   
  
<p>Для пущей наглядности сходимости вероятностей, построим графики зависимости вероятностей Pj от числа шагов.</p> 
<div class="image-container">
<p><b>На этом месте располагается листинг, который не может быть правильно отображен в rss-ленте. Перейдите к оригинальной статье: <a href='http://inclab.ru/articles/realizaciya-markovskoy-cepi'>http://inclab.ru/articles/realizaciya-markovskoy-cepi</a></b></p>  
<span class="image-description text-italic">Построение графиков в 2d и 3d вариантах.</span>
</div>	  
  
<div class="image-container" itemscope itemtype="http://schema.org/ImageObject">
    <picture>
        <source type="image/webp" srcset="/images/articles/realizaciya-markovskoy-cepi/16lz6f5/risunok-3-raspredelenie-veroyatnostey-sostoyaniy-v-zavisimosti-ot-shaga.webp"/>
        <img class="image-in-container" src="http://inclab.ru/images/articles/realizaciya-markovskoy-cepi/16lz6f5/risunok-3-raspredelenie-veroyatnostey-sostoyaniy-v-zavisimosti-ot-shaga.jpg" itemprop="contentUrl" alt="Рисунок 3. Распределение вероятностей состояний в зависимости от шага." title="Рисунок 3. Распределение вероятностей состояний в зависимости от шага."/>
    </picture>
    <span class="image-description text-italic" itemprop="description">Рисунок 3. Распределение вероятностей состояний в зависимости от шага.</span>
</div>  

<h2>Серия экспериментов для цепи Маркова, граф которой изображён на рис.1</h2>    
<p>Посмотрим, действительно ли состояние 4 будет являться поглощающим в различных условиях. Для этого сгенерируем 9 случайных векторов состояний и, стартуя каждый раз из 1-го состояния, промоделируем поведение Марковской цепи с заданной матрицей перехода на протяжении 10-ти шагов.</p> 
<div class="image-container">
<p><b>На этом месте располагается листинг, который не может быть правильно отображен в rss-ленте. Перейдите к оригинальной статье: <a href='http://inclab.ru/articles/realizaciya-markovskoy-cepi'>http://inclab.ru/articles/realizaciya-markovskoy-cepi</a></b></p>  
<span class="image-description text-italic">Реализация подсчета вероятности оказаться в каждом из состояний на 3-м шаге.</span>
</div>

<p>Ниже моделирование цепи повторяется 9 раз.</p> 
<div class="image-container">
<p><b>На этом месте располагается листинг, который не может быть правильно отображен в rss-ленте. Перейдите к оригинальной статье: <a href='http://inclab.ru/articles/realizaciya-markovskoy-cepi'>http://inclab.ru/articles/realizaciya-markovskoy-cepi</a></b></p>  
<span class="image-description text-italic">Серия экспериментов для цепи Маркова.</span>
</div>

<p>В результате проведённых экспериментов, можно удостовериться, что попав в 4-е состояние, выбраться из него уже не удаётся.</p> 
<div class="image-container" itemscope itemtype="http://schema.org/ImageObject">
    <picture>
        <source type="image/webp" srcset="/images/articles/realizaciya-markovskoy-cepi/13y2wtc/risunok-4-modelirovanie-cepi-markova-dlya-ais-s-2-mya-ugrozami.webp"/>
        <img class="image-in-container" src="http://inclab.ru/images/articles/realizaciya-markovskoy-cepi/13y2wtc/risunok-4-modelirovanie-cepi-markova-dlya-ais-s-2-mya-ugrozami.jpg" itemprop="contentUrl" alt="Рисунок 4. Моделирование цепи Маркова для АИС с 2-мя угрозами." title="Рисунок 4. Моделирование цепи Маркова для АИС с 2-мя угрозами."/>
    </picture>
    <span class="image-description text-italic" itemprop="description">Рисунок 4. Моделирование цепи Маркова для АИС с 2-мя угрозами.</span>
</div>  


<p>Оригинальный адрес статьи: <a href='http://inclab.ru/articles/realizaciya-markovskoy-cepi'>http://inclab.ru/articles/realizaciya-markovskoy-cepi</a><p>]]></description>
			<pubDate>Sun, 08 May 2022 21:02:40 +0400</pubDate>
		</item>
		<item>
			<title><![CDATA[Динамическая управляемая система с наблюдателес xcos]]></title>
			<link>http://inclab.ru/articles/modelirovanie-upravlyaemoy-sistemy-v-scilab-xcos</link>
			<guid>http://inclab.ru/articles/modelirovanie-upravlyaemoy-sistemy-v-scilab-xcos</guid>
			<description><![CDATA[<img src="http://inclab.ru" /><p>Итак, на данный момент читатель последовательно прошёл путь от создания простейшей блок-схемы Xcos, состоящей всего из трёх блоков, до визуального моделирования полноценных управляемых динамических систем, описываемых матричными уравнениями.</p>

<p>В настоящем параграфе будет затронута ещё одна задача математического моделирования &ndash; построение дискретного наблюдателя в системе дифференциальных матричных уравнений.</p>
<p>Данная задача особенно актуальна, так как при моделировании управляющего воздействия динамической системы, как бы удобно ни было управлять состоянием \( x\), его измерение, чаще всего не доступно. Поэтому на практике для управляемых динамических систем строится специальный наблюдатель \( y\), который сам по себе представляет динамическую систему.</p>

<h2>Построение непрерывного наблюдателя</h2>
<p>Построение системы наблюдения происходит так, чтобы на вход наблюдателя подавались значения&nbsp; \( u,y\), а на выходе формировался бы сигнал \( \hat{x} \). При этом, матрицы системы наблюдения должны быть подобраны таким образом, чтобы разность \( x-\hat{x} \) стремилась бы к нулю не зависимо от выбранных начальных условий или самого вида наблюдателя. Отличительной особенностью наблюдателей такого рода, является устойчивость к возмущениям.</p>
<p>Отметим также, что при выборе коэффициентов усиления наблюдателя необходимо поддерживать баланс между скоростью и точностью сходимости моделируемого движения к программному и чрезмерной чувствительностью к начальным отклонениям.</p>
<p>Рассмотрим пример построения линейного наблюдателя для динамической системы, описываемой в пространстве состояний матричными дифференциальными уравнениями вида:</p>


<p class="text-center">  
(1)  \[   
     \begin{cases}
       \dot x = Ax+Bu\\
       \dot y = Cx\\
     \end{cases}
\]
</p>
<p>где \(A, B, C\) - матрицы с постоянными коэффициентами.</p>
<p>Непрерывный наблюдатель в данном случае, строится следующим образом:</p>

<p class="text-center">  
(2) \[  \dot{\hat{x}} = A\hat{x}+Bu+K(y-C\hat{x})\]
</p>

<p>при этом, элементы матрицы усиления \( K \)  выбираются так, чтобы матрица \( H=A-KC \)  была бы устойчивой, то есть, все собственные значения матрицы \( H \) должны иметь отрицательные действительные части.<br/> 
  Построение матрицы \( H \) становится очевидным, если в (1) раскрыть скобки:</p>
<p class="text-center">  
\[  \dot{\hat{x}} = A\hat{x}+Bu+Ky-KC\hat{x} = (A-KC)\hat{x} + Bu + Ky \]
</p>  
  
<p>Далее определнмся, почему требование устойчивости матрицы \( H \) обеспечивает сходимость к нулю разности \( x-\hat{x} \) .</p>

<p>Введём обозначение  \( \widetilde{x} = x-\hat{x} \), тогда \( \dot{\widetilde{x}} = \dot{x}-\dot{\hat{x}} \). Из системы (1) имеем:</p>

<p class="text-center">  
\[  \dot{x} = Ax+Bu, y=Cx \]
</p>

<p>В уравнении (2), раскрывая скобки, получим:</p>

<p class="text-center">  
\[  \dot{\hat{x}} = A\hat{x}+Bu+Ky-KC\hat{x}  \]
</p>
<p>Теперь вычислим \( \dot{\widetilde{x}} \)  :</p>

<p class="text-center">  
\[  \dot{\widetilde{x}} = \dot{x}-\dot{\hat{x}} = Ax+Bu - (A\hat{x}+Bu+Ky-KC\hat{x} ) = A - A\hat{x} - Ky + KC\hat{x}= \]
\[ = A(x-\hat{x}) - KCx + KC\hat{x}=  A(x-\hat{x}) - KC(x-\hat{x}) = (A- KC)\widetilde{x}\]
</p>

<p>Таким образом, приходим к однородной системе матричных дифференциальных уравнений с постоянными коэффициентами вида: </p>
<p class="text-center">  
\[  \dot{\widetilde{x}}  = (A-KC) \widetilde{x}, \quad\quad \text{или} \quad\quad \dot{\widetilde{x}}  = H \widetilde{x} \]
</p>

<p>об устойчивость решения \( \widetilde{x} \)   которой, можно судить по виду корней  соответствующего характеристического уравнения \( \chi (\lambda) = |H-\lambda E| \).</p>
<p>Итак, с обоснованием корректности построения описанного непрерывного наблюдателя покончено, перейдём теперь к реализации блок-схемы Xcos.</p>
<p>Для моделирования системы (24) с непрерывным наблюдателем (25) потребуются блоки <strong>GENSIN</strong><strong>_</strong><strong>f</strong> и <strong>CLOCK</strong><strong>_</strong><strong>c</strong> с палитры &laquo;<strong>Источники сигналов и воздействий</strong>&raquo;, блоки <strong>CS</strong><strong>С</strong><strong>OPE</strong> и <strong>END</strong> с палитры &laquo;<strong>Регистрирующие устройства</strong>&raquo;, и блок <strong>CLSS</strong> с палитры &laquo;<strong>Системы с непрерывным временем</strong>&raquo;.</p>

<p>Моделирование данной системы подразумевает задание матриц \( A, B, C, D \) , которые используются в блоке <strong>CLSS</strong>. В нашем случае все элементы матриц  некоторые случайные константы, поэтому мы можем их задать в контексте с помощью генератора случайных чисел с некоторыми поправками.</p>

  <p>Для начала зададим размерности матрицы в контексте:</p>

<div class="image-container">
<p><b>На этом месте располагается листинг, который не может быть правильно отображен в rss-ленте. Перейдите к оригинальной статье: <a href='http://inclab.ru/articles/modelirovanie-upravlyaemoy-sistemy-v-scilab-xcos'>http://inclab.ru/articles/modelirovanie-upravlyaemoy-sistemy-v-scilab-xcos</a></b></p>
<span class="image-description text-italic">Количество строк и столбцов матриц в контексте Xcos</span>
</div>	
 <p>и сгенерируем матрицу   размерности nxn:</p>
<div class="image-container">
<p><b>На этом месте располагается листинг, который не может быть правильно отображен в rss-ленте. Перейдите к оригинальной статье: <a href='http://inclab.ru/articles/modelirovanie-upravlyaemoy-sistemy-v-scilab-xcos'>http://inclab.ru/articles/modelirovanie-upravlyaemoy-sistemy-v-scilab-xcos</a></b></p>
</div>	

<p>Для того, чтобы избежать экспоненциальной неустойчивости рассматриваемой системы, изменим матрицу \( A\)  так, чтобы каждый из её элементов, стоящих на главной диагонали, не превышал бы собственного значения с максимальной действительной частью \( \widetilde{\lambda} \).<br/> Введём обозначение \( \widetilde{\lambda} = max_{j}{(Re(\lambda_j))} \) , тогда матрица  \( \widetilde{A}\) будет вычисляться как  \( \widetilde{A} = A- \widetilde{\lambda}E \). В контексте данное равенство реализуется следующим образом:</p>
<div class="image-container">
<p><b>На этом месте располагается листинг, который не может быть правильно отображен в rss-ленте. Перейдите к оригинальной статье: <a href='http://inclab.ru/articles/modelirovanie-upravlyaemoy-sistemy-v-scilab-xcos'>http://inclab.ru/articles/modelirovanie-upravlyaemoy-sistemy-v-scilab-xcos</a></b></p>
</div>	


<p>где функция <em>spec(A)</em> &ndash; вычисляет собственные значения матрица , функция <em>real()</em> &ndash; выделяет действительную часть своего аргумента, функция <em>max()</em> вычисляет максимальное из поданных в неё значений, а <em>eye()</em> &ndash; генерирует единичную матрицу совместной размерности.</p>

<p>Далее сгенерируем матрицы совместных размерностей  \( B, C, D \):</p>
<div class="image-container">
<p><b>На этом месте располагается листинг, который не может быть правильно отображен в rss-ленте. Перейдите к оригинальной статье: <a href='http://inclab.ru/articles/modelirovanie-upravlyaemoy-sistemy-v-scilab-xcos'>http://inclab.ru/articles/modelirovanie-upravlyaemoy-sistemy-v-scilab-xcos</a></b></p>
</div>	

<p>И вектор-столбец \( x^0 \)  случайных начальных условий: </p>
<div class="image-container">
<p><b>На этом месте располагается листинг, который не может быть правильно отображен в rss-ленте. Перейдите к оригинальной статье: <a href='http://inclab.ru/articles/modelirovanie-upravlyaemoy-sistemy-v-scilab-xcos'>http://inclab.ru/articles/modelirovanie-upravlyaemoy-sistemy-v-scilab-xcos</a></b></p>
</div>	

<p>Для генерации матрицы усиления воспользуемся встроенной Scilab &ndash; функцией <em>ppol</em><em>(</em><em>A</em><em>,</em><em>B</em><em>,</em><em>v</em><em>),</em> которая по заданным матрицам \( A,B \) и вектору полюсов  \( v \) подбирает элементы матрицы  \( K \) так, чтобы собственные значения матрицы  \(A-BK\) были бы полюсами.<br/> Однако для нашего наблюдателя должно выполняться то же условие, но для уравнения  \( A-KC \), поэтому в контекст необходимо добавить строку:</p>
<div class="image-container">
<p><b>На этом месте располагается листинг, который не может быть правильно отображен в rss-ленте. Перейдите к оригинальной статье: <a href='http://inclab.ru/articles/modelirovanie-upravlyaemoy-sistemy-v-scilab-xcos'>http://inclab.ru/articles/modelirovanie-upravlyaemoy-sistemy-v-scilab-xcos</a></b></p>
</div>	

<p>где символ &laquo;\( ' \) &raquo; означает транспонирование матрицы, а функция <em>ones</em><em>()</em> возвращает матрицу составленную из единиц того же размера, что и вектор \( x^0 \).</p>
<p>Теперь необходимо собрать все сгенерированные матрицы в систему, что делается с помощью функции <em>syslin</em><em>(dom,A,B,C [,D [,x0] ]), </em>которая генерирует систему вида</p>

<p class="text-center">  
 \[   
     \begin{cases}
       s \cdot x = Ax+Bu\\
       y = Cx + Du\\
  		x(0)=X0\\
     \end{cases} 
\]
</p>

соответственно, в контекст необходимо прописать:
<div class="image-container">
<p><b>На этом месте располагается листинг, который не может быть правильно отображен в rss-ленте. Перейдите к оригинальной статье: <a href='http://inclab.ru/articles/modelirovanie-upravlyaemoy-sistemy-v-scilab-xcos'>http://inclab.ru/articles/modelirovanie-upravlyaemoy-sistemy-v-scilab-xcos</a></b></p>
</div>	

<p>После задания в контексте всех необходимых параметров системы, нужно перейти к редактированию внутренних параметров блока <strong>CLSS</strong><strong>, </strong>где необходимо задать правильные матрицы: </p>

<div class="image-container" itemscope itemtype="http://schema.org/ImageObject">
    <picture>
        <source type="image/webp" srcset="/images/articles/modelirovanie-upravlyaemoy-sistemy-v-scilab-xcos/a7bnow/risunok-101-vnutrennie-parametry-bloka-clss-pri-modelirovanii-sistemy-1---2.webp"/>
        <img class="image-in-container" src="http://inclab.ru/images/articles/modelirovanie-upravlyaemoy-sistemy-v-scilab-xcos/a7bnow/risunok-101-vnutrennie-parametry-bloka-clss-pri-modelirovanii-sistemy-1---2.jpg" itemprop="contentUrl" alt="Рисунок 101.Внутренние параметры блока  CLSS при моделировании системы (1)-(2) " title="Рисунок 101.Внутренние параметры блока  CLSS при моделировании системы (1)-(2) "/>
    </picture>
    <span class="image-description text-italic" itemprop="description">Рисунок 101.Внутренние параметры блока  CLSS при моделировании системы (1)-(2) </span>
</div>   


<p>Блок схема, реализующая моделирование системы имеет несложный вид:
  <div class="image-container" itemscope itemtype="http://schema.org/ImageObject">
    <picture>
        <source type="image/webp" srcset="/images/articles/modelirovanie-upravlyaemoy-sistemy-v-scilab-xcos/fqvez4/risunok-102a-blok-shema-sistemy-s-nepreryvnym-nablyudatelem.webp"/>
        <img class="image-in-container" src="http://inclab.ru/images/articles/modelirovanie-upravlyaemoy-sistemy-v-scilab-xcos/fqvez4/risunok-102a-blok-shema-sistemy-s-nepreryvnym-nablyudatelem.jpg" itemprop="contentUrl" alt="Рисунок 102а.Блок-схема системы с непрерывным наблюдателем " title="Рисунок 102а.Блок-схема системы с непрерывным наблюдателем "/>
    </picture>
    <span class="image-description text-italic" itemprop="description">Рисунок 102а.Блок-схема системы с непрерывным наблюдателем </span>
</div>  
  
  
<p>Результат моделирования представлен на рисунке 102(б):</p>
 <div class="image-container" itemscope itemtype="http://schema.org/ImageObject">
    <picture>
        <source type="image/webp" srcset="/images/articles/modelirovanie-upravlyaemoy-sistemy-v-scilab-xcos/txq4kv/risunok-102b-grafiki-3-h-fazovyh-peremennyh-i-dvumernyy-nablyudatel.webp"/>
        <img class="image-in-container" src="http://inclab.ru/images/articles/modelirovanie-upravlyaemoy-sistemy-v-scilab-xcos/txq4kv/risunok-102b-grafiki-3-h-fazovyh-peremennyh-i-dvumernyy-nablyudatel.jpg" itemprop="contentUrl" alt="Рисунок 102б. Графики 3-х фазовых переменных и двумерный наблюдатель" title="Рисунок 102б. Графики 3-х фазовых переменных и двумерный наблюдатель"/>
    </picture>
    <span class="image-description text-italic" itemprop="description">Рисунок 102б. Графики 3-х фазовых переменных и двумерный наблюдатель</span>
</div>  

  
<h2>Построение дискретного наблюдателя</h2>
<p>В связи с тем, что в параграфе упоминается наблюдатель дискретный, то вполне предсказуемым шагом является модернизация блок-схемы (рис. 102 а)) таким образом, чтобы использовать в ней дискретный наблюдатель.</p>
<p>Построение дискретного наблюдателя подчиняется тем же правилам, что непрерывного, основанных на получении полюсов в качестве собственных значений матрицы  \(H = A-KC \). </p>
  
 <p>Поэтому алгоритм, прописанный на данный момент в контексте рабочей области, полностью удовлетворяет нашим требованиям. Остаётся только задать шаг дискретизации и дикретизировать полученную систему \( SYST \) . Для этого добавьте в контекст строки:</p>
<div class="image-container">
<p><b>На этом месте располагается листинг, который не может быть правильно отображен в rss-ленте. Перейдите к оригинальной статье: <a href='http://inclab.ru/articles/modelirovanie-upravlyaemoy-sistemy-v-scilab-xcos'>http://inclab.ru/articles/modelirovanie-upravlyaemoy-sistemy-v-scilab-xcos</a></b></p>
</div>	

<p>где Scilab-функция <em>dscr</em><em>()</em> производит дискретизацию непрерывной системы  \( SYST \)  с указанным шагом , \( dt \)  а встроенная функция <em>abcd</em><em>() </em>возвращает 4 матрицы  \( A,B,C,D \) , использующиеся в поданной на вход дискретной системе и записывает их в соответствующие выходные матрицы  \( Ad, Bd, Cd, Dd \) .<br/> В итоге контекст должен принять вид:</p>
<div class="image-container">
<p><b>На этом месте располагается листинг, который не может быть правильно отображен в rss-ленте. Перейдите к оригинальной статье: <a href='http://inclab.ru/articles/modelirovanie-upravlyaemoy-sistemy-v-scilab-xcos'>http://inclab.ru/articles/modelirovanie-upravlyaemoy-sistemy-v-scilab-xcos</a></b></p>
</div>	

<p>Для внедрения дискретного наблюдателя воспользуемся блоком  <img src="http://inclab.ru/images/articles/modelirovanie-upravlyaemoy-sistemy-v-scilab-xcos/ro40zf/dinamicheskaya-upravlyaemaya-sistema-s-nablyudateles-xcos.jpg"> с палитры &laquo;<strong>Системы с дискретным временем</strong>&raquo;. Кроме того нам понадобятся блоки <strong>MUX</strong> и <strong>DEMUX</strong> с палитры &laquo;<strong>Маршрутизация сигналов</strong>&raquo; и блок сумматора <strong>BIGSOM</strong><strong>_</strong><strong>f</strong> &nbsp;с палитры &laquo;<strong>Математические операции</strong>&raquo;. Блок-схема реализующая математическое моделирование системы дифференциальных уравнений с дискретным наблюдателем, представлена на рис. 103</p>

 <div class="image-container" itemscope itemtype="http://schema.org/ImageObject">
    <picture>
        <source type="image/webp" srcset="/images/articles/modelirovanie-upravlyaemoy-sistemy-v-scilab-xcos/2i0qaf/risunok-103-realizaciya-dinamicheskoy-sistemy-s-diskretnym-nablyudatelem-v-xcos.webp"/>
        <img class="image-in-container" src="http://inclab.ru/images/articles/modelirovanie-upravlyaemoy-sistemy-v-scilab-xcos/2i0qaf/risunok-103-realizaciya-dinamicheskoy-sistemy-s-diskretnym-nablyudatelem-v-xcos.jpg" itemprop="contentUrl" alt="Рисунок 103. Реализация динамической системы с дискретным наблюдателем в Xcos" title="Рисунок 103. Реализация динамической системы с дискретным наблюдателем в Xcos"/>
    </picture>
    <span class="image-description text-italic" itemprop="description">Рисунок 103. Реализация динамической системы с дискретным наблюдателем в Xcos</span>
</div>  

<p>Внутренние параметры блока дискретной линейной системы DLSS представлены на рис. 104 </p>
 <div class="image-container" itemscope itemtype="http://schema.org/ImageObject">
    <picture>
        <source type="image/webp" srcset="/images/articles/modelirovanie-upravlyaemoy-sistemy-v-scilab-xcos/1hlo96m/risunok-104-vnutrennie-parametry-bloka-dlss-pri-modelirovanii-diskretizirovannoy-sistemy-1---2.webp"/>
        <img class="image-in-container" src="http://inclab.ru/images/articles/modelirovanie-upravlyaemoy-sistemy-v-scilab-xcos/1hlo96m/risunok-104-vnutrennie-parametry-bloka-dlss-pri-modelirovanii-diskretizirovannoy-sistemy-1---2.jpg" itemprop="contentUrl" alt="Рисунок 104. Внутренние параметры блока  DLSS при моделировании дискретизированной системы (1)-(2)" title="Рисунок 104. Внутренние параметры блока  DLSS при моделировании дискретизированной системы (1)-(2)"/>
    </picture>
    <span class="image-description text-italic" itemprop="description">Рисунок 104. Внутренние параметры блока  DLSS при моделировании дискретизированной системы (1)-(2)</span>
</div>  
  
  
<p>Результат моделирования линейной динамической системы с дискретным наблюдателем представлен на рис. 105.  </p>
  
   <div class="image-container" itemscope itemtype="http://schema.org/ImageObject">
    <picture>
        <source type="image/webp" srcset="/images/articles/modelirovanie-upravlyaemoy-sistemy-v-scilab-xcos/17cbqhq/risunok-105-fazovye-koordinaty-i-diskretnyynablyudatel-dinamicheskoy-sistemy.webp"/>
        <img class="image-in-container" src="http://inclab.ru/images/articles/modelirovanie-upravlyaemoy-sistemy-v-scilab-xcos/17cbqhq/risunok-105-fazovye-koordinaty-i-diskretnyynablyudatel-dinamicheskoy-sistemy.jpg" itemprop="contentUrl" alt="Рисунок 105. Фазовые координаты и дискретныйнаблюдатель динамической системы" title="Рисунок 105. Фазовые координаты и дискретныйнаблюдатель динамической системы"/>
    </picture>
    <span class="image-description text-italic" itemprop="description">Рисунок 105. Фазовые координаты и дискретныйнаблюдатель динамической системы</span>
</div>  
  
  

  
  
  
  
  
  
  
  
  
  
  
  
<p>Оригинальный адрес статьи: <a href='http://inclab.ru/articles/modelirovanie-upravlyaemoy-sistemy-v-scilab-xcos'>http://inclab.ru/articles/modelirovanie-upravlyaemoy-sistemy-v-scilab-xcos</a><p>]]></description>
			<pubDate>Mon, 10 Jan 2022 18:18:52 +0400</pubDate>
		</item>
		<item>
			<title><![CDATA[Моделирование динамических систем в матричном виде]]></title>
			<link>http://inclab.ru/articles/modelirovanie-dinamicheskih-sistem-v-matrichnom-vide-xcos</link>
			<guid>http://inclab.ru/articles/modelirovanie-dinamicheskih-sistem-v-matrichnom-vide-xcos</guid>
			<description><![CDATA[<img src="http://inclab.ru" /><p>Ранее были рассмотрены несколько подходов к визуальному моделированию динамических систем, а именно:</p>
<ul>
<li><p><a href="http://inclab.ru/xcos/reshenie-differencialnogo-uravneniya-2-oy-stepeni">в виде последовательного интегрирования,</a></p></li>
<li><p><a href="http://inclab.ru/xcos/svedenie-k-sisteme-v-forme-koshi">в виде системы дифференциальных уравнений,</a></p></li>
<li><p><a href="http://inclab.ru/xcos/zamknutaya-sistema-upravleniya-scilab-xcos">и через передаточную функцию \( H(s)\)</a>.</p></li>
</ul>
<p>В данном материале будет рассмотрен подход к построению блок-схемы динамических систем, которые описываются матричными уравнениями. В связи с тем, что Scilab разрабатывается, как <em>матрично-ориентированное программное обеспечение</em>, представление динамических систем именно в матричном, а не покоординатном виде &ndash; есть наиболее оптимальный способ решения поставленных задач, потому что сам инструмент под это заточен, да и использование матриц и векторов позволяет избежать некоторых ошибок, которые бы имели место быть при их реализации с использованием других подходов.</p>

<h2>Немного теории</h2>
<p>В современной теории управления далеко не редкость -&nbsp; представление динамических систем в виде пространства состояний, так как это позволяет избежать ограничений, накладываемых на передаточные функции, использование которых присуще классическому подходу для решения задач управления.&nbsp;</p>
<p>Модель системы, построенная в <em>пространстве состояний</em> предполагает использование <em>ОДУ первого порядка</em>. Если же для описания процесса функционирования рассматриваемой системы требуется использование дифференциальных уравнений порядка выше 1, каждое из таких уравнений сводится в совокупности ОДУ первого порядка, что всегда возможно, как было сделлано с помощью <a href="http://inclab.ru/beginner/reshenie-differencialnih-uravnenij-v-scilab">пользовательских функций Scilab</a> и  <a href="http://inclab.ru/xcos/svedenie-k-sisteme-v-forme-koshi">блоков Xcos</a>.</p>
<p>При этом, переменные, которые используются для составления дифференциальных уравнений, называются фазовыми координатами и полностью описывают динамическую систему и её реакцию на определённые входные данные. Число фазовых переменных равняется порядку ОДУ, описывающему динамическую систему. Кроме того, фазовые переменные &ndash; это как раз те переменные, для которых задаются начальные условия, число которых, как известно, также, совпадает со степенью исходного ОДУ.</p>
<p>Модель пространства состояний формируется из уравнений входа и выхода, где для случая управляемой линейной системы из \(n\)&nbsp;переменных состояния, имеющей&nbsp; \(p\) входов и \(q\) выходов, матричные уравнения имеют вид:</p>

<p class="text-center">  
(1)  \[   
     \begin{cases}
       \dot x(t) = A(t)x(t)+B(t)u(t)\\
       \dot y(t) = C(t)x(t)+D(t)u(t)\\
     \end{cases}
  \quad\quad\text{где} \quad x(t)\in \mathbb{R}^n, y(t)\in \mathbb{R}^q, u(t)\in \mathbb{R}^p
\]
</p>


<p>\(x=(x_1,x_2,...,x_n)^T \) - вектор состояния, элементы которого называются состояниями системы,<br/> 
  \(y=(y_1,y_2,...,y_q)^T \)- вектор выхода, <br /> 
  \(u=(u_1,u_2,...,u_p)^T \)- вектор управления, <br/>
  \( A_{n\times n} \)- матрица системы, <br /> 
  \( B_{n\times p} \)- матрица управления, <br /> 
  
  \( C_{n\times q} \)- матрица выхода, <br /> 
  \( D_{q\times p} \)- матрица прямой связи.</p>
<p>Структурная схема описанной системы представлена на рис. 89.</p>

<div class="image-container" itemscope itemtype="http://schema.org/ImageObject">
    <picture>
        <source type="image/webp" srcset="/images/articles/modelirovanie-dinamicheskih-sistem-v-matrichnom-vide-xcos/1yvdgp9/risunok-89-strukturnaya-shema-nepreryvnoy-lineynoy-dinamicheskoy-sistemy-1.webp"/>
        <img class="image-in-container" src="http://inclab.ru/images/articles/modelirovanie-dinamicheskih-sistem-v-matrichnom-vide-xcos/1yvdgp9/risunok-89-strukturnaya-shema-nepreryvnoy-lineynoy-dinamicheskoy-sistemy-1.jpg" itemprop="contentUrl" alt="Рисунок 89. Структурная схема непрерывной линейной динамической системы (1)" title="Рисунок 89. Структурная схема непрерывной линейной динамической системы (1)"/>
    </picture>
    <span class="image-description text-italic" itemprop="description">Рисунок 89. Структурная схема непрерывной линейной динамической системы (1)</span>
</div>  

  
<h2>Управление грузом на пружине с демпфером</h2>
<p>Разобравшись с терминологией, перейдём к примерам. Рассмотрим груз массы \(m\)&nbsp;с закреплённой пружиной жёсткости \(k\)&nbsp;и демпфером с коэффициентом демпфирования \(c\), движение которого осуществляется при помощи силы&nbsp;\(F\) &nbsp;(см. рис. 90)</p>

<div class="image-container" itemscope itemtype="http://schema.org/ImageObject">
    <picture>
        <source type="image/webp" srcset="/images/articles/modelirovanie-dinamicheskih-sistem-v-matrichnom-vide-xcos/qlhmx7/risunok-90-peredvigaemyy-gruz-s-pruzhinoy-i-dempferom.webp"/>
        <img class="image-in-container" src="http://inclab.ru/images/articles/modelirovanie-dinamicheskih-sistem-v-matrichnom-vide-xcos/qlhmx7/risunok-90-peredvigaemyy-gruz-s-pruzhinoy-i-dempferom.jpg" itemprop="contentUrl" alt="Рисунок 90. Передвигаемый груз с пружиной и демпфером" title="Рисунок 90. Передвигаемый груз с пружиной и демпфером"/>
    </picture>
    <span class="image-description text-italic" itemprop="description">Рисунок 90. Передвигаемый груз с пружиной и демпфером</span>
</div>   

<p>Уравнения движения описанного груза имеют вид:</p>
<p class="text-center">  
(2)  \[   
    F-kx-c\frac{dx}{dt}-m\frac{d^2x}{dt^2}=0
\]
</p>

<p>В принципе, уравнения (2) уже достаточно, чтобы собрать его блок-схему с использованием подходов, рассмотренных ранее. Однако наша цель &ndash; матрицы, которые на данном этапе не видны.</p>
<p>Прежде всего, определим, степень рассматриваемого уравнения. Наибольшая производная, фигурирующая в (2) &ndash; второго порядка, стало быть, перед нами ОДУ 2-го порядка.</p>
<p>В <a href="http://inclab.ru/xcos/svedenie-k-sisteme-v-forme-koshi">статье</a> рассматривался способ решения подобного дифференциального уравнения, путём сведения его к системе. Этот подход и лежит в основе представления динамической системы в пространстве состояний. Вспомним, что мы делали:<br/> 1) переписывали уравнения так, чтобы слева от знака равно осталась наивысшая производная,<br/> 2) делали замену и получали систему. <br/>Приступим. Преобразуем (2) к желаемому виду:</p>
<p class="text-center">  
(3)  \[   
    \ddot{x}=\frac{1}{m}\left( -c\dot x-kx+F \right)
\]
</p>


<p>Вопрос, сколько получится ОДУ первой степени из ОДУ 2-й степени? Правильно, два. Вторая степень уравнения, - два уравнения в системе. А как получить эти два уравнения? Правильно, ввести переменные состояния . Вторая степень уравнения &ndash; две переменных состояния. Введём замену:</p>

<p class="text-center">  
(4)\[   
     \begin{cases}
       z_1 = x\\
       z_2 = \dot x\\
     \end{cases}
  \quad\quad \Rightarrow
       \begin{cases}
       \dot z_1 = \dot x\\
       \dot z_2 = \ddot x\\
     \end{cases}
  
\]
</p>

<p>Итак, исходно обыкновенное дифференциальное уравнение второй степени (2), путём замены (4) сводится к системе из двух ОДУ первой степени:</p>


<p class="text-center">  
(5)\[   
      \begin{cases}
       \dot z_1 = z_2\\
       \dot z_2 = \frac{1}{m}\left( -cz_2-kz_1+F \right) \\
     \end{cases}
  \]
</p>

<p>На первый раз, раскроем скобки в (5) и запишем фазовые переменные друг под другом:</p>


<p class="text-center">  
\[   
      \begin{cases}
       \dot z_1 = \quad 0\cdot z_1 + \;\;\;1\cdot z_2 + 0\cdot F\\
       \dot z_2 = -\frac{k}{m}\cdot z_1 -\frac{c}{m}\cdot z_2 + \frac{1}{m}\cdot F  \\
     \end{cases}
  \]
</p>

<p>Запишем систему (5) в матричной форме:</p>

<p class="text-center">  
(6) \[   
\begin{pmatrix}
\dot z_1 \\
\dot z_2
\end{pmatrix} = 
\begin{pmatrix}
0 & 1 \\
-\frac{k}{m} & -\frac{c}{m}
\end{pmatrix}  

\begin{pmatrix}
 z_1 \\
 z_2
\end{pmatrix}  +
  \begin{pmatrix}
 0 \\
 \frac{1}{m}
\end{pmatrix}  F
    \]
</p>
<p>Теперь, мы с лёгкостью можем определить матрицу состояний: </p>

<p class="text-center">  
\[ A_{2\times 2}=   
\begin{pmatrix}
0 & 1 \\
-\frac{k}{m} & -\frac{c}{m}
\end{pmatrix}  
    \]
</p>
 
<p>и матрицу управления: </p>

<p class="text-center">  
 \[  B_{2\times 1}= 
  \begin{pmatrix}
 0 \\
 \frac{1}{m}
\end{pmatrix}  
    \]
</p>

<p>Для определения выходного вектора \( y \) и матриц \( C,D \) , нужно обозначить величину, измеряемую на выходе. Допустим, мы хотим измерять положение груза, следовательно, выходное уравнение будет иметь вид: </p>
<p class="text-center">  
\( y=z_1 \)
</p>

<p>соответственно, в матричной форме: </p>
<p class="text-center">  
\[   
\begin{pmatrix}
 y_1 \\
 y_2
\end{pmatrix} = 
  \underbrace{
\begin{pmatrix}
1 & 0 \\
0 & 0
\end{pmatrix}  
}_\text{C}
\begin{pmatrix}
 z_1 \\
 z_2
\end{pmatrix}  +
  \underbrace{
  \begin{pmatrix}
 0 \\
 0
\end{pmatrix}
  }_\text{D} F
    \]
</p>

<p>В итоге, получим следующую динамическую модель движущегося груза в пространстве состояний:</p>


<p class="text-center">  
(7) \[   
 \begin{cases}  
  	\dot z =
\begin{pmatrix}
0 & 1 \\
-\frac{k}{m} & -\frac{c}{m}
\end{pmatrix} z + 

  \begin{pmatrix}
 0 \\
 \frac{1}{m}
\end{pmatrix}  F \\
  
  y=
    \begin{pmatrix}
 1 & 0
\end{pmatrix}  z
   \end{cases}
    \]
 
</p>


<p>Последний штрих, перед тем, как перейти к визуальному моделированию  указать начальные условия для системы (7). Напомним, число н.у.=числу переменных состояния=порядку исходного ДУ. Мы рассматриваем уравнение второго порядка, следовательно, необходимо задать два начальных условия  для каждой из фазовых переменных:  \( z_{1}^{0}=0, z_{2}^{0}=0 \)</p>

<h2>Перейдём к построению блок-схемы тележки с демпфером в Xcos </h2>

<ol>
<li><p>Для задания динамической системы в формате (7) используется блок <img class="image-seftcontainer" src="http://inclab.ru/images/articles/modelirovanie-dinamicheskih-sistem-v-matrichnom-vide-xcos/25plpl/modelirovanie-dinamicheskih-sistem-v-matrichnom-vide.jpg" alt="Моделирование динамических систем в матричном виде" title="Моделирование динамических систем в матричном виде"/>
 с вкладки &laquo;<strong>Системы с непрерывным временем</strong>&raquo;. Во внутренних параметрах данного блока нужно в Scilab- формате задания матриц и векторов, записать соответствующие матрицы. Мы не будем прибегать к непосредственной записи матриц в блоке, а зададим их в контексте, чтобы в дальнейшем в параметрах блока <strong>CLSS</strong> использовать только соответствующие переменные.</p></li>
  
<li><p>Откройте на редактирование контекст рабочей области и задайте матрицы и вектора, используемые в системе (7), особое внимание стоит уделить форме задания строки \(C\):</p>
  
<div class="image-container">
<p><b>На этом месте располагается листинг, который не может быть правильно отображен в rss-ленте. Перейдите к оригинальной статье: <a href='http://inclab.ru/articles/modelirovanie-dinamicheskih-sistem-v-matrichnom-vide-xcos'>http://inclab.ru/articles/modelirovanie-dinamicheskih-sistem-v-matrichnom-vide-xcos</a></b></p>
<span class="image-description text-italic">Векторно-матричные элементы системы (7) в контексте Xcos</span>
</div>	  
 </li>

<li><p>Далее в контексте необходимо задать начальные условия \( z_{1}^{0}=0, z_{2}^{0}=0 \)  в виде вектор-строки:</p>
<div class="image-container">
<p><b>На этом месте располагается листинг, который не может быть правильно отображен в rss-ленте. Перейдите к оригинальной статье: <a href='http://inclab.ru/articles/modelirovanie-dinamicheskih-sistem-v-matrichnom-vide-xcos'>http://inclab.ru/articles/modelirovanie-dinamicheskih-sistem-v-matrichnom-vide-xcos</a></b></p>
<span class="image-description text-italic">Задание начальных условий в контексте Xcos</span>
</div>
 </li>

<li><p>И указать параметры системы: </p>
<div class="image-container">
<p><b>На этом месте располагается листинг, который не может быть правильно отображен в rss-ленте. Перейдите к оригинальной статье: <a href='http://inclab.ru/articles/modelirovanie-dinamicheskih-sistem-v-matrichnom-vide-xcos'>http://inclab.ru/articles/modelirovanie-dinamicheskih-sistem-v-matrichnom-vide-xcos</a></b></p>
<span class="image-description text-italic">Задаём переменные в контексте Xcos</span>
</div>
 </li>

<li><p>После чего, необходимо сохранить контекст и заполнить поля внутренних параметрах блока <strong>CLSS</strong><strong> , как показано на рис. 91. </strong></p>
 <div class="image-container" itemscope itemtype="http://schema.org/ImageObject">
    <picture>
        <source type="image/webp" srcset="/images/articles/modelirovanie-dinamicheskih-sistem-v-matrichnom-vide-xcos/1tt8uf6/risunok-91-zadanie-vnutrennih-parametrov-bloka-clss-s-pomoschyu-peremennyh-iz-konteksta.webp"/>
        <img class="image-in-container" src="http://inclab.ru/images/articles/modelirovanie-dinamicheskih-sistem-v-matrichnom-vide-xcos/1tt8uf6/risunok-91-zadanie-vnutrennih-parametrov-bloka-clss-s-pomoschyu-peremennyh-iz-konteksta.jpg" itemprop="contentUrl" alt="Рисунок 91. Задание внутренних параметров блока CLSS с  помощью переменных из контекста" title="Рисунок 91. Задание внутренних параметров блока CLSS с  помощью переменных из контекста"/>
    </picture>
    <span class="image-description text-italic" itemprop="description">Рисунок 91. Задание внутренних параметров блока CLSS с  помощью переменных из контекста</span>
</div>  

 </li>


<li><p>Для дальнейшего построения блок-схемы потребуются 4 блока: <strong>CLOCK</strong><strong>_</strong><strong>c</strong><strong>, </strong><strong>END</strong><strong>, </strong><strong>CSCOPE</strong> и блок <img class="image-seftcontainer" src="http://inclab.ru/images/articles/modelirovanie-dinamicheskih-sistem-v-matrichnom-vide-xcos/1ec31rr/modelirovanie-dinamicheskih-sistem-v-matrichnom-vide.jpg" alt="Моделирование динамических систем в матричном виде" title="Моделирование динамических систем в матричном виде"/>
<strong>, </strong>который находится на палитре<strong> &laquo;Источники сигналов и воздействий&raquo;. </strong>Блоки необходимо связать между собой соединительными линиями, как показано на рис. 92, настроить параметры осциллографа и запустить моделирование на 22с.<strong>&nbsp; </strong></p>
  
  <div class="image-container" itemscope itemtype="http://schema.org/ImageObject">
    <picture>
        <source type="image/webp" srcset="/images/articles/modelirovanie-dinamicheskih-sistem-v-matrichnom-vide-xcos/1piv9vp/risunok-92-blok-shema-sistemy-7.webp"/>
        <img class="image-in-container" src="http://inclab.ru/images/articles/modelirovanie-dinamicheskih-sistem-v-matrichnom-vide-xcos/1piv9vp/risunok-92-blok-shema-sistemy-7.jpg" itemprop="contentUrl" alt="Рисунок 92.  Блок-схема системы (7)" title="Рисунок 92.  Блок-схема системы (7)"/>
    </picture>
    <span class="image-description text-italic" itemprop="description">Рисунок 92.  Блок-схема системы (7)</span>
</div>  

  </li>
</ol>


<p>В результате моделирования на экране появится график затухающих синусоидальных колебаний, соответствующий переменной  \(z_1\), то есть, координате  передвигаемого груза (рис. 93). </p>


  <div class="image-container" itemscope itemtype="http://schema.org/ImageObject">
    <picture>
        <source type="image/webp" srcset="/images/articles/modelirovanie-dinamicheskih-sistem-v-matrichnom-vide-xcos/xkpvav/risunok-93-traektoriya-vyhoda-koordinata-gruza-sistemy-7.webp"/>
        <img class="image-in-container" src="http://inclab.ru/images/articles/modelirovanie-dinamicheskih-sistem-v-matrichnom-vide-xcos/xkpvav/risunok-93-traektoriya-vyhoda-koordinata-gruza-sistemy-7.jpg" itemprop="contentUrl" alt="Рисунок 93. Траектория выхода (координата груза) системы (7)" title="Рисунок 93. Траектория выхода (координата груза) системы (7)"/>
    </picture>
    <span class="image-description text-italic" itemprop="description">Рисунок 93. Траектория выхода (координата груза) системы (7)</span>
</div>  


<p>Блок <strong>STEP</strong><strong>_</strong><strong>FUNCTION</strong> функционирует согласно правилу<strong>:</strong></p>
<p class="text-center">  
 \[  step_f(t)= 
 \begin{cases}  
  	s_0, \quad t < t_0 \\
    s_f, \quad t > t_0 \\
   \end{cases}
    \]
 </p>
<p>где \(t_0, s_0,s_f\) - параметры, которые задаются во <strong>внутренних параметрах блока</strong> <strong>STEP</strong><strong>_</strong><strong>FUNCTION</strong> следующим образом<strong>:</strong></p>
<ul>
<li><p>\(t_0\)- это параметр <strong>Start Time,</strong></p></li>
<li><p>\(s_0\)- это параметр <strong>Initial Value,</strong></p></li>
<li><p>\(s_f\)- это параметр <strong>Final Value</strong>.</p></li>
</ul>
<p>В нашем случае, параметры у блока <strong>STEP</strong><strong>_</strong><strong>FUNCTION</strong> остались выставленные по умолчанию, поэтому, он на протяжении 1сек. подаёт на <strong>выход</strong> значение<strong> &laquo;0&raquo;, </strong>а в последующие моменты времени &ndash; значение<strong> &laquo;1&raquo;, </strong>что прослеживается на графике (рис. 93).</p>


<h2>Выводим график скорости груза</h2>
<p>После запуска моделирования возникает справедливый вопрос, а почему переменная только одна и как же вывести фазовый портрет системы?</p>
<p>Прежде всего, отметим, что на выход блока <strong>CLSS </strong>подаётся переменная \(y\),&nbsp; которая формируется, как выход системы (7). Обратимся к системе (7) и её уравнению выхода</p>

<p class="text-center">  
\[   
\begin{pmatrix}
 y_1 \\
 y_2
\end{pmatrix} = 
  \underbrace{
\begin{pmatrix}
1 & 0 \\
0 & 0
\end{pmatrix}  
}_\text{C}
\begin{pmatrix}
 z_1 \\
 z_2
\end{pmatrix}  
    \]
</p>

<p>где не обнуляется только фазовая переменная \(z_1\), соответствующая переменной выхода с координатой \(y_1\)&nbsp;. Становится понятно, что, собственно, хотели получить на выходе \(y\)&nbsp;- то и получили &ndash; переменную состояния \(z_1\), которая отвечает за положение груза \(x\). Но мы сами настроили выход таким образом, а значит, его можно изменить.</p>
<p>Если бы нам потребовалось, например, построить график скорости груза, а скорость, -это, как известно &ndash; \(\dot x\) , то и в уравнении выхода нужно было бы обращаться к фазовой переменной \(z_2\), отвечающей за скорость. Следовательно, уравнение выхода в системе (7) для случая вывода скорости грузу, преобразуется к виду 
<p class="text-center">  
\[   
\begin{pmatrix}
 y_1 \\
 y_2
\end{pmatrix} = 
  \underbrace{
\begin{pmatrix}
0 & 0 \\
0 & 1
\end{pmatrix}  
}_\text{C}
\begin{pmatrix}
 z_1 \\
 z_2
\end{pmatrix}  
    \]
</p>  
  
  
<p> или сокращённо: </p>
 <p class="text-center">  
\[   
y=\begin{pmatrix}
0 & 1 
\end{pmatrix}z  
    \]
</p>  
  
  
  
<p>Отредактировав вектор в контексте, запустите моделирование, результатом которого будет график, изображённый на рис. 94.</p>

  <div class="image-container" itemscope itemtype="http://schema.org/ImageObject">
    <picture>
        <source type="image/webp" srcset="/images/articles/modelirovanie-dinamicheskih-sistem-v-matrichnom-vide-xcos/1svfayh/risunok-94-grafik-skorosti-gruza-sistemy-7.webp"/>
        <img class="image-in-container" src="http://inclab.ru/images/articles/modelirovanie-dinamicheskih-sistem-v-matrichnom-vide-xcos/1svfayh/risunok-94-grafik-skorosti-gruza-sistemy-7.jpg" itemprop="contentUrl" alt="Рисунок 94. График скорости груза системы (7)" title="Рисунок 94. График скорости груза системы (7)"/>
    </picture>
    <span class="image-description text-italic" itemprop="description">Рисунок 94. График скорости груза системы (7)</span>
</div>  

<h2>Строим траектории фазовых переменных системы в Xcos</h2>
  
<p>Рассмотрим теперь задачу вывода нескольких переменных состояния и построения траектории на фазовой плоскости. </p>
<p>Обратимся к ранее составленным уравнениям выхода. В первом случае матричное уравнение  </p>
 <p class="text-center">  
\[   
\begin{pmatrix}
 y_1 \\
 y_2
\end{pmatrix} = 
  \underbrace{
\begin{pmatrix}
1 & 0 \\
0 & 0
\end{pmatrix}  
}_\text{C}
\begin{pmatrix}
 z_1 \\
 z_2
\end{pmatrix}  
    \]
</p> 
  
<p>подаёт на выход \( y_1 \) фазовую переменную  \( z_1 \), потому что только элемент \( c_{11} \)  матрицы выхода \( C \) не обнуляется. </p>  
<p>Соответственно для вывода фазовой переменной \( z_2 \)  справедливо уравнение  </p> 
<p class="text-center">  
\[   
\begin{pmatrix}
 y_1 \\
 y_2
\end{pmatrix} = 
  \underbrace{
\begin{pmatrix}
0 & 0 \\
0 & 1
\end{pmatrix}  
}_\text{C}
\begin{pmatrix}
 z_1 \\
 z_2
\end{pmatrix}  
    \]
</p>    
  
  
 <p>где ненулевым оказывается элемент \( c_{22} \)  </p>  
 <p>Теперь, если обобщить полученную информацию, можно сделать вывод, что для вывода переменной состояния \( z_k \), в матрице выхода должна стоять &laquo;1&raquo; на месте \( c_{kk} \). Соответственно, для передачи на выход обеих переменных состояния рассматриваемой двумерной системы (7), матрица \( C \) преобразуется в единичную матрицу размера 2х2, при этом, размерность вектора \( y \)&nbsp;становится равной количеству выводимых переменных, т.е. &laquo;2&raquo;.</p>
<p>Таким образом, линейная динамическая система в пространстве состояний, описывающая движение груза с пружиной и демпфером, подающая на выход обе фазовых переменных, примет вид:</p> 
  
  <p class="text-center">  
(8) \[   
 \begin{cases}  
  	\dot z =
\begin{pmatrix}
0 & 1 \\
-\frac{k}{m} & -\frac{c}{m}
\end{pmatrix} z + 

  \begin{pmatrix}
 0 \\
 \frac{1}{m}
\end{pmatrix}  F \\
  
  y=
    \begin{pmatrix}
 1 & 0\\
 0 & 1  
\end{pmatrix}  z
   \end{cases}
    \]
 
</p>
  
<p>Для моделирования системы (8), прежде всего, в контексте нужно изменить строку, где задаётся матрица выхода:</p>
<div class="image-container">
<p><b>На этом месте располагается листинг, который не может быть правильно отображен в rss-ленте. Перейдите к оригинальной статье: <a href='http://inclab.ru/articles/modelirovanie-dinamicheskih-sistem-v-matrichnom-vide-xcos'>http://inclab.ru/articles/modelirovanie-dinamicheskih-sistem-v-matrichnom-vide-xcos</a></b></p>
<span class="image-description text-italic">Задание единичной матрицы Scilab</span>
</div>  
  
<p>После чего необходимо заменить одномерный <strong>осциллограф</strong> на блок <strong>CMSCOPE</strong>, размерность входа которого нужно исправить на 2. На рис.95а) приведена блок-схема с векторным осциллографом, а на рис. 95 б) &ndash; результат моделирования системы (8).</p>  
  
  <div class="image-container" itemscope itemtype="http://schema.org/ImageObject">
    <picture>
        <source type="image/webp" srcset="/images/articles/modelirovanie-dinamicheskih-sistem-v-matrichnom-vide-xcos/109bh0t/risunok-95a-blok-shema-dinamicheskoy-sistemy-v-xcos.webp"/>
        <img class="image-in-container" src="http://inclab.ru/images/articles/modelirovanie-dinamicheskih-sistem-v-matrichnom-vide-xcos/109bh0t/risunok-95a-blok-shema-dinamicheskoy-sistemy-v-xcos.jpg" itemprop="contentUrl" alt="Рисунок 95а. Блок-схема динамической системы в Xcos" title="Рисунок 95а. Блок-схема динамической системы в Xcos"/>
    </picture>
    <span class="image-description text-italic" itemprop="description">Рисунок 95а. Блок-схема динамической системы в Xcos</span>
</div>  
  
   <div class="image-container" itemscope itemtype="http://schema.org/ImageObject">
    <picture>
        <source type="image/webp" srcset="/images/articles/modelirovanie-dinamicheskih-sistem-v-matrichnom-vide-xcos/1tj2szd/risunok-95b-grafiki-fazovyh-koordinat-na-odnoy-sesteme-koordinat-v-xcos.webp"/>
        <img class="image-in-container" src="http://inclab.ru/images/articles/modelirovanie-dinamicheskih-sistem-v-matrichnom-vide-xcos/1tj2szd/risunok-95b-grafiki-fazovyh-koordinat-na-odnoy-sesteme-koordinat-v-xcos.jpg" itemprop="contentUrl" alt="Рисунок 95б. Графики фазовых координат на одной сестеме координат в Xcos" title="Рисунок 95б. Графики фазовых координат на одной сестеме координат в Xcos"/>
    </picture>
    <span class="image-description text-italic" itemprop="description">Рисунок 95б. Графики фазовых координат на одной сестеме координат в Xcos</span>
</div>  
   
<h2>Строим графики динамической системы на разных координатных сетках в Xcos</h2>  
  <p>А что, если в ходе моделирования потребуется построить графики переменных состояния на отдельных системах координат? </p>
  
  
  
 <p>В этом случае потребуется воспользоваться блоком <img class="image-seftcontainer" src="http://inclab.ru/images/articles/modelirovanie-dinamicheskih-sistem-v-matrichnom-vide-xcos/50b2l4/modelirovanie-dinamicheskih-sistem-v-matrichnom-vide.jpg" alt="Моделирование динамических систем в матричном виде" title="Моделирование динамических систем в матричном виде"/>
, который располагается на палитре <strong>«Маршрутизация сигналов»</strong>. Данный
блок разделяет входной поток на отдельные составляющие. В нашем случае на вход блока <strong>DEMUX</strong> попадает вектор \( y \) условной размерности 2, который на выходе превращается в отдельные вектора фазовых выходных переменных \( y_1 \) и \( y_2 \). Использования блока расщепления DEMUX представлено на рис. 96.
  
     <div class="image-container" itemscope itemtype="http://schema.org/ImageObject">
    <picture>
        <source type="image/webp" srcset="/images/articles/modelirovanie-dinamicheskih-sistem-v-matrichnom-vide-xcos/13lwhtc/risunok-96-xcos-shema-dinamicheskoy-sistemy-s-vyvodom-treh-sistem-koordinat.webp"/>
        <img class="image-in-container" src="http://inclab.ru/images/articles/modelirovanie-dinamicheskih-sistem-v-matrichnom-vide-xcos/13lwhtc/risunok-96-xcos-shema-dinamicheskoy-sistemy-s-vyvodom-treh-sistem-koordinat.jpg" itemprop="contentUrl" alt="Рисунок 96. Xcos-схема динамической системы  с выводом трёх систем координат" title="Рисунок 96. Xcos-схема динамической системы  с выводом трёх систем координат"/>
    </picture>
    <span class="image-description text-italic" itemprop="description">Рисунок 96. Xcos-схема динамической системы  с выводом трёх систем координат</span>
</div>  
   
  <p>Результат моделирования и внутренние параметры блока <strong>CMSCOPE</strong> представлены на рис. 97а-б).</p>
    
<div class="image-container" itemscope itemtype="http://schema.org/ImageObject">
    <picture>
        <source type="image/webp" srcset="/images/articles/modelirovanie-dinamicheskih-sistem-v-matrichnom-vide-xcos/1e1nidi/risunok-97a-nastroyki-vnutrennih-parametrov-bloka-cmscope.webp"/>
        <img class="image-in-container" src="http://inclab.ru/images/articles/modelirovanie-dinamicheskih-sistem-v-matrichnom-vide-xcos/1e1nidi/risunok-97a-nastroyki-vnutrennih-parametrov-bloka-cmscope.jpg" itemprop="contentUrl" alt="Рисунок 97а.Настройки внутренних параметров блока  CMSCOPE" title="Рисунок 97а.Настройки внутренних параметров блока  CMSCOPE"/>
    </picture>
    <span class="image-description text-italic" itemprop="description">Рисунок 97а.Настройки внутренних параметров блока  CMSCOPE</span>
</div>  
  
<div class="image-container" itemscope itemtype="http://schema.org/ImageObject">
    <picture>
        <source type="image/webp" srcset="/images/articles/modelirovanie-dinamicheskih-sistem-v-matrichnom-vide-xcos/1ujgq5t/risunok-97b-ishodnyy-signal-i-razdelennyy-na-2-komponenty.webp"/>
        <img class="image-in-container" src="http://inclab.ru/images/articles/modelirovanie-dinamicheskih-sistem-v-matrichnom-vide-xcos/1ujgq5t/risunok-97b-ishodnyy-signal-i-razdelennyy-na-2-komponenty.jpg" itemprop="contentUrl" alt="Рисунок 97б.Исходный сигнал и разделённый на 2 компоненты" title="Рисунок 97б.Исходный сигнал и разделённый на 2 компоненты"/>
    </picture>
    <span class="image-description text-italic" itemprop="description">Рисунок 97б.Исходный сигнал и разделённый на 2 компоненты</span>
</div>  
  
<p>Продолжим модернизировать созданную блок-схему и на следующем шаге откажемся от <strong>осциллографа</strong>, заменив его блоком <strong>TOW</strong><strong>_</strong><strong>c</strong>. Использование блока записи в контекст предпочтительнее, так как последний предоставляет больше возможностей для редактирования и отображения графической информации посредством использования контекста.</p>
<p>Блоки многомерного осциллографа <strong>CMSCOPE</strong> и расщепления можно удалить<strong> &ndash; </strong>они не понадобятся<strong>. </strong></p>
<p>Блок-схема системы с внесёнными изменениями показана на рис. 98.</p>   
    
  
<div class="image-container" itemscope itemtype="http://schema.org/ImageObject">
    <picture>
        <source type="image/webp" srcset="/images/articles/modelirovanie-dinamicheskih-sistem-v-matrichnom-vide-xcos/tg1lvk/risunok-98-vnedrenie-bloka-tow_c-blok-shemu-sistemy.webp"/>
        <img class="image-in-container" src="http://inclab.ru/images/articles/modelirovanie-dinamicheskih-sistem-v-matrichnom-vide-xcos/tg1lvk/risunok-98-vnedrenie-bloka-tow_c-blok-shemu-sistemy.jpg" itemprop="contentUrl" alt="Рисунок 98.Внедрение блока TOW_c  блок-схему системы " title="Рисунок 98.Внедрение блока TOW_c  блок-схему системы "/>
    </picture>
    <span class="image-description text-italic" itemprop="description">Рисунок 98.Внедрение блока TOW_c  блок-схему системы </span>
</div>     
   
<p>Напомним, что на вход блока <strong>TOW</strong><strong>_</strong><strong>c</strong> подаётся вектор, который в переменную y_var, а потом используется в контексте для построения графиков. Чтобы понять, что за объект формируется в переменной y_var, его можно вывести в консоль с помощью стандартной функции Scilab disp().</p>
<p>Добавьте в контекст строку очистки консоли и вывода переменной:</p>   
   
<div class="image-container">
<p><b>На этом месте располагается листинг, который не может быть правильно отображен в rss-ленте. Перейдите к оригинальной статье: <a href='http://inclab.ru/articles/modelirovanie-dinamicheskih-sistem-v-matrichnom-vide-xcos'>http://inclab.ru/articles/modelirovanie-dinamicheskih-sistem-v-matrichnom-vide-xcos</a></b></p>
<span class="image-description text-italic">строки очистки консоли и вывода переменной</span>
</div>     
   
   
<p>Запустите моделирование и перейдите в консоль. В командном окне Scilab Вы обнаружите следующее:</p>   
   
<div class="image-container" itemscope itemtype="http://schema.org/ImageObject">
    <picture>
        <source type="image/webp" srcset="/images/articles/modelirovanie-dinamicheskih-sistem-v-matrichnom-vide-xcos/6e4usz/risunok-99-otobrazhenie-obekta-y_var-v-konsoli.webp"/>
        <img class="image-in-container" src="http://inclab.ru/images/articles/modelirovanie-dinamicheskih-sistem-v-matrichnom-vide-xcos/6e4usz/risunok-99-otobrazhenie-obekta-y_var-v-konsoli.jpg" itemprop="contentUrl" alt="Рисунок 99.Отображение объекта y_var в консоли " title="Рисунок 99.Отображение объекта y_var в консоли "/>
    </picture>
    <span class="image-description text-italic" itemprop="description">Рисунок 99.Отображение объекта y_var в консоли </span>
</div>     
    
 <p>Итак, рисунок 99 гласит о том, что <em>объект&nbsp; </em>  <em>y_var</em> содержит два атрибута: <em>вектор</em> \( values \), в котором 2 столбца и 220 строк и &nbsp;<em>вектор </em> \( time \) &ndash; временные отсчёты, представляющие собой вектор-столбец с 220 значениями.</p>
   
<p>Если подробнее, то <em>вектор </em>  <em>y_var</em>\(.time\) <em> &ndash; </em>это точки в которых вычисляются значения системы, их 220 потому, что моделирование происходит на протяжении 22сек. со значением \( period=0.1 \). <em>Вектор</em>&nbsp; <em>y_var</em>\(.values\) в <u>первом</u> столбце содержит значения первой фазовой переменной \( z_1 \), поданной на выход системы, т.е. значения координаты \( x \), вычисленные в каждой из 220 моментов времени; а во <u>втором</u> столбце &ndash; значения второй фазовой переменной \( z_2 \), которая соответствует производной \( \dot{x} \), то есть скорости груза, вычисленные в тех же 220 точках.</p>
   <br/>
<p>Для построения покоординатных графиков и фазового портрета нам предстоит обращаться к значениям <em>y_var</em>\(.values\) содержащимся в первом и втором столбцах по-отдельности.</p>
<p>Например, для того, чтобы получить все значения <strong>первого</strong> столбца, соответствующие переменной состояния \(z_1\), необходимо записать: <strong>y</strong><strong>_</strong><strong>var</strong><strong> . </strong><strong>values</strong><strong>(: , 1), </strong>соответственно, чтобы получить значения <strong>вектора скорости</strong>,&nbsp; нужно использовать запись<strong>&nbsp; </strong><strong>y</strong><strong>_</strong><strong>var</strong><strong> . </strong><strong>values</strong><strong>(: , 2).</strong></p>
<p>С помощью скрипта, записанного в контексте, можно получить одно графическое окно с 4-мя системами координат, как на рис. 100</p>
   
<div class="image-container" itemscope itemtype="http://schema.org/ImageObject">
    <picture>
        <source type="image/webp" srcset="/images/articles/modelirovanie-dinamicheskih-sistem-v-matrichnom-vide-xcos/8lzrhi/risunok-99-vyvod-graficheskoy-informacii-pri-pomoschi-konteksta-v-rezultate-modelirovaniya-sistemy.webp"/>
        <img class="image-in-container" src="http://inclab.ru/images/articles/modelirovanie-dinamicheskih-sistem-v-matrichnom-vide-xcos/8lzrhi/risunok-99-vyvod-graficheskoy-informacii-pri-pomoschi-konteksta-v-rezultate-modelirovaniya-sistemy.jpg" itemprop="contentUrl" alt="Рисунок 99.Вывод графической информации при помощи контекста в результате моделирования системы  " title="Рисунок 99.Вывод графической информации при помощи контекста в результате моделирования системы  "/>
    </picture>
    <span class="image-description text-italic" itemprop="description">Рисунок 99.Вывод графической информации при помощи контекста в результате моделирования системы  </span>
</div>     
    
   <p>Контекст, реализующий задание матриц системы, представленной в пространстве состояний и строящий графики следующий:</p>
   <div class="image-container">
<p><b>На этом месте располагается листинг, который не может быть правильно отображен в rss-ленте. Перейдите к оригинальной статье: <a href='http://inclab.ru/articles/modelirovanie-dinamicheskih-sistem-v-matrichnom-vide-xcos'>http://inclab.ru/articles/modelirovanie-dinamicheskih-sistem-v-matrichnom-vide-xcos</a></b></p>
<span class="image-description text-italic">Контекст, реализующий задание матриц системы</span>
</div>  
   
  <p>Оригинальный адрес статьи: <a href='http://inclab.ru/articles/modelirovanie-dinamicheskih-sistem-v-matrichnom-vide-xcos'>http://inclab.ru/articles/modelirovanie-dinamicheskih-sistem-v-matrichnom-vide-xcos</a><p>]]></description>
			<pubDate>Wed, 13 Oct 2021 22:03:59 +0400</pubDate>
		</item>
		<item>
			<title><![CDATA[Управление в модели Хищник-Жертва  Scilab Xcos]]></title>
			<link>http://inclab.ru/articles/matematicheskaya-model-upravleniya-chislennostyu-populyacii-scilab</link>
			<guid>http://inclab.ru/articles/matematicheskaya-model-upravleniya-chislennostyu-populyacii-scilab</guid>
			<description><![CDATA[<img src="http://inclab.ru" />Обратимся к модели Хищник-Жертва, предложенной Лотки-Волтерра и попытаемся ею поуправлять<p>Обратимся к рассмотренной <a href="http://inclab.ru/xcos/ispolzovanie-simvolnyh-parametrov-i-konteksta-v">в статье</a> модели Хищник-Жертва, предложенной Лотки-Волтерра и попытаемся ею поуправлять, то есть введём управление <em>F</em> в систему, так, что она преобразуется к виду:</p>

<p class="text-center">
(1)\begin{cases} \dot{x}=ax-bxy+F(t)x\\  \dot{y}=dxy-cy\\  \end{cases}  
</p>

<p>Итак, судя по виду системы (1), управлять мы будем численностью жертв \( x \)&nbsp;в каждый момент времени \( t \). Функция \( F(t) \)в данном случае может быть рассмотрена как индикатор смертности жертвы, то есть значение \( F(t) \leq 0 \) свидетельствует об убыли особей-жертв, значение \( F(t) = 0 \) означает, что жертвы смогли избежать гибели в момент времени .</p>
<p>Рассмотрим в качестве управляющего закона следующий:</p>

<p class="text-center">  
(2)  \[   
F(t) = 
     \begin{cases}
       sin(\frac{x}{2}), &\quad \text{если} \; x < x_{min}\\
       \text{u = const,} &\quad \text{если} \; x > x_{max} \\ 
     \end{cases}
\]
</p>
  
  
  
  <p>Систему (2) можно интерпретировать следующим образом: <br/>при достаточно высокой популяции жертв, их смертность примерно одинакова; <br/>при малом же количестве добычи, вероятность ею полакомится снижается.</p>
<p>Отметим, что <a href="http://inclab.ru/xcos/ispolzovanie-simvolnyh-parametrov-i-konteksta-v">в системе без управления</a> присутствует состояние равновесия, где количество жертв равно \( \frac{c}{d} \), поэтому значения \( x_{min}, x_{max} \) выберем на \( \delta% \)&nbsp;меньше и больше стационарного значения соответственно.</p>
  <p></p>
<p>Приступим к построению управляемой системы (13) двух популяций.</p>
  
  
 <ol>
<li><p>Для начала, к <a href="http://inclab.ru/xcos/ispolzovanie-simvolnyh-parametrov-i-konteksta-v">блок-схеме исходной модели</a> :</p>
   
<div class="image-container" itemscope itemtype="http://schema.org/ImageObject">
    <picture>
        <source type="image/webp" srcset="/images/articles/matematicheskaya-model-upravleniya-chislennostyu-populyacii-scilab/1o1h1yv/blok-shem-modeli-hischnik-zhertva-xcos.webp"/>
        <img class="image-in-container" src="http://inclab.ru/images/articles/matematicheskaya-model-upravleniya-chislennostyu-populyacii-scilab/1o1h1yv/blok-shem-modeli-hischnik-zhertva-xcos.jpg" itemprop="contentUrl" alt="Блок-схем модели Хищник-Жертва Xcos" title="Блок-схем модели Хищник-Жертва Xcos"/>
    </picture>
    <span class="image-description text-italic" itemprop="description">Блок-схем модели Хищник-Жертва Xcos</span>
</div>     
<p>необходимо добавить: </p>
<ul>
<li><p>заглушку <strong>супер-блока</strong>,</p></li>
<li><p>блок <strong>произведения</strong>,</p></li>
<li><p>блок <strong>TOWS</strong><strong>_</strong><strong>c</strong><strong>.</strong></p></li>
<li><p>Следующим шагом нужно провести соединительные линии и отредактировать первый <strong>сумматор</strong>, как показано на рис. 83.</p></li>
</ul> 
  
<div class="image-container" itemscope itemtype="http://schema.org/ImageObject">
    <picture>
        <source type="image/webp" srcset="/images/articles/matematicheskaya-model-upravleniya-chislennostyu-populyacii-scilab/kf3tbo/risunok-83-vnedrenie-bloka-upravlyayuschego-vozdeystviya-v-blok-shemu-modeli-hischnik-zhertva.webp"/>
        <img class="image-in-container" src="http://inclab.ru/images/articles/matematicheskaya-model-upravleniya-chislennostyu-populyacii-scilab/kf3tbo/risunok-83-vnedrenie-bloka-upravlyayuschego-vozdeystviya-v-blok-shemu-modeli-hischnik-zhertva.jpg" itemprop="contentUrl" alt="Рисунок 83. Внедрение блока управляющего воздействия в блок-схему модели Хищник-Жертва" title="Рисунок 83. Внедрение блока управляющего воздействия в блок-схему модели Хищник-Жертва"/>
    </picture>
    <span class="image-description text-italic" itemprop="description">Рисунок 83. Внедрение блока управляющего воздействия в блок-схему модели Хищник-Жертва</span>
</div>   
   
   </li>

<li><p>Дальнейшие манипуляции подразумевают задание закона управления (2), за который будет отвечать супер-блок. Щёлкните дважды на супер-блоке, чтобы открыть на редактирование его рабочую область.</p></li>
   
<li><p>Согласно построенной блок-схеме с рис. 83, на вход супер-блока подаётся текущая численность жертв \( x \). Это значение необходимо сравнить со значениями \( x_{min}, x_{max} \) и в зависимости от результата подать на выход супер-блока \( sin(\frac{x}{2}) \) или \( u \), соответственно системе (2).</p></li>
<li><p>Сравнение текущего значения численности жертв со значениями \( x_{min}, x_{max} \), инициирующими смену управляющего воздействия, осуществим с помощью блоков индикации смены знака <img class="image-seftcontainer" src="http://inclab.ru/images/articles/matematicheskaya-model-upravleniya-chislennostyu-populyacii-scilab/ecj0i5/upravlenie-v-modeli-hischnik-zhertva-scilab-xcos.jpg" alt="Управление в модели Хищник-Жертва  Scilab Xcos" title="Управление в модели Хищник-Жертва  Scilab Xcos"/>
&nbsp;и <img class="image-seftcontainer" src="http://inclab.ru/images/articles/matematicheskaya-model-upravleniya-chislennostyu-populyacii-scilab/1v8rptr/upravlenie-v-modeli-hischnik-zhertva-scilab-xcos.jpg" alt="Управление в модели Хищник-Жертва  Scilab Xcos" title="Управление в модели Хищник-Жертва  Scilab Xcos"/>
, которые располагаются на палитре &laquo;<strong>Обнаружение перехода через нуль</strong>&raquo; и работают совместно с блоком <img class="image-seftcontainer" src="http://inclab.ru/images/articles/matematicheskaya-model-upravleniya-chislennostyu-populyacii-scilab/524axs/upravlenie-v-modeli-hischnik-zhertva-scilab-xcos.jpg" alt="Управление в модели Хищник-Жертва  Scilab Xcos" title="Управление в модели Хищник-Жертва  Scilab Xcos"/>
&nbsp;с палитры &laquo;<strong>Маршрутизация сигналов</strong>&raquo;, который осуществляет выбор управляющего воздействия.</p></li>
<li><p>Чтобы воспользоваться блоками <strong>NEGTOPOS</strong><strong>_</strong><strong>f</strong> и <strong>POSTONEG</strong><strong>_</strong><strong>f</strong>, необходимо привести неравенства из (2) к виду:</p>
   
   
   <p class="text-center">  
(3)  \[   
     \begin{cases}
        x - x_{min} < 0, &\quad \text{(a)}\\
        x - x_{max} > 0, &\quad \text{(b)}\\ 
     \end{cases}
\]
</p>
 </li>

<li><p>Теперь неравенства (3) представляют из себя разность двух элементов, один из которых динамический \( (x) \), а другой &ndash; константный, заданный в контексте (значения \( x_{min}, x_{max} \)). <br /> Откуда следует, что для сборки управления, нам дополнительно понадобятся:</p>
  
<ul>
<li><p>два константных блока <strong>CONST</strong><strong>_</strong><strong>m</strong></p></li>
<li><p>и два сумматора <strong>BIGSOM</strong><strong>_</strong><strong>f</strong><strong>. </strong></p></li>
</ul>  
  
<p>Предварительное расположение блоков для <em>анализа условий выбора</em> того или иного закона численности жертв, должно выглядеть, примерно, как на рис. 84.</p>  
 <div class="image-container" itemscope itemtype="http://schema.org/ImageObject">
    <picture>
        <source type="image/webp" srcset="/images/articles/matematicheskaya-model-upravleniya-chislennostyu-populyacii-scilab/fny673/risunok-84-promezhutochnyy-nabor-blokov-dlya-proverki-usloviy-2.webp"/>
        <img class="image-in-container" src="http://inclab.ru/images/articles/matematicheskaya-model-upravleniya-chislennostyu-populyacii-scilab/fny673/risunok-84-promezhutochnyy-nabor-blokov-dlya-proverki-usloviy-2.jpg" itemprop="contentUrl" alt="Рисунок 84. Промежуточный набор блоков для проверки условий (2)" title="Рисунок 84. Промежуточный набор блоков для проверки условий (2)"/>
    </picture>
    <span class="image-description text-italic" itemprop="description">Рисунок 84. Промежуточный набор блоков для проверки условий (2)</span>
</div>   

  </li>

<li><p>Рассмотрим построение блок-схемы неравенства \( x-x_{min} < 0 \) (3а). <br/>Данное неравенство выполняется, когда значение левой части становится меньше нуля, то есть переходит на <span style="text-decoration: line-through;">тёмную</span> отрицательную сторону оси координат, будучи до это положительным, тем самым осуществляя движения от &laquo;+&raquo; к &laquo;-&raquo;. <br /> Данному событию соответствует блок, обнаруживающий переход чрез нуль <strong>POSTONEG</strong><strong>_</strong><strong>f</strong><strong>. </strong>Соответствующая реализация первого неравенства на блок-схеме представлена на рис. 85.</p>
 <div class="image-container" itemscope itemtype="http://schema.org/ImageObject">
    <picture>
        <source type="image/webp" srcset="/images/articles/matematicheskaya-model-upravleniya-chislennostyu-populyacii-scilab/hm7gwd/risunok-85-realizaciya-usloviya-neravenstva-3a.webp"/>
        <img class="image-in-container" src="http://inclab.ru/images/articles/matematicheskaya-model-upravleniya-chislennostyu-populyacii-scilab/hm7gwd/risunok-85-realizaciya-usloviya-neravenstva-3a.jpg" itemprop="contentUrl" alt="Рисунок 85. Реализация условия неравенства  (3а)." title="Рисунок 85. Реализация условия неравенства  (3а)."/>
    </picture>
    <span class="image-description text-italic" itemprop="description">Рисунок 85. Реализация условия неравенства  (3а).</span>
</div>   
  
  <p>Обратите внимание, что в константном блоке используется значение \( x_{min} < 0 \), которое предварительно задано в контексте и равно \( (1-\delta)\frac{c}{d} \). </p>
    

<li><p>Перейдём к неравенству \( x-x_{max} > 0 \)&nbsp;(3b). <br/>Это неравенство выполняется, когда выражение слева превращается из отрицательного в положительное, то есть осуществляется переход через нуль слева направо, за что отвечает блок <strong>NEGTOPOS</strong><strong>_</strong><strong>f</strong>. <br /> Реализация данного неравенства полностью повторяет установку соединительных линий предыдущего случая и требует задания значения \( (1+\delta)\frac{c}{d} \) &nbsp;в контексте. Блок схема неравенства (3b) представлена на рис. 86.</p>
    
 <div class="image-container" itemscope itemtype="http://schema.org/ImageObject">
    <picture>
        <source type="image/webp" srcset="/images/articles/matematicheskaya-model-upravleniya-chislennostyu-populyacii-scilab/1sklesm/risunok-86-realizaciya-usloviya-neravenstva-3b.webp"/>
        <img class="image-in-container" src="http://inclab.ru/images/articles/matematicheskaya-model-upravleniya-chislennostyu-populyacii-scilab/1sklesm/risunok-86-realizaciya-usloviya-neravenstva-3b.jpg" itemprop="contentUrl" alt="Рисунок 86. Реализация условия неравенства  (3б)." title="Рисунок 86. Реализация условия неравенства  (3б)."/>
    </picture>
    <span class="image-description text-italic" itemprop="description">Рисунок 86. Реализация условия неравенства  (3б).</span>
</div>   
    </li>

<li><p>Далее перейдём к реализации выбора нужного закона управления в зависимости от того, какое неравенство из (3) выполняется. Данный выбор осуществляет блок <strong>SELECT</strong><strong>_</strong><strong>m</strong><strong>, </strong>имеющий два управляющих и два регулярных входа<strong>. <br /> </strong>На <em>управляющие</em> входы селектора <strong>SELECT</strong><strong>_</strong><strong>m</strong> необходимо подать соответствующие <em>красные</em> выходы блоков <strong>POSTONEG</strong><strong>_</strong><strong>f</strong> и <strong>NEGTOPOS</strong><strong>_</strong><strong>f</strong>. <em>Заметьте, что здесь <strong>важен порядок</strong>, так как управляющим входам селектора соответствуют его же регулярные входы. </em>Поэтому выход <em>первого</em> неравенства, реализованного блоком <strong>POSTONEG</strong><strong>_</strong><strong>f</strong><strong>,</strong> &nbsp;нужно соединить с <em>левым</em> управляющим входом селектора, а выход блока <strong>NEGTOPOS</strong><strong>_</strong><strong>f</strong><strong> &ndash; </strong>соединить с правым красным входом блока <strong>SELECT</strong><strong>_</strong><strong>m</strong><strong>.</strong></p></li>
<li><p>До полного сбора блока управления осталось только указать функции управления из системы (2), которые будут использованы при выполнении каждого из условий, поданных на управляющие входы блока <strong>SELECT</strong><strong>_</strong><strong>m</strong><strong>. <br /> </strong>Для задания управляющих воздействий проделаем следующие действия:</p>

<ul>
<li><p>на первый регулярный вход селектора подадим функцию \( sin(\frac{x}{2}) \) что соответствует выполнению первого условия (3 а),</p> </li>
<li><p>а на второй черный вход блока <strong>SELECT</strong><strong>_</strong><strong>m</strong> - константу&nbsp; \( u \), заданную в контексте.</p> </li>
</ul>
<p>Итоговая блок-схема для выбора управляющего воздействия <br /> представлена на рис. 87.</p> 
  
 <div class="image-container" itemscope itemtype="http://schema.org/ImageObject">
    <picture>
        <source type="image/webp" srcset="/images/articles/matematicheskaya-model-upravleniya-chislennostyu-populyacii-scilab/1rq0dr7/risunok-87-blok-shema-vybora-zakona-upravleniya-2-realizovannaya-otdelnym-super-blokom.webp"/>
        <img class="image-in-container" src="http://inclab.ru/images/articles/matematicheskaya-model-upravleniya-chislennostyu-populyacii-scilab/1rq0dr7/risunok-87-blok-shema-vybora-zakona-upravleniya-2-realizovannaya-otdelnym-super-blokom.jpg" itemprop="contentUrl" alt="Рисунок 87. Блок-схема выбора закона управления (2), реализованная отдельным супер-блоком" title="Рисунок 87. Блок-схема выбора закона управления (2), реализованная отдельным супер-блоком"/>
    </picture>
    <span class="image-description text-italic" itemprop="description">Рисунок 87. Блок-схема выбора закона управления (2), реализованная отдельным супер-блоком</span>
</div>    
  
 <p>Ниже приведён скрипт, записанный к контексте рабочей области исходной блок-схемы.</p> 
   
   <div class="image-container">
<p><b>На этом месте располагается листинг, который не может быть правильно отображен в rss-ленте. Перейдите к оригинальной статье: <a href='http://inclab.ru/articles/matematicheskaya-model-upravleniya-chislennostyu-populyacii-scilab'>http://inclab.ru/articles/matematicheskaya-model-upravleniya-chislennostyu-populyacii-scilab</a></b></p>
<span class="image-description text-italic">Задание контекста в Xcos.</span>
</div>	 
  
  
</li></ol>  
  
 <p>Запустите моделирование на 15сек.. с начальными условиями \( x_0=5, y_0=2 \)  соответствующих блоков интеграторов. Результат моделирования представлен на рис. 88. </p> 
  
  <div class="image-container" itemscope itemtype="http://schema.org/ImageObject">
    <picture>
        <source type="image/webp" srcset="/images/articles/matematicheskaya-model-upravleniya-chislennostyu-populyacii-scilab/1y1yzbm/risunok-88-model-hischnik-zhertva-s-zadannym-zakonom-upravleniya-verhnyaya-sistema-koordinat-koleban.webp"/>
        <img class="image-in-container" src="http://inclab.ru/images/articles/matematicheskaya-model-upravleniya-chislennostyu-populyacii-scilab/1y1yzbm/risunok-88-model-hischnik-zhertva-s-zadannym-zakonom-upravleniya-verhnyaya-sistema-koordinat-koleban.jpg" itemprop="contentUrl" alt="Рисунок 88. Модель Хищник-Жертва с заданным законом управления. Верхняя система координат  колебания численности популяций, 
нижняя  закон управления   F(t)" title="Рисунок 88. Модель Хищник-Жертва с заданным законом управления. Верхняя система координат  колебания численности популяций, 
нижняя  закон управления   F(t)"/>
    </picture>
    <span class="image-description text-italic" itemprop="description">Рисунок 88. Модель Хищник-Жертва с заданным законом управления. Верхняя система координат  колебания численности популяций, 
нижняя  закон управления   F(t)</span>
</div>    
  
  
<p>Обратите внимание, что популяция жертв (prey) и хищников (predator) стремится к устойчивым положениям равновесия \( x^* = \frac{c}{d}, y^* = \frac{a}{b} \) соответственно, а отклонения от точек  стационарности не превышают заданного значения  \( \delta \).</p> 
  
  
<p>В качестве дополнительного задания и для более подробного изучения динамики системы, читателю предлагается вывести фазовый портрет рассматриваемой системы Хищни-Жертва, убедившись, что траектория сходится к точке устойчивости  \( (x^*, y^*) \), а стартует из начальной точки  \( (x_0, y_0) \); поменять коэффициенты \( a,b,c,d \)  системы в контексте и задать различную степень отклонения \( \delta \), проследив, как меняется взаимодействие популяций.</p>  
  <p>Оригинальный адрес статьи: <a href='http://inclab.ru/articles/matematicheskaya-model-upravleniya-chislennostyu-populyacii-scilab'>http://inclab.ru/articles/matematicheskaya-model-upravleniya-chislennostyu-populyacii-scilab</a><p>]]></description>
			<pubDate>Fri, 04 Jun 2021 15:12:42 +0400</pubDate>
		</item>
		<item>
			<title><![CDATA[Использование супер-блоков в Scilab Xcos]]></title>
			<link>http://inclab.ru/articles/ispolzovanie-super-blokov-v-scilab-xcos</link>
			<guid>http://inclab.ru/articles/ispolzovanie-super-blokov-v-scilab-xcos</guid>
			<description><![CDATA[<img src="http://inclab.ru" />Рассмотрим, как можно модернизировать созданную блок-схему для осуществления поставленной задачи.<p>В <a href="http://inclab.ru/xcos/zamknutaya-sistema-upravleniya-scilab-xcos">предыдущем материале</a> мы рассмотрели пример реализации простейшего управляющего элемента в Xcos. Заметим, что частота переключения режимов двухфазного термоконтроллера высока (около 10 сек.), что на практике оказывало бы дополнительную нагрузку на исполнительные механизмы устройства и приводило бы к его быстрой поломке. Поэтому более рациональным было бы указывать не фиксированное значение температуры, а диапазон температур, характерных для комфортного пребывания в помещении.</p>
<p>Рассмотрим, как можно модернизировать созданную блок-схему для осуществления поставленной задачи.</p>
<p>Прежде всего, для большей наглядности созданной схемы, прибегнем к помощи <em>супер-блоков. </em>Чтобы объединить несколько Xcos блоков в один супер-блок нужно:</p>

<ul>
<li><p>выделить нужные блоки с их соединительными линиями (см рис.75 а);</p>
<div class="image-container" itemscope itemtype="http://schema.org/ImageObject">
    <picture>
        <source type="image/webp" srcset="/images/articles/ispolzovanie-super-blokov-v-scilab-xcos/1u2otpp/ris-75a-preobrazovanie-blokov-v-super-blok-vydelenie-obedinyaemyh-blokov.webp"/>
        <img class="image-in-container" src="http://inclab.ru/images/articles/ispolzovanie-super-blokov-v-scilab-xcos/1u2otpp/ris-75a-preobrazovanie-blokov-v-super-blok-vydelenie-obedinyaemyh-blokov.jpg" itemprop="contentUrl" alt="Рис. 75a. Преобразование блоков в супер-блок/ выделение объединяемых блоков" title="Рис. 75a. Преобразование блоков в супер-блок/ выделение объединяемых блоков"/>
    </picture>
    <span class="image-description text-italic" itemprop="description">Рис. 75a. Преобразование блоков в супер-блок/ выделение объединяемых блоков</span>
</div>   
  </li>
<li><p>кликнуть правой кнопкой мыши по одному из блоков;</p></li>
<li><p>в выпадающем меню выбрать пункт &laquo;<strong>Selection</strong> <strong>to</strong> <strong>superblock</strong>&raquo;.</p></li>
</ul>
<p>После чего на месте группы блоков появится новый блок (см. рис..75б ).</p>
<div class="image-container" itemscope itemtype="http://schema.org/ImageObject">
    <picture>
        <source type="image/webp" srcset="/images/articles/ispolzovanie-super-blokov-v-scilab-xcos/c5icr8/ris-75b-preobrazovanie-blokov-v-super-blok-rezultat-obedineniya-neskolkih-blokov.webp"/>
        <img class="image-in-container" src="http://inclab.ru/images/articles/ispolzovanie-super-blokov-v-scilab-xcos/c5icr8/ris-75b-preobrazovanie-blokov-v-super-blok-rezultat-obedineniya-neskolkih-blokov.jpg" itemprop="contentUrl" alt="Рис. 75б. Преобразование блоков в супер-блок/ результат объединения нескольких блоков" title="Рис. 75б. Преобразование блоков в супер-блок/ результат объединения нескольких блоков"/>
    </picture>
    <span class="image-description text-italic" itemprop="description">Рис. 75б. Преобразование блоков в супер-блок/ результат объединения нескольких блоков</span>
</div> 

<p>То же самое необходимо проделать для блока управления, предварительно удалив лишние соединительные линии (см. рис. 76 а-б)</p>

<div class="image-container" itemscope itemtype="http://schema.org/ImageObject">
    <picture>
        <source type="image/webp" srcset="/images/articles/ispolzovanie-super-blokov-v-scilab-xcos/15nq7og/ris-75a-vydelenie-obedinyaemyh-blokov.webp"/>
        <img class="image-in-container" src="http://inclab.ru/images/articles/ispolzovanie-super-blokov-v-scilab-xcos/15nq7og/ris-75a-vydelenie-obedinyaemyh-blokov.jpg" itemprop="contentUrl" alt="Рис. 75а. выделение объединяемых блоков" title="Рис. 75а. выделение объединяемых блоков"/>
    </picture>
    <span class="image-description text-italic" itemprop="description">Рис. 75а. выделение объединяемых блоков</span>
</div> 
<div class="image-container" itemscope itemtype="http://schema.org/ImageObject">
    <picture>
        <source type="image/webp" srcset="/images/articles/ispolzovanie-super-blokov-v-scilab-xcos/72kw67/ris-75b-rezultat-obedineniya-neskolkih-blokov.webp"/>
        <img class="image-in-container" src="http://inclab.ru/images/articles/ispolzovanie-super-blokov-v-scilab-xcos/72kw67/ris-75b-rezultat-obedineniya-neskolkih-blokov.jpg" itemprop="contentUrl" alt="Рис. 75б. результат объединения нескольких блоков" title="Рис. 75б. результат объединения нескольких блоков"/>
    </picture>
    <span class="image-description text-italic" itemprop="description">Рис. 75б. результат объединения нескольких блоков</span>
</div> 

<p>В результате исходная схема примет удобочитаемый вид, как показано на рис. 77. &nbsp;</p>
<div class="image-container" itemscope itemtype="http://schema.org/ImageObject">
    <picture>
        <source type="image/webp" srcset="/images/articles/ispolzovanie-super-blokov-v-scilab-xcos/3pno74/risunok-77-blok-shema-zamknutoy-sistemy-upravleniya-s-ispolzovanie-super-blokov.webp"/>
        <img class="image-in-container" src="http://inclab.ru/images/articles/ispolzovanie-super-blokov-v-scilab-xcos/3pno74/risunok-77-blok-shema-zamknutoy-sistemy-upravleniya-s-ispolzovanie-super-blokov.jpg" itemprop="contentUrl" alt="Рисунок 77. Блок-схема замкнутой системы управления с использование супер-блоков" title="Рисунок 77. Блок-схема замкнутой системы управления с использование супер-блоков"/>
    </picture>
    <span class="image-description text-italic" itemprop="description">Рисунок 77. Блок-схема замкнутой системы управления с использование супер-блоков</span>
</div> 

<p>После проведения всех манипуляций настоятельно рекомендуется запустить моделирование, дабы убедиться, что ничего не сломалось. Как правило, чего-то всегда ломается. Но процесс отладки полезен потому, что позволяет лучше разобраться в происходящем.</p>
<p>Итак, чтобы найти ошибку, необходимо проанализировать, где она могла бы возникнуть. Вопросы с настройкой осциллографа мы разбирать не будем, так как это тема давно минувших <span style="text-decoration: line-through;">дней</span> параграфов. Обратимся к ново-созданным супер-блокам. Для того, чтобы просмотреть содержимое супер-блока, нужно дважды по нему кликнуть левой кнопкой мыши, после чего, в новом окне откроется блок-схема, входящая в состав данного супер-блока. Обратимся к содержимому зелёного блока (см. рис. 78).</p>

<div class="image-container" itemscope itemtype="http://schema.org/ImageObject">
    <picture>
        <source type="image/webp" srcset="/images/articles/ispolzovanie-super-blokov-v-scilab-xcos/13v2qnc/risunok-78-oshibka-voznikayuschaya-pri-sozdanii-super-blokov.webp"/>
        <img class="image-in-container" src="http://inclab.ru/images/articles/ispolzovanie-super-blokov-v-scilab-xcos/13v2qnc/risunok-78-oshibka-voznikayuschaya-pri-sozdanii-super-blokov.jpg" itemprop="contentUrl" alt="Рисунок 78. Ошибка, возникающая при создании супер-блоков" title="Рисунок 78. Ошибка, возникающая при создании супер-блоков"/>
    </picture>
    <span class="image-description text-italic" itemprop="description">Рисунок 78. Ошибка, возникающая при создании супер-блоков</span>
</div> 

<p>Вот оно! Подозрительный треугольник с восклицательным знаком, сигнализирующий о наличии ошибки. Дело в том, что в данных блоках используются переменные, указанные в контексте исходной рабочей области. Контекст же открытого окна, на проверку, оказывается пустым. Следовательно, для устранения данной ошибки, необходимо перенести используемые переменные из контекста исходного окна в окно редактирования супер-блока.</p>
<p><strong>Важно!</strong> Иногда устранить ошибки, при создании супер-блоков из имеющихся в схеме, не удаётся &ndash; это баг бесплатного программного обеспечения. В этом случае построение схемы нужно начать в новой рабочей области именно с создания супер-блоков <img class="image-seftcontainer" src="http://inclab.ru/images/articles/ispolzovanie-super-blokov-v-scilab-xcos/1tch30o/ispolzovanie-super-blokov-v-scilab-xcos.jpg" alt="Использование супер-блоков в Scilab Xcos" title="Использование супер-блоков в Scilab Xcos"/>
, которые можно найти на палитре &laquo;<strong>Пользовательские функции</strong>&raquo;.</p>
<p>После краткого знакомства с пользовательскими супер-блоками, вернёмся к задаче модификации контроллера, регулирующего температуру в заданных пределах. Для моделирования такого контроллера потребуется блок <img class="image-seftcontainer" src="http://inclab.ru/images/articles/ispolzovanie-super-blokov-v-scilab-xcos/1ezlflq/ispolzovanie-super-blokov-v-scilab-xcos.jpg" alt="Использование супер-блоков в Scilab Xcos" title="Использование супер-блоков в Scilab Xcos"/>
, который располагается на палитре &laquo;<strong>Системы с разрывами</strong>&raquo;. Данный блок имеет один регулярный вход и один регулярный выход и осуществляет переключение между двумя константами. Блок реле остаётся включенным до тех пор, пока на вход не передано пороговое значение, после чего реле выключается и принимает второе значение до тех пор, пока вновь не будет пройдено пороговое значение.</p>
<p>Из описания блока <strong>HYSTHERESIS</strong> следует, что целый блок, реализующий включение и отключение термокнтоллера, можно заменить одним блоком реле, как показано на рис. 79.</p>

<div class="image-container" itemscope itemtype="http://schema.org/ImageObject">
    <picture>
        <source type="image/webp" srcset="/images/articles/ispolzovanie-super-blokov-v-scilab-xcos/1n2fpq3/risunok-79-ispolzovanie-bloka-rele-v-kachestve-upravlyayuschego-ustroystva.webp"/>
        <img class="image-in-container" src="http://inclab.ru/images/articles/ispolzovanie-super-blokov-v-scilab-xcos/1n2fpq3/risunok-79-ispolzovanie-bloka-rele-v-kachestve-upravlyayuschego-ustroystva.jpg" itemprop="contentUrl" alt="Рисунок 79. Использование блока реле в качестве управляющего устройства" title="Рисунок 79. Использование блока реле в качестве управляющего устройства"/>
    </picture>
    <span class="image-description text-italic" itemprop="description">Рисунок 79. Использование блока реле в качестве управляющего устройства</span>
</div> 

<p>Внутренние параметры блока <strong>HYSTHERESIS</strong> представлены на рис. 80</p>
<div class="image-container" itemscope itemtype="http://schema.org/ImageObject">
    <picture>
        <source type="image/webp" srcset="/images/articles/ispolzovanie-super-blokov-v-scilab-xcos/oge82n/risunok-80-vnutrennie-parametry-bloka.webp"/>
        <img class="image-in-container" src="http://inclab.ru/images/articles/ispolzovanie-super-blokov-v-scilab-xcos/oge82n/risunok-80-vnutrennie-parametry-bloka.jpg" itemprop="contentUrl" alt="Рисунок 80. Внутренние параметры блока" title="Рисунок 80. Внутренние параметры блока"/>
    </picture>
    <span class="image-description text-italic" itemprop="description">Рисунок 80. Внутренние параметры блока</span>
</div> 



<p>Согласно заданным параметрам, блок <strong>HYSTHERESIS</strong> будет работать следующим образом:<br/> по умолчанию блок считается включенным и остаётся таковым до тех пор, пока значение, подаваемое на его вход не превысит <strong>delta</strong>, при этом на выход блока реле подается значение <strong>output</strong> <strong>when</strong> <strong>on</strong><strong> = 1. </strong><br/>Как только значение, подаваемое на вход блока реле превышает <strong>delta</strong>, блок выключается и подаёт на выход значение <strong>output</strong> <strong>when</strong> <strong>off</strong><strong> = 0 </strong>до тех пор, пока входное значение не упадёт ниже<strong> &ndash;</strong><strong>delta</strong>. Далее процесс повторяется.</p>
<p>Иначе на этот процесс можно взглянуть, обратившись к неравенству, которое решалось <a href="http://inclab.ru/xcos/zamknutaya-sistema-upravleniya-scilab-xcos">в предыдущем случае</a>. Если прежде разность температур сравнивалась с нулём, то сейчас ошибка должна попадать в диапазон значений, иными словами, с помощью блока <strong>HYSTHERESIS</strong> в блок-схеме (см. рис. 81) решается неравенство .</p>

  <p class="text-center">\(  |Tfix-H(s)|<\delta \) (*)</p>

<div class="image-container" itemscope itemtype="http://schema.org/ImageObject">
    <picture>
        <source type="image/webp" srcset="/images/articles/ispolzovanie-super-blokov-v-scilab-xcos/gnmmy5/risunok-81-blok-shema-s-upravleniem-releynogo-tipa.webp"/>
        <img class="image-in-container" src="http://inclab.ru/images/articles/ispolzovanie-super-blokov-v-scilab-xcos/gnmmy5/risunok-81-blok-shema-s-upravleniem-releynogo-tipa.jpg" itemprop="contentUrl" alt="Рисунок 81. Блок-схема с управлением релейного типа" title="Рисунок 81. Блок-схема с управлением релейного типа"/>
    </picture>
    <span class="image-description text-italic" itemprop="description">Рисунок 81. Блок-схема с управлением релейного типа</span>
</div> 
    
 <p>Запустите моделирование на 100сек. со следующими параметрами \(  delta=3; Tfix=22; K=50; T=30; \tau=5 \), указанными в контексте. Результат моделирования представлен на рис.82.</p>   
<div class="image-container" itemscope itemtype="http://schema.org/ImageObject">
    <picture>
        <source type="image/webp" srcset="/images/articles/ispolzovanie-super-blokov-v-scilab-xcos/1js0d3q/risunok-82-grafik-regulyacii-temperatura-v-predelah-ot-19-do-25-gr-c.webp"/>
        <img class="image-in-container" src="http://inclab.ru/images/articles/ispolzovanie-super-blokov-v-scilab-xcos/1js0d3q/risunok-82-grafik-regulyacii-temperatura-v-predelah-ot-19-do-25-gr-c.jpg" itemprop="contentUrl" alt="Рисунок 82. График регуляции температура в пределах от 19 до 25 гр.Ц." title="Рисунок 82. График регуляции температура в пределах от 19 до 25 гр.Ц."/>
    </picture>
    <span class="image-description text-italic" itemprop="description">Рисунок 82. График регуляции температура в пределах от 19 до 25 гр.Ц.</span>
</div> 
      
    
<p>Судя по графикам, можно сделать следующий вывод: не смотря на то, что частота переключения контроллера сократилась, увеличился разброс значений, выходящих за рамки допустимого диапазона. На практике управляющий элемент такого типа используется в качестве компромиссного решения между частотой смены состояний переключателя и значениями перерегулирования.</p><p>Оригинальный адрес статьи: <a href='http://inclab.ru/articles/ispolzovanie-super-blokov-v-scilab-xcos'>http://inclab.ru/articles/ispolzovanie-super-blokov-v-scilab-xcos</a><p>]]></description>
			<pubDate>Fri, 04 Jun 2021 15:04:37 +0400</pubDate>
		</item>
		<item>
			<title><![CDATA[Замкнутая система управления Scilab Xcos]]></title>
			<link>http://inclab.ru/articles/zamknutaya-sistema-upravleniya-scilab-xcos</link>
			<guid>http://inclab.ru/articles/zamknutaya-sistema-upravleniya-scilab-xcos</guid>
			<description><![CDATA[<img src="http://inclab.ru" />простой вид контроллера  индикатор включения\выключения<p>Системы управления с обратной связью, пожалуй, самые распространённые из динамических систем, моделирование которых требуется в совершенно различных областях науки и техники: от управления манипуляторами в тяжёлой промышленности, до контроля за ростом бактерий&nbsp; в био-лаборатории.</p>
<p>Управление динамическими системами, описывающими процессы, протекающие в реальном времени, происходит при помощи управляющих устройств -&nbsp; контроллеров (или регуляторов), обеспечивающих различные законы управления. В зависимости от режима управления, выделяют оптимальные, ПИД-, нейро-нечеткие и другие регуляторы.</p>
<p>В данном материале мы рассмотрим самый простой вид контроллера &ndash; индикатор включения\выключения, который ещё носит название двухступенчатого контроллера, так как не имеет промежуточных состояний, то есть принимает всего два значения: включен или выключен.</p>
<p>Итак, представим термоконтроллер, который отслеживает температуру и срабатывает на разницу температур в помещении. В терминах управляемых систем, работа данного устройства происходит следующим образом: в определённые моменты времени на вход контроллера подаётся разница температур между текущим и необходимым к поддержанию значением, называемая ошибкой, а на выход контроллера поступает сигнал срабатывания. Управляемой переменной в данном случае является температура, которая дополнительно измеряется датчиком, и информация передаётся обратно в термоконтролер. Разница между заданным значением температуры и замеренной производительностью отопительных приборов возникает из-за неизбежных помех &ndash; утечек тепла, которые влияют на общую температуру помещения. Схема данной замкнутой системы управления представлена на рис.66.</p>

<div class="image-container" itemscope itemtype="http://schema.org/ImageObject">
    <picture>
        <source type="image/webp" srcset="/images/articles/zamknutaya-sistema-upravleniya-scilab-xcos/1ql8e1/risunok-66-sistema-upravleniya-s-termodatchikom.webp"/>
        <img class="image-in-container" src="http://inclab.ru/images/articles/zamknutaya-sistema-upravleniya-scilab-xcos/1ql8e1/risunok-66-sistema-upravleniya-s-termodatchikom.jpg" itemprop="contentUrl" alt="Рисунок 66. Система управления с термодатчиком" title="Рисунок 66. Система управления с термодатчиком"/>
    </picture>
    <span class="image-description text-italic" itemprop="description">Рисунок 66. Система управления с термодатчиком</span>
</div> 

<p>Стоит отметить, что большинство управляемых систем с обратной связью обладает некоторой <em>инертностью</em>, то есть система управления не может мгновенно реагировать на внешнее возмущение и требуется некоторое время, пока на выход управляющего объекта будет подано необходимое значение, оказывающее воздействие на значение, снимаемое с выхода объекта управления.</p>
<p>В рассматриваемом примере такое явление возникает, например, при открытии форточки в комнате. Для того, чтобы контроллер включил систему отопления на обогрев, потребуется некоторое время, пока температура в помещении не упадёт до критической отметки. Такого рода <em>задержка</em> в работе управляющего устройства, с одной стороны позволяет системе не реагировать на краткосрочные возмущения, но, с другой стороны, вносит ограничения на быстродействие термоконтроллера.</p>
<p>Другой важной характеристикой управляемой динамической системы является её <em>ёмкость</em>. Ёмкость системы можно рассматривать, как сопротивление внешним изменениям. Причём, чем выше ёмкость системы, тем больше времени потребуется, чтобы вносимый вклад управляющего устройства подействовал на объект управления.</p>
<p>Адаптировать понятие ёмкости на рассматриваемый случай можно как теплоёмкость. Например, чтобы прогреть остывшее за время отсутствия хозяев, помещение, потребуется время не только на нагрев воздуха, но и прогрев стен и пола.</p>
<p>Описанная система управления с контроллером и объектом управления, обладающая обозначенными особенностями, схематически изображена на рис. 67.</p>

<div class="image-container" itemscope itemtype="http://schema.org/ImageObject">
    <picture>
        <source type="image/webp" srcset="/images/articles/zamknutaya-sistema-upravleniya-scilab-xcos/1yvi7ca/risunok-67-sistema-upravleniya-temperaturoy-v-pomeschenii.webp"/>
        <img class="image-in-container" src="http://inclab.ru/images/articles/zamknutaya-sistema-upravleniya-scilab-xcos/1yvi7ca/risunok-67-sistema-upravleniya-temperaturoy-v-pomeschenii.jpg" itemprop="contentUrl" alt="Рисунок 67. Система управления температурой в помещении" title="Рисунок 67. Система управления температурой в помещении"/>
    </picture>
    <span class="image-description text-italic" itemprop="description">Рисунок 67. Система управления температурой в помещении</span>
</div> 

<p>Процесс управления температурой в помещении рассматривается, как дифференциально уравнение первого порядка с запаздыванием, передаточная функция которого имеет вид:</p>

<p class="text-center">
\(  H(s)=\frac{K}{T\cdot s+1}e^{-\tau s} \)
</p>

<p>где \( K \) - коэффициент усиления,  \(\tau \) - ёмкость системы,  \( s \)- задержка реагирования системы.</p>


<h2>Построение блок-схемы системы управления в Xcos</h2>

<p>Начнём собирать схему с объекта управления.</p>
<ol>
<li><p>Отапливаемое помещение в нашем случае, можно рассматривать как передаточную функцию <img class="image-seftcontainer" src="http://inclab.ru/images/articles/zamknutaya-sistema-upravleniya-scilab-xcos/6920ry/zamknutaya-sistema-upravleniya-scilab-xcos.jpg" alt="Замкнутая система управления Scilab Xcos" title="Замкнутая система управления Scilab Xcos"/>
 с палитры &laquo;<strong>Системы с непрерывным временем</strong>&raquo; с блоком запаздывания <strong>TIME</strong><strong>_</strong><strong>DELAY</strong> , располагающимся на той же палитре. Добавьте данные блоки на рабочую область.</p></li>
<li><p>Далее в контексте задайте значения переменных \( K=18, T=24, \tau=5, Tfix=12 \), чтобы их можно было использовать в дальнейшем.</p></li>
<li><p>Во внутренних параметрах блока передаточной функции <strong>CLR</strong> укажите значения <strong>Numerator</strong><strong> (числитель) = \( K \)</strong> и <strong>Denominator</strong><strong> (знаменатель) = \( T\cdot s+1 \)</strong> &nbsp;согласно формуле (12).</p></li>
<li><p>Во внутренних параметрах блока задержки <strong>TIME</strong><strong>_</strong><strong>DELAY</strong> укажите значение<strong> <br /> </strong><strong>Delay</strong><strong> = \( \tau \)</strong> .</p></li>
<li><p>Соедините выход блока <strong>CLR</strong> со входом блока <strong>TIME</strong><strong>_</strong><strong>DELAY</strong>. В итоге должна получиться схема, изображённая на рис.68</p>
  
 <div class="image-container" itemscope itemtype="http://schema.org/ImageObject">
    <picture>
        <source type="image/webp" srcset="/images/articles/zamknutaya-sistema-upravleniya-scilab-xcos/1ccay6b/risunok-68-realizaciya-obekta-upravleniya-pri-pomoschi-xcos-blokov.webp"/>
        <img class="image-in-container" src="http://inclab.ru/images/articles/zamknutaya-sistema-upravleniya-scilab-xcos/1ccay6b/risunok-68-realizaciya-obekta-upravleniya-pri-pomoschi-xcos-blokov.jpg" itemprop="contentUrl" alt="Рисунок 68. Реализация объекта управления при помощи Xcos блоков" title="Рисунок 68. Реализация объекта управления при помощи Xcos блоков"/>
    </picture>
    <span class="image-description text-italic" itemprop="description">Рисунок 68. Реализация объекта управления при помощи Xcos блоков</span>
</div> 
</li>

<li><p>Сбор схемы термоконтроллера начнём с решения неравенства</p> 
  <p class="text-center">\(  Tfix-H(s)>0 \) (*)</p>
  <p> Левая часть данного неравенства реализуется сумматором <strong>BIGSOM</strong><strong>_</strong><strong>f</strong>, вектор знаков портов которого имеет вид <strong>[1;-1]. </strong>Положительный порт сумматора нужно соединить с константным блоком, в котором установлено значение желаемой температуры . <br /> Далее, на порт сумматора с отрицательным множителем, нужно подать фиксируемую датчиком температуру, то есть, - значение с выхода блока <strong>TIME</strong><strong>_</strong><strong>DELAY</strong><strong>.</strong>&nbsp; Результат представлен на рис. 69.</p>
  <div class="image-container" itemscope itemtype="http://schema.org/ImageObject">
    <picture>
        <source type="image/webp" srcset="/images/articles/zamknutaya-sistema-upravleniya-scilab-xcos/q0ao9z/risunok-69-realizaciya-vychisleniya-oshibki-tfix-h-s.webp"/>
        <img class="image-in-container" src="http://inclab.ru/images/articles/zamknutaya-sistema-upravleniya-scilab-xcos/q0ao9z/risunok-69-realizaciya-vychisleniya-oshibki-tfix-h-s.jpg" itemprop="contentUrl" alt="Рисунок 69. Реализация вычисления ошибки Tfix-H(s) " title="Рисунок 69. Реализация вычисления ошибки Tfix-H(s) "/>
    </picture>
    <span class="image-description text-italic" itemprop="description">Рисунок 69. Реализация вычисления ошибки Tfix-H(s) </span>
</div> 

  </li>
  
<li><p>Знак ошибки, то есть сравнение с нулём выхода блока <strong>BIGSOM</strong><strong>_</strong><strong>f</strong>, будем определять с помощью блока <img class="image-seftcontainer" src="http://inclab.ru/images/articles/zamknutaya-sistema-upravleniya-scilab-xcos/ynwq45/zamknutaya-sistema-upravleniya-scilab-xcos.jpg" alt="Замкнутая система управления Scilab Xcos" title="Замкнутая система управления Scilab Xcos"/>
, который можно найти <strong>на палитре &laquo;Математические операции&raquo;. </strong></p></li>
<li><p>Во внутренних параметрах блока <strong>RELATIONALOP</strong> для параметра <strong>Operator</strong> необходимо указать значение <strong>4</strong>, что соответствует знаку &laquo;больше&raquo;, а значение <strong>Use</strong> <strong>zero</strong> <strong>crossing</strong> =1 (переход через нуль).</p></li>
<li><p>Далее на входы <strong>RELATIONALOP</strong> нужно подать сравниваемые выражения: это выход блока <strong>BIGSOM</strong><strong>_</strong><strong>f</strong> и константный блок со значением 0, как показано <br /> на рис. 70.</p>
 <div class="image-container" itemscope itemtype="http://schema.org/ImageObject">
    <picture>
        <source type="image/webp" srcset="/images/articles/zamknutaya-sistema-upravleniya-scilab-xcos/1a7xans/risunok-70-formirovanie-neravenstva.webp"/>
        <img class="image-in-container" src="http://inclab.ru/images/articles/zamknutaya-sistema-upravleniya-scilab-xcos/1a7xans/risunok-70-formirovanie-neravenstva.jpg" itemprop="contentUrl" alt="Рисунок 70.  Формирование неравенства  (*)" title="Рисунок 70.  Формирование неравенства  (*)"/>
    </picture>
    <span class="image-description text-italic" itemprop="description">Рисунок 70.  Формирование неравенства  (*)</span>
</div> 
 </li> 

<li><p><em>На выход блока сравнения</em> будет подано значение &laquo;1&raquo;, если условие сформированного неравенства выполняется, и &laquo;0&raquo;, если ошибка окажется отрицательной.</p></li>


<li><p>Осталось реализовать сам двухступенчатый контроллер, который можно интерпретировать как блок переключателя <img class="image-seftcontainer" src="http://inclab.ru/images/articles/zamknutaya-sistema-upravleniya-scilab-xcos/fud3uk/zamknutaya-sistema-upravleniya-scilab-xcos.jpg" alt="Замкнутая система управления Scilab Xcos" title="Замкнутая система управления Scilab Xcos"/>
 с палитры &laquo;<strong>Маршрутизация сигналов</strong>&raquo;. На <em>вход</em> блока <strong>SWITCH</strong><strong>2_</strong><strong>m</strong> должен подаваться результат сравнения разницы температур с &laquo;0&raquo;, а на <em>выход</em> <strong>SWITCH</strong><strong>2_</strong><strong>m</strong> -&nbsp; значение <em>&laquo;0&raquo; или &laquo;1&raquo;,</em> в зависимости от знака <em>ошибки</em>.</p>
  </li>
<li><p>Значения переключателя &laquo;0&raquo; и &laquo;1&raquo; реализуем блоками постоянных <strong>CONST</strong><strong>, </strong>и подадим их на первый и третий входы блока <strong>SWITCH</strong><strong>2_</strong><strong>m</strong><strong>. </strong>На данном этапе блок контроллера должен выглядеть, как показано на рис. 71.</p>
   <div class="image-container" itemscope itemtype="http://schema.org/ImageObject">
    <picture>
        <source type="image/webp" srcset="/images/articles/zamknutaya-sistema-upravleniya-scilab-xcos/wyereb/risunok-71-vyhodnye-znacheniya-dvuhstupenchatogo-kontrollera.webp"/>
        <img class="image-in-container" src="http://inclab.ru/images/articles/zamknutaya-sistema-upravleniya-scilab-xcos/wyereb/risunok-71-vyhodnye-znacheniya-dvuhstupenchatogo-kontrollera.jpg" itemprop="contentUrl" alt="Рисунок 71. Выходные значения двухступенчатого контроллера " title="Рисунок 71. Выходные значения двухступенчатого контроллера "/>
    </picture>
    <span class="image-description text-italic" itemprop="description">Рисунок 71. Выходные значения двухступенчатого контроллера </span>
</div> 
   
  </li>

<li><p>Для реализации контроллера осталось соединить выход блока, решающего неравенство <strong>RELATIONALOP</strong> со свободным регулярным входом блока переключателя (см. рис. 72).</p>
  
   <div class="image-container" itemscope itemtype="http://schema.org/ImageObject">
    <picture>
        <source type="image/webp" srcset="/images/articles/zamknutaya-sistema-upravleniya-scilab-xcos/1ipbgqk/risunok-72-blok-shema-kontrollera-prinimayuschego-znacheniya-0-i-1-v-zavisimosti-ot-znaka-raznicy-te.webp"/>
        <img class="image-in-container" src="http://inclab.ru/images/articles/zamknutaya-sistema-upravleniya-scilab-xcos/1ipbgqk/risunok-72-blok-shema-kontrollera-prinimayuschego-znacheniya-0-i-1-v-zavisimosti-ot-znaka-raznicy-te.jpg" itemprop="contentUrl" alt="Рисунок 72. Блок-схема контроллера, принимающего значения «0» и «1» в зависимости от знака разницы температур " title="Рисунок 72. Блок-схема контроллера, принимающего значения «0» и «1» в зависимости от знака разницы температур "/>
    </picture>
    <span class="image-description text-italic" itemprop="description">Рисунок 72. Блок-схема контроллера, принимающего значения «0» и «1» в зависимости от знака разницы температур </span>
</div> 

  </li>

<li><p>Напомним, что на средний <em>вход</em> <strong>SWITCH</strong><strong>2_</strong><strong>m</strong> подаётся &laquo;1&raquo;, если текущая температура не превышает желаемой температуры и &laquo;0&raquo;, если текущая температура поднялась выше желаемой. Соответственно, нам нужно включать контроллер, кода ошибка больше нуля и выключать его, когда ошибка отрицательна. Реализовать смену положений выключателя можно с помощью внутренних параметров.</p></li>

<li><p>Во внутренних параметрах блока <strong>SWITCH</strong><strong>2_</strong><strong>m</strong> нас интересует параметр <strong>pass</strong> <strong>first</strong> <strong>input</strong><strong> &ndash; </strong>условие подачи на <em>выход</em> <strong>SWITCH</strong><strong>2_</strong><strong>m</strong> его <em>первого входа</em>, т.е<strong> &laquo;1&raquo;. Параметр </strong><strong>pass</strong> <strong>first</strong> <strong>input</strong> может принимать следующие значения:</p>

<ul>
<li><p>значение &laquo;0&raquo; для проверки условия, что вход \( \geq a \);</p></li>
<li><p>значение &laquo;1&raquo; для проверки условия, что вход \(  >a \);</p></li>
<li><p>значение &laquo;2&raquo; для проверки условия, что вход \( = a \);</p></li>
</ul>
  
<p>В нашем случае, необходимо поставить &laquo;<strong>1</strong>&raquo;, что соответствует условию, что значение, подаваемое на средний вход блока <strong>SWITCH</strong><strong>2_</strong><strong>m</strong> больше параметра . Параметр &nbsp;задаётся в следующей строке - для внутреннего параметра <strong>threshold</strong> и равняется &laquo;<strong>0</strong>&raquo;.</p>
  
<p>Итак, получив на вход контроллера <strong>SWITCH</strong><strong>2_</strong><strong>m</strong> значение &laquo;1&raquo;, соответствующее температуре, ниже желаемой, мы сравниваем её с &laquo;0&raquo; в блоке <strong>SWITCH</strong><strong>2_</strong><strong>m</strong> и на выход контроллера <strong>SWITCH</strong><strong>2_</strong><strong>m</strong> подаётся<strong> &laquo;1&raquo;, </strong>что соответствует режиму<strong> &laquo;вкл&raquo;. </strong>Если же снимаемая температура опускается ниже значения , то на вход блока <strong>SWITCH</strong><strong>2_</strong><strong>m</strong> подаётся<strong> &laquo;0&raquo;, </strong>который сравнивается с<strong> &laquo;0</strong>&raquo; его внутренних параметров и переводит контроллер в состояние<strong> &laquo;выкл&raquo;, </strong>что соответствует выходу блока <strong>SWITCH</strong><strong>2_</strong><strong>m</strong> со значением<strong> &laquo;0&raquo;.</strong></p>
 </li> 
<li><p>Построение схемы управления подходит к концу. Осталось выход управления со входом управляемого объекта и добавить блоки для вывода графической информации, как показано на рис. 73.</p>
   <div class="image-container" itemscope itemtype="http://schema.org/ImageObject">
    <picture>
        <source type="image/webp" srcset="/images/articles/zamknutaya-sistema-upravleniya-scilab-xcos/159hhjk/risunok-73-blok-shema-zamknutoy-sistemy-upravleniya-temperaturoy-s-dvuhstupenchatym-kontrollerom.webp"/>
        <img class="image-in-container" src="http://inclab.ru/images/articles/zamknutaya-sistema-upravleniya-scilab-xcos/159hhjk/risunok-73-blok-shema-zamknutoy-sistemy-upravleniya-temperaturoy-s-dvuhstupenchatym-kontrollerom.jpg" itemprop="contentUrl" alt="Рисунок 73. Блок-схема замкнутой системы управления температурой с двухступенчатым контроллером " title="Рисунок 73. Блок-схема замкнутой системы управления температурой с двухступенчатым контроллером "/>
    </picture>
    <span class="image-description text-italic" itemprop="description">Рисунок 73. Блок-схема замкнутой системы управления температурой с двухступенчатым контроллером </span>
</div> 

  </li>


<li><p>Запустите моделирование на 60сек, удостоверившись, что в блоке задержке стоит корректный размер буфера, а у блока осциллографа правильно настроены параметры осей, размерности входов и буферизации. Результат моделирования представлен на рис. 74.</p>
<p>1-я система координат: черный график  разница температур; зелёный ступенчатый график  выход блока-решателя неравенства, иллюстрирующий переход через нуль; красный - график  у=0</p>
<p>2-я система координат:  режимы контроллера 1-«вкл», 0  «выкл»</p>
<p>3-я система координат: красный график  желаемая температура   , синий график  снимаемая датчиком температура.</p>


   <div class="image-container" itemscope itemtype="http://schema.org/ImageObject">
    <picture>
        <source type="image/webp" srcset="/images/articles/zamknutaya-sistema-upravleniya-scilab-xcos/tjlosg/risunok-74-rezultat-modelirovaniya-zamknutoy-sistemy-upravleniya.webp"/>
        <img class="image-in-container" src="http://inclab.ru/images/articles/zamknutaya-sistema-upravleniya-scilab-xcos/tjlosg/risunok-74-rezultat-modelirovaniya-zamknutoy-sistemy-upravleniya.jpg" itemprop="contentUrl" alt="Рисунок 74. Результат моделирования замкнутой системы управления " title="Рисунок 74. Результат моделирования замкнутой системы управления "/>
    </picture>
    <span class="image-description text-italic" itemprop="description">Рисунок 74. Результат моделирования замкнутой системы управления </span>
</div> 
</li></ol>

<p>Из рис. 74 видно, что первые 5 минут &ndash; время равное задержке, контроллер простаивает и температура остаётся на отметке 0, после чего вычисляется разница температур (1-я система координат), и в работу включается контроллер (2-я система координат), повышающий температуру. Отопительные приборы продолжают работать на обогрев, пока температура в помещении не достигнет значения \( Tfix \), после чего контроллер переходит в состояние &laquo;выкл&raquo;, однако, и при выключенных отопительных элементах, температура помещения растёт некоторое время, из-за инертности система, после чего начинает падать из-за неизбежных теплопотерь (3-я система координат). Падение температуры ниже критической отметки \( Tfix \), обозначающее отрицательность ошибки, вновь инициирует переход контроллера в состояние &laquo;вкл&raquo; и т.д.</p>


<p>Оригинальный адрес статьи: <a href='http://inclab.ru/articles/zamknutaya-sistema-upravleniya-scilab-xcos'>http://inclab.ru/articles/zamknutaya-sistema-upravleniya-scilab-xcos</a><p>]]></description>
			<pubDate>Fri, 04 Jun 2021 15:01:15 +0400</pubDate>
		</item>
		<item>
			<title><![CDATA[Строим двумерный и трёхмерный графики на фазовой плоскости в Xcos]]></title>
			<link>http://inclab.ru/articles/postroeniyu-fazovogo-portreta-v-xcos</link>
			<guid>http://inclab.ru/articles/postroeniyu-fazovogo-portreta-v-xcos</guid>
			<description><![CDATA[<img src="http://inclab.ru" />Два подхода к построению фазового портрета на примере аттрактора Рёсслера <p>В представленных ранее примерах, мы рассмотрели вывод графической составляющей моделируемых систем двумя способами: с помощью осциллографов <strong>CMSCOPE</strong> и <strong>CSCOPE</strong> и путём задания <strong>контекста</strong>. Однако в обоих случаях графики строились в системах координат, где на горизонтальной оси откладывались временные отсчеты, а по вертикальной &ndash; значения функции в указанные моменты времени. И, хотя вопрос разложения дифференциальных уравнений на фазовые переменные был затронут в <a href="http://inclab.ru/xcos/svedenie-k-sisteme-v-forme-koshi">статье</a>, не освещенным остался вопрос построения фазового портрета. Этой, столь полезной для анализа поведения решений моделируемых систем дифференциальных уравнений, процедуре и будет посвящён данный материал.</p>
<p>Мы рассмотрим два подхода к построению фазовых траекторий динамической системы на примере аттрактора Рёсслера. Данная система дифференциальных уравнений выбрана не случайно. Дело в том, что при моделировании системы Рёсслера, именно фазовый портрет представляет интерес, построение же интегральных кривых, как функций времени, не даёт полной картины происходящих в системе процессов.</p>
<p>Аттрактор Рёсслера &mdash; это хаотический аттрактор, которым обладает система дифференциальных уравнений Рёсслера вида:</p>

<p class="text-center">
(1)\begin{cases} \dot{x}=-y-z \\ \dot{y}=x+ay \\ \dot{z}=b+z(x-c)  \end{cases}  
</p>
<p class="text-center">\( a>0, b>0,c>0 \)</p>

<p>При значениях параметров \( a=b=0.2 \)&nbsp;и \( 2.6 \leq c \leq 4.2 \)&nbsp;уравнения Рёсслера обладают устойчивым предельным циклом. При этих значениях параметров период и форма предельного цикла совершают последовательность удвоения периода.</p>
<p>Сразу же за точкой \( c=4.2 \)&nbsp;возникает явление хаотического аттрактора. Чётко определённые линии предельных циклов расплываются и заполняют фазовое пространство бесконечным счетным множеством траекторий, обладающим свойствами фрактала. Именно случай бесконечных самоповторяющихся траекторий мы и замоделируем.</p>
<p>Построим блок-схему системы (1), задав параметры в контексте со значениями \( a=b=0.1, с=14 \).</p>
<p>Для построения трёх уравнений системы (1) нам понадобятся блоки <strong>INTEGRAL</strong><strong>_</strong><strong>m</strong><strong>, </strong><strong>BIGSOM</strong><strong>_</strong><strong>f</strong><strong>, </strong><strong>PRODUCT</strong><strong>, </strong><strong>CONST</strong> и <strong>GAINBLK</strong><strong>. </strong></p>

<h2>Двумерный фазовый портрет в Xcos</h2>
<p>В рамках первого подхода к построению фазового портрета, воспользуемся <br /> блоком <strong><img class="image-seftcontainer" src="http://inclab.ru/images/articles/postroeniyu-fazovogo-portreta-v-xcos/1ezt3o1/stroim-dvumernyy-i-trehmernyy-grafiki-na-fazovoy-ploskosti-v-xcos.jpg" alt="Строим двумерный и трёхмерный графики на фазовой плоскости в Xcos" title="Строим двумерный и трёхмерный графики на фазовой плоскости в Xcos"/>
, </strong>который располагается на палитре <strong>&laquo;Регистрирующие устройства&raquo; </strong>и осуществляет построение графика зависимости \( y(x) \), где \( x \) отвечает за значения по оси абсцисс, а значения \( y(x) \)откладываются на оси ординат.</p>
<p></p>

<p>Приступим к построению блочной диаграммы Xcos.</p>
<p>1. Для начала, добавьте на рабочую область 3 блока интегратора <strong>INTEGRAL</strong><strong>_</strong><strong>m</strong> с нулевыми начальными значениями, 4 блока <strong>BIGSOM</strong><strong>_</strong><strong>f</strong><strong>, </strong>блок умножения переменных <strong>PRODUCT</strong> и блоки для задания коэффициентов <strong>CONST</strong> и <strong>GAINBLK</strong><strong>. </strong></p>
<p>Расположите указанные блоки в порядке использования в уравнениях. В результате должна получиться заготовка, приближенная к изображённой на рис. 57.</p>

<div class="image-container" itemscope itemtype="http://schema.org/ImageObject">
    <picture>
        <source type="image/webp" srcset="/images/articles/postroeniyu-fazovogo-portreta-v-xcos/1l4jc3v/risunok-57-zagotovka-dlya-sozdaniya-blok-shemy-sistemy-1.webp"/>
        <img class="image-in-container" src="http://inclab.ru/images/articles/postroeniyu-fazovogo-portreta-v-xcos/1l4jc3v/risunok-57-zagotovka-dlya-sozdaniya-blok-shemy-sistemy-1.jpg" itemprop="contentUrl" alt="Рисунок 57. Заготовка для создания блок-схемы системы (1)" title="Рисунок 57. Заготовка для создания блок-схемы системы (1)"/>
    </picture>
    <span class="image-description text-italic" itemprop="description">Рисунок 57. Заготовка для создания блок-схемы системы (1)</span>
</div> 
 <p>2. На построении соединительных линий между блоками Xcos для первых двух уравнений системы Рёсслера не будем подобно останавливаться, так как оно представляется легко осуществимым на основе приобретённого читателем опыта. Результат установления связей для переменных \( y, x \)&nbsp;&nbsp;отображен на рис. 58.</p>

<div class="image-container" itemscope itemtype="http://schema.org/ImageObject">
    <picture>
        <source type="image/webp" srcset="/images/articles/postroeniyu-fazovogo-portreta-v-xcos/1hjlgo7/risunok-58-pervye-dva-uravneniya-sistemy-1.webp"/>
        <img class="image-in-container" src="http://inclab.ru/images/articles/postroeniyu-fazovogo-portreta-v-xcos/1hjlgo7/risunok-58-pervye-dva-uravneniya-sistemy-1.jpg" itemprop="contentUrl" alt="Рисунок 58. Первые два уравнения системы (1)" title="Рисунок 58. Первые два уравнения системы (1)"/>
    </picture>
    <span class="image-description text-italic" itemprop="description">Рисунок 58. Первые два уравнения системы (1)</span>
</div> 

<p>3. Сбор блок-схемы третьего уравнения системы Рёсслера нужно начать со второго слагаемого, то есть осуществить произведение переменной \( z \)&nbsp;и скобки \( (x-c)\), см. рис. 59.</p>

<div class="image-container" itemscope itemtype="http://schema.org/ImageObject">
    <picture>
        <source type="image/webp" srcset="/images/articles/postroeniyu-fazovogo-portreta-v-xcos/12jddbs/risunok-59-blok-shema-chasti-tretego-uravneniya-sistemy-1.webp"/>
        <img class="image-in-container" src="http://inclab.ru/images/articles/postroeniyu-fazovogo-portreta-v-xcos/12jddbs/risunok-59-blok-shema-chasti-tretego-uravneniya-sistemy-1.jpg" itemprop="contentUrl" alt="Рисунок 59. Блок схема части третьего уравнения системы (1)" title="Рисунок 59. Блок схема части третьего уравнения системы (1)"/>
    </picture>
    <span class="image-description text-italic" itemprop="description">Рисунок 59. Блок схема части третьего уравнения системы (1)</span>
</div> 

<p>4. Осталось только подвести нужные соединительные линии на регулярные входы последнего сумматора и направить его выход на соответствующий интегратор, \( z \).</p>
<p>Результатом данных манипуляций будет схема, блок-изображённая на рис. 60.</p>

<div class="image-container" itemscope itemtype="http://schema.org/ImageObject">
    <picture>
        <source type="image/webp" srcset="/images/articles/postroeniyu-fazovogo-portreta-v-xcos/41vipa/risunok-60-blok-shema-sistemy-resslera-treh-dif-uravneniy.webp"/>
        <img class="image-in-container" src="http://inclab.ru/images/articles/postroeniyu-fazovogo-portreta-v-xcos/41vipa/risunok-60-blok-shema-sistemy-resslera-treh-dif-uravneniy.jpg" itemprop="contentUrl" alt="Рисунок 60. Блок-схема системы Рёсслера трёх диф. уравнений" title="Рисунок 60. Блок-схема системы Рёсслера трёх диф. уравнений"/>
    </picture>
    <span class="image-description text-italic" itemprop="description">Рисунок 60. Блок-схема системы Рёсслера трёх диф. уравнений</span>
</div> 

<p>5. Далее, необходимо добавить блоки для осуществления моделирования <strong>CLOCK</strong><strong>_</strong><strong>c</strong><strong>, </strong><strong>END</strong><strong>, </strong>проведя соединительные линии и настроив внутренние параметры блоков для моделирования на протяжении<strong> 300сек</strong>.</p>
<p>Для вывода фазовых траекторий, добавьте блок <strong>CSCOPXY</strong><strong>, </strong>на регулярные входы которого направьте интересующие нас переменные \( y, x \) для вывода графика \( y(x) \), а на управляющий вход &ndash; соединительную линию от индикатора отсчетов <strong>CLOCK</strong><strong>_</strong><strong>c</strong><strong>.</strong>&nbsp;</p>
<p>Обратите внимание, что названия входов блока <strong>CSCOPXY</strong> иллюстрируют построение функции \( y(x) \).</p>
<p>В результате блок-схема, реализующая построение траекторий аттрактора Рёсслера на фазовой плоскости примет вид, такой, как показано на рис. 61.</p>
<div class="image-container" itemscope itemtype="http://schema.org/ImageObject">
    <picture>
        <source type="image/webp" srcset="/images/articles/postroeniyu-fazovogo-portreta-v-xcos/1bp7ytv/risunok-61-blok-shema-modelirovaniya-sistemy-resslera.webp"/>
        <img class="image-in-container" src="http://inclab.ru/images/articles/postroeniyu-fazovogo-portreta-v-xcos/1bp7ytv/risunok-61-blok-shema-modelirovaniya-sistemy-resslera.jpg" itemprop="contentUrl" alt="Рисунок 61. Блок-схема моделирования системы Рёсслера" title="Рисунок 61. Блок-схема моделирования системы Рёсслера"/>
    </picture>
    <span class="image-description text-italic" itemprop="description">Рисунок 61. Блок-схема моделирования системы Рёсслера</span>
</div> 

<p>Запустите моделирование на протяжении 300сек., настройте внутренние параметры блока <strong>CSCOPXY</strong> так, чтобы странный аттрактор хорошо вписывался бы в координатную сетку, как показано на рис. 62.</p>
<div class="image-container" itemscope itemtype="http://schema.org/ImageObject">
    <picture>
        <source type="image/webp" srcset="/images/articles/postroeniyu-fazovogo-portreta-v-xcos/1dzh3t/risunok-62-attraktor-resslera-na-fazovoy-ploskosti.webp"/>
        <img class="image-in-container" src="http://inclab.ru/images/articles/postroeniyu-fazovogo-portreta-v-xcos/1dzh3t/risunok-62-attraktor-resslera-na-fazovoy-ploskosti.jpg" itemprop="contentUrl" alt="Рисунок 62. Аттрактор Рёсслера  на фазовой плоскости" title="Рисунок 62. Аттрактор Рёсслера  на фазовой плоскости"/>
    </picture>
    <span class="image-description text-italic" itemprop="description">Рисунок 62. Аттрактор Рёсслера  на фазовой плоскости</span>
</div> 

<p>Итак, результатом моделирования бифуркаций аттрактора Рёсслера будет фазовая траектория \( y(x) \), иллюстрирующая сценарий перехода к хаосу через каскады бифуркаций удвоения периода Фейгенбаума, субгармонические каскады и гомоклинический каскад бифуркаций.</p>


<h2>Построение трёхмерного графика в Xcos</h2>
<p>Для большей наглядности результата моделирования, заменим блок <strong>CSCOPXY</strong> блоком <strong>CSCOPXY</strong><strong>3</strong><strong>D</strong><strong>.</strong></p>
<p>Функциональный блок <img class="image-seftcontainer" src="http://inclab.ru/images/articles/postroeniyu-fazovogo-portreta-v-xcos/91l8jj/stroim-dvumernyy-i-trehmernyy-grafiki-na-fazovoy-ploskosti-v-xcos.jpg" alt="Строим двумерный и трёхмерный графики на фазовой плоскости в Xcos" title="Строим двумерный и трёхмерный графики на фазовой плоскости в Xcos"/>
<strong>&nbsp;</strong>располагается на палитре<strong> &laquo;Регистрирующие устройства&raquo; </strong>и служит он для отображения трёхмерной системы координат, что становится понятно из его названия.</p>
<p>Изменённая часть блок-схемы и результат моделирования аттрактора Рёсслера представлены на рис. 63а,б.</p>


<div class="image-container" itemscope itemtype="http://schema.org/ImageObject">
    <picture>
        <source type="image/webp" srcset="/images/articles/postroeniyu-fazovogo-portreta-v-xcos/crsq6n/risunok-63a-modelirovanie-3d-sistemy-resslera---dobavlenie-bloka-cscopxy3d-v-blok-shemu.webp"/>
        <img class="image-in-container" src="http://inclab.ru/images/articles/postroeniyu-fazovogo-portreta-v-xcos/crsq6n/risunok-63a-modelirovanie-3d-sistemy-resslera---dobavlenie-bloka-cscopxy3d-v-blok-shemu.jpg" itemprop="contentUrl" alt="Рисунок 63a.Моделирование 3D системы Рёсслера - добавление блока CSCOPXY3D в блок-схему" title="Рисунок 63a.Моделирование 3D системы Рёсслера - добавление блока CSCOPXY3D в блок-схему"/>
    </picture>
    <span class="image-description text-italic" itemprop="description">Рисунок 63a.Моделирование 3D системы Рёсслера - добавление блока CSCOPXY3D в блок-схему</span>
</div> 

<div class="image-container" itemscope itemtype="http://schema.org/ImageObject">
    <picture>
        <source type="image/webp" srcset="/images/articles/postroeniyu-fazovogo-portreta-v-xcos/220sjh/risunok-63b-rezultat-ispolzovaniya-xcos-bloka-generacii-trehmernoy-setki-koordinat.webp"/>
        <img class="image-in-container" src="http://inclab.ru/images/articles/postroeniyu-fazovogo-portreta-v-xcos/220sjh/risunok-63b-rezultat-ispolzovaniya-xcos-bloka-generacii-trehmernoy-setki-koordinat.jpg" itemprop="contentUrl" alt="Рисунок 63б.Результат использования Xcos блока генерации трёхмерной сетки координат" title="Рисунок 63б.Результат использования Xcos блока генерации трёхмерной сетки координат"/>
    </picture>
    <span class="image-description text-italic" itemprop="description">Рисунок 63б.Результат использования Xcos блока генерации трёхмерной сетки координат</span>
</div> 


<h2>Построение 3D графика с помощью контекста в Xcos</h2>

<p>Рассмотрим ещё один способ построения фазового портрета систем дифференциальных уравнений, теперь уже с использованием <strong>контекста</strong> и блоков буферизации данных <strong>TOWS_c</strong>.</p>
<p>Добавьте 3 блока буферизации <strong>TOWS_c</strong> &ndash; по одному для каждой переменной моделируемой системы.</p>
<p>&nbsp;Во внутренних параметров каждого из блоков <strong>TOWS_c</strong> укажите число запоминаемых точек = <strong>10000</strong> и задайте ассоциируем имена переменных&nbsp; <strong>x</strong><strong>_</strong><strong>var</strong><strong>, y_var, </strong><strong>z</strong><strong>_</strong><strong>var</strong> в соответствии с сигналами, подающимися на регулярные входы&nbsp; <strong>TOWS_c </strong>(см. рис. 64).</p>

<div class="image-container" itemscope itemtype="http://schema.org/ImageObject">
    <picture>
        <source type="image/webp" srcset="/images/articles/postroeniyu-fazovogo-portreta-v-xcos/gn34ic/risunok-64-bloki-buferizacii-vklyuchennye-blok-shemu-sistemy-1.webp"/>
        <img class="image-in-container" src="http://inclab.ru/images/articles/postroeniyu-fazovogo-portreta-v-xcos/gn34ic/risunok-64-bloki-buferizacii-vklyuchennye-blok-shemu-sistemy-1.jpg" itemprop="contentUrl" alt="Рисунок 64. Блоки буферизации, включенные блок-схему системы (1)" title="Рисунок 64. Блоки буферизации, включенные блок-схему системы (1)"/>
    </picture>
    <span class="image-description text-italic" itemprop="description">Рисунок 64. Блоки буферизации, включенные блок-схему системы (1)</span>
</div> 

<p>Теперь значения переменных \( x,y,z \) для всех временных отсчетов записываются в одноимённые переменные <strong>x</strong><strong>_</strong><strong>var</strong><strong>, y_var, </strong><strong>z</strong><strong>_</strong><strong>var</strong><strong>. </strong>Эти переменные можно использовать в контексте для построения графиков посредством стандартных Scilab &ndash; функций, например <strong>plot</strong><strong>() </strong>и <strong>param</strong><strong>3</strong><strong>d</strong><strong>(). </strong></p>
<p>Для того, чтобы отобразить две системы координат в одном графическом окне, добавьте в контекст следующие строки:</p>

<div class="image-container">
<p><b>На этом месте располагается листинг, который не может быть правильно отображен в rss-ленте. Перейдите к оригинальной статье: <a href='http://inclab.ru/articles/postroeniyu-fazovogo-portreta-v-xcos'>http://inclab.ru/articles/postroeniyu-fazovogo-portreta-v-xcos</a></b></p>
<span class="image-description text-italic">Графики в контексте Xcos.</span>
</div>	

<p>После запуска моделирования, появится одно графическое окно: на первой координатной сетке будут зависимости \( x(t), y(t), z(t) \), а на второй &ndash; трёхмерный график аттрактора Рёсслера. как на рис. 65.</p>

<div class="image-container" itemscope itemtype="http://schema.org/ImageObject">
    <picture>
        <source type="image/webp" srcset="/images/articles/postroeniyu-fazovogo-portreta-v-xcos/5z840w/risunok-65-rezultat-ispolzovaniya-blokov-buferizacii-i-konteksta-dlya-vyvoda-grafikov-sistemy-ressle.webp"/>
        <img class="image-in-container" src="http://inclab.ru/images/articles/postroeniyu-fazovogo-portreta-v-xcos/5z840w/risunok-65-rezultat-ispolzovaniya-blokov-buferizacii-i-konteksta-dlya-vyvoda-grafikov-sistemy-ressle.jpg" itemprop="contentUrl" alt="Рисунок 65. Результат использования блоков буферизации и контекста для вывода графиков системы Рёсслера (1)" title="Рисунок 65. Результат использования блоков буферизации и контекста для вывода графиков системы Рёсслера (1)"/>
    </picture>
    <span class="image-description text-italic" itemprop="description">Рисунок 65. Результат использования блоков буферизации и контекста для вывода графиков системы Рёсслера (1)</span>
</div> 






<p>Оригинальный адрес статьи: <a href='http://inclab.ru/articles/postroeniyu-fazovogo-portreta-v-xcos'>http://inclab.ru/articles/postroeniyu-fazovogo-portreta-v-xcos</a><p>]]></description>
			<pubDate>Thu, 03 Jun 2021 16:59:31 +0400</pubDate>
		</item>
		<item>
			<title><![CDATA[Математическая модель SIR взаимодействия трёх популяций, её реализация в среде Xcos]]></title>
			<link>http://inclab.ru/articles/matematicheskaya-model-sir-vzaimodeystviya-treh-populyaciy</link>
			<guid>http://inclab.ru/articles/matematicheskaya-model-sir-vzaimodeystviya-treh-populyaciy</guid>
			<description><![CDATA[<img src="http://inclab.ru" />Математическая модель SIR взаимодействия трёх популяций, её реализация в среде Xcos <p>Рассмотрим простейшую модель распространения болезни в обществе. Обозначим через \( s(t) \)&nbsp;- долю особей, потенциально подверженных заболеванию, \( i(t) \)&nbsp;- долю уже заболевших (и потенциально заразных) особей, а через \( r(t) \)&nbsp;- число выздоровевших и, следовательно, приобрётших иммунитет к болезни. В данных обозначениях математическая модель течения болезни в трёх&nbsp; взаимодействующих популяциях представима в виде:</p>

<p class="text-center">
(1)\begin{cases} \dot{s}=-as(t)i(t) \\ \dot{i}=as(t)i(t)-bi(t) \\ \dot{r}=bi(t)  \end{cases}  
</p>
<p class="text-center">\( a>0, b>0 \)</p>

<p>Создание блок-схемы, описывающей взаимодействие трёх популяций, как и <a href="http://inclab.ru/xcos/ispolzovanie-simvolnyh-parametrov-i-konteksta-v">в предыдущем случае</a>, начнём с задания положительных коэффициентов \( a=1, b=0.3 \) через контекст. Кроме того, зададим начальные значения \( s_0=0.999, i_0=0.001 \), обозначающие долю особей, восприимчивых и не восприимчивых&nbsp; к болезни соответственно.</p>
<p>Далее добавим на рабочую область три блока интегратора <strong>INTEGRAL</strong><strong>_</strong><strong>m</strong> с настроенными внутренними параметрами, один блок сумматора <strong>BIGSOM</strong><strong>_</strong><strong>f</strong> и два блока усилителя <strong>GAINBLK</strong> с параметрами \( a,b \).</p>
<p>В итоге получим заготовку, изображённую на рис. 51.</p>

<div class="image-container" itemscope itemtype="http://schema.org/ImageObject">
    <picture>
        <source type="image/webp" srcset="/images/articles/matematicheskaya-model-sir-vzaimodeystviya-treh-populyaciy/1q6lf7z/risunok-51-ishodnye-bloki-dlya-sozdaniya-blok-shemy-sistemy-1.webp"/>
        <img class="image-in-container" src="http://inclab.ru/images/articles/matematicheskaya-model-sir-vzaimodeystviya-treh-populyaciy/1q6lf7z/risunok-51-ishodnye-bloki-dlya-sozdaniya-blok-shemy-sistemy-1.jpg" itemprop="contentUrl" alt="Рисунок 51. Исходные блоки для создания блок-схемы системы (1)" title="Рисунок 51. Исходные блоки для создания блок-схемы системы (1)"/>
    </picture>
    <span class="image-description text-italic" itemprop="description">Рисунок 51. Исходные блоки для создания блок-схемы системы (1)</span>
</div> 
   
<p>Далее замоделируем правую часть уравнения \( \dot{s}=-as(t)i(t) \) как произведение двух фазовых переменных, усиленное на величину \( -a \). <br /> </p>
<p>В результате получим схему, изображенную на рис. 52</p>
<div class="image-container" itemscope itemtype="http://schema.org/ImageObject">
    <picture>
        <source type="image/webp" srcset="/images/articles/matematicheskaya-model-sir-vzaimodeystviya-treh-populyaciy/5jiesn/risunok-52-blok-shema-pervogo-uravneniya-sistemy-1.webp"/>
        <img class="image-in-container" src="http://inclab.ru/images/articles/matematicheskaya-model-sir-vzaimodeystviya-treh-populyaciy/5jiesn/risunok-52-blok-shema-pervogo-uravneniya-sistemy-1.jpg" itemprop="contentUrl" alt="Рисунок 52. Блок-схема первого уравнения  системы (1)" title="Рисунок 52. Блок-схема первого уравнения  системы (1)"/>
    </picture>
    <span class="image-description text-italic" itemprop="description">Рисунок 52. Блок-схема первого уравнения  системы (1)</span>
</div> 
 
<p>Соединительные линии для второго и третьего уравнений проводятся по известным уже принципам умножения фазовых переменных с помощью блока <strong>PRODUCT</strong> и их последующего усиления через блок <strong>GAINBLK</strong><strong>. </strong></p>
<p>Интересным в рассматриваемом примере является второе уравнение \( \dot{i}=as(t)i(t)-bi(t) \)&nbsp;рассматриваемой системы (1). Дело в том, что оба слагаемых, стоящих в правой части данного уравнения, входят в состав первого и третьего уравнений с теми же коэффициентами усиления, но противоположными знаками. Поэтому добавлять дополнительные блоки усилителей не нужно, достаточно распараллелить соответствующие соединительные линии блоков и отредактировать знаки слагаемых блока <strong>BIGSOM</strong><strong>_</strong><strong>f</strong> , как показано на рис. 53.</p>

<div class="image-container" itemscope itemtype="http://schema.org/ImageObject">
    <picture>
        <source type="image/webp" srcset="/images/articles/matematicheskaya-model-sir-vzaimodeystviya-treh-populyaciy/4pdxha/risunok-53-blok-shema-dif-uravneniy-sistemy-1.webp"/>
        <img class="image-in-container" src="http://inclab.ru/images/articles/matematicheskaya-model-sir-vzaimodeystviya-treh-populyaciy/4pdxha/risunok-53-blok-shema-dif-uravneniy-sistemy-1.jpg" itemprop="contentUrl" alt="Рисунок 53. Блок-схема диф.уравнений системы (1)" title="Рисунок 53. Блок-схема диф.уравнений системы (1)"/>
    </picture>
    <span class="image-description text-italic" itemprop="description">Рисунок 53. Блок-схема диф.уравнений системы (1)</span>
</div> 

<p>Для вывода графического решения рассматриваемой системы трёх взаимодействующих популяций, воспользуемся приёмом, рассмотренным в <a href="http://inclab.ru/xcos/ispolzovanie-simvolnyh-parametrov-i-konteksta-v">предыдущей статье</a>. Добавим блоки <strong>TOWS_c, </strong><strong>CLOCK</strong><strong>_</strong><strong>c</strong><strong>, </strong><strong>END</strong><strong>, </strong>проведя соединительные линии и настроив их внутренние параметры для моделирования на протяжении<strong> 20сек., </strong>как показано на рис. 54.</p>
 
<div class="image-container" itemscope itemtype="http://schema.org/ImageObject">
    <picture>
        <source type="image/webp" srcset="/images/articles/matematicheskaya-model-sir-vzaimodeystviya-treh-populyaciy/l6ywt/risunok-54-xcos-model-rasprostraneniya-bolezni-v-obschestve.webp"/>
        <img class="image-in-container" src="http://inclab.ru/images/articles/matematicheskaya-model-sir-vzaimodeystviya-treh-populyaciy/l6ywt/risunok-54-xcos-model-rasprostraneniya-bolezni-v-obschestve.jpg" itemprop="contentUrl" alt="Рисунок 54. Xcos модель распространения болезни в обществе." title="Рисунок 54. Xcos модель распространения болезни в обществе."/>
    </picture>
    <span class="image-description text-italic" itemprop="description">Рисунок 54. Xcos модель распространения болезни в обществе.</span>
</div> 

<p>Далее необходимо установить контекст, как показано на рис. 55. </p>

<div class="image-container" itemscope itemtype="http://schema.org/ImageObject">
    <picture>
        <source type="image/webp" srcset="/images/articles/matematicheskaya-model-sir-vzaimodeystviya-treh-populyaciy/m4b5af/risunok-55-zadanie-vnutrennih-parametrov-i-konteksta-sir-modeli.webp"/>
        <img class="image-in-container" src="http://inclab.ru/images/articles/matematicheskaya-model-sir-vzaimodeystviya-treh-populyaciy/m4b5af/risunok-55-zadanie-vnutrennih-parametrov-i-konteksta-sir-modeli.jpg" itemprop="contentUrl" alt="Рисунок 55. Задание внутренних параметров и контекста SIR-модели" title="Рисунок 55. Задание внутренних параметров и контекста SIR-модели"/>
    </picture>
    <span class="image-description text-italic" itemprop="description">Рисунок 55. Задание внутренних параметров и контекста SIR-модели</span>
</div> 


<p>Результаты моделирования представлены на рис. 56. Моделирование проводилось для   с шагом дискретизации 0.1.</p>

<div class="image-container" itemscope itemtype="http://schema.org/ImageObject">
    <picture>
        <source type="image/webp" srcset="/images/articles/matematicheskaya-model-sir-vzaimodeystviya-treh-populyaciy/epyt4u/risunok-56-graficheskoe-predstavlenie-techeniya-bolezni-opisyvaemogo-sistemoy-1-v-obschestve.webp"/>
        <img class="image-in-container" src="http://inclab.ru/images/articles/matematicheskaya-model-sir-vzaimodeystviya-treh-populyaciy/epyt4u/risunok-56-graficheskoe-predstavlenie-techeniya-bolezni-opisyvaemogo-sistemoy-1-v-obschestve.jpg" itemprop="contentUrl" alt="Рисунок 56. Графическое представление течения болезни, описываемого системой (1), в обществе." title="Рисунок 56. Графическое представление течения болезни, описываемого системой (1), в обществе."/>
    </picture>
    <span class="image-description text-italic" itemprop="description">Рисунок 56. Графическое представление течения болезни, описываемого системой (1), в обществе.</span>
</div> 

<p>На основе результатов моделирования, можно сделать вывод, что доля переболевших и приобретших иммунитет особей, растёт со временем, в то время, как число потенциально подверженных заболеванию падает. Процент заражённых особей сначала возрастает, достигая своего максимума в точке, называемой «пиком эпидемии», а далее снижается, стремясь к нулю.</p><p>Оригинальный адрес статьи: <a href='http://inclab.ru/articles/matematicheskaya-model-sir-vzaimodeystviya-treh-populyaciy'>http://inclab.ru/articles/matematicheskaya-model-sir-vzaimodeystviya-treh-populyaciy</a><p>]]></description>
			<pubDate>Thu, 03 Jun 2021 17:00:26 +0400</pubDate>
		</item>
		<item>
			<title><![CDATA[Задание переменных в Xcos на примере системы 2-х ОДУ]]></title>
			<link>http://inclab.ru/articles/ispolzovanie-simvolnyh-parametrov-i-konteksta-v</link>
			<guid>http://inclab.ru/articles/ispolzovanie-simvolnyh-parametrov-i-konteksta-v</guid>
			<description><![CDATA[<img src="http://inclab.ru" />Использование символьных параметров и контекста в xcos на примере визуального моделирования системы Хищник-Жертва<p>Приступая к моделированию некоторой динамической системы, часто бывает нужно не раз использовать один и тот же параметр в разных уравнениях или задавать некоторые коэффициенты как функции некоторой переменной величины. Для того, чтобы не создавать одинаковые функциональные блоки, обременяющих схему и для реализации сложных зависимостей, в Xcos предусмотрены <em>символьные параметры </em>и <em>контекст</em>.</p>
<p><strong>Контекст</strong> &ndash; это код на языке Scilab, который может содержать как простое декларирование переменных, так и создание полноценных самостоятельных Scilab &ndash;функций.</p>
<p><strong>Символьные параметры</strong> &ndash; это непосредственно сами переменные, заданные в контексте, к которым можно обратиться по имени для использования в функциональных блоках при создании блок-схемы.</p>
<p>Рассмотрим использование контекста и символьных параметров на примере создания блок-схемы системы Хищник-Жертва. Данная биологическая система описывает взаимодействие двух видов, один из которых хищники, а второй &ndash; жертвы. Изменение популяций во времени описывается системой двух дифференциальных уравнения первой степени вида:</p>

<p class="text-center">
(1)\begin{cases} \dot{x}=ax-bxy\\  \dot{y}=dxy-cy\\  \end{cases}  
</p>
<p>где \( x \)&nbsp;- популяция жертв. \( y \)- популяция хищников, \( \dot{x}, \dot{y} \)- прирост популяций в момент времени \( t \), \( a \)- темп роста жертв в отсутствии хищников, \( b \)&nbsp;- скорость, с которой хищники поглощают добычу, \( c \)&nbsp;- смертность хищников при отсутствии добычи, \( d\)&nbsp;- скорость, с которой популяция хищников увеличивается, потребляя добычу.</p>
<p>Посмотреть, как можно манипулировать численностью популяций путём ввода управляющего воздействия в данную систему, можно в статье <a href="http://inclab.ru/xcos/matematicheskaya-model-upravleniya-chislennostyu-populyacii-scilab">статье</a>.</p>
<p>Создание блок схемы, описывающей взаимодействие двух популяций начнём с задания положительных коэффициентов через контекст.</p>
<p>Для <strong>задания контекста</strong> кликните <strong>правой кнопкой мыши</strong> в любом месте <strong>рабочей области</strong> и выпадающем меню выберите пункт &laquo;<strong>Установить контекст</strong>&raquo; (рис. 44 а).</p>
 <div class="image-container" itemscope itemtype="http://schema.org/ImageObject">
    <picture>
        <source type="image/webp" srcset="/images/articles/ispolzovanie-simvolnyh-parametrov-i-konteksta-v/1o33jo3/risunok-44a-vypadayuschee-menyu-dlya-vyzova-okna-konteksta.webp"/>
        <img class="image-in-container" src="http://inclab.ru/images/articles/ispolzovanie-simvolnyh-parametrov-i-konteksta-v/1o33jo3/risunok-44a-vypadayuschee-menyu-dlya-vyzova-okna-konteksta.jpg" itemprop="contentUrl" alt="Рисунок 44a. Выпадающее меню для вызова окна контекста" title="Рисунок 44a. Выпадающее меню для вызова окна контекста"/>
    </picture>
    <span class="image-description text-italic" itemprop="description">Рисунок 44a. Выпадающее меню для вызова окна контекста</span>
</div> 
   


<p>Далее в открывшемся окне задайте значения переменных , как показано на рис. 44 б). После чего нажмите кнопку &laquo;<strong>ОК</strong>&raquo;.</p>
 <div class="image-container" itemscope itemtype="http://schema.org/ImageObject">
    <picture>
        <source type="image/webp" srcset="/images/articles/ispolzovanie-simvolnyh-parametrov-i-konteksta-v/1ksm6w2/risunok-44b-zadanie-peremennyh-v-okne-konteksta-xcos.webp"/>
        <img class="image-in-container" src="http://inclab.ru/images/articles/ispolzovanie-simvolnyh-parametrov-i-konteksta-v/1ksm6w2/risunok-44b-zadanie-peremennyh-v-okne-konteksta-xcos.jpg" itemprop="contentUrl" alt="Рисунок 44б. задание переменных в окне контекста Xcos" title="Рисунок 44б. задание переменных в окне контекста Xcos"/>
    </picture>
    <span class="image-description text-italic" itemprop="description">Рисунок 44б. задание переменных в окне контекста Xcos</span>
</div>  
   
<p>После проделанных манипуляций, вы сможете использовать заданные символьные параметры непосредственно в самих блоках Xcos.</p>
<p></p>
<p>Перечислим блоки, которые будут использованы для создания блок-схемы:</p>
<ul>
<li><p>Нам потребуются два блока <strong>INTEGRAL</strong><strong>_</strong><strong>m</strong>, так как в системе (1) два уравнения;</p></li>
<li><p>Два <strong>сумматора</strong>, так как и первое, и второе уравнения системы (1) состоят из двух слагаемых;</p></li>
<li><p>Для задания множителей нам понадобятся <strong>усилители</strong> в количестве 4-х штук;</p></li>
<li><p>Блоки <strong>CLOCK</strong><strong>_</strong><strong>c</strong><strong> и </strong><strong>END;</strong></p></li>
<li><p>Один блок <strong>умножения</strong> <img class="image-seftcontainer" src="http://inclab.ru/images/articles/ispolzovanie-simvolnyh-parametrov-i-konteksta-v/1vjyfmr/zadanie-peremennyh-v-xcos-na-primere-sistemy-2-h-odu.jpg" alt="Задание переменных в Xcos на примере системы 2-х ОДУ" title="Задание переменных в Xcos на примере системы 2-х ОДУ"/>
с вкладки &laquo;<strong>Математические операции</strong>&raquo; для произведения фазовых переменных;</p></li>
<li><p>Два блока <img class="image-seftcontainer" src="http://inclab.ru/images/articles/ispolzovanie-simvolnyh-parametrov-i-konteksta-v/k9m0hp/zadanie-peremennyh-v-xcos-na-primere-sistemy-2-h-odu.jpg" alt="Задание переменных в Xcos на примере системы 2-х ОДУ" title="Задание переменных в Xcos на примере системы 2-х ОДУ"/>
, располагающихся на палитре &laquo;<strong>Регистрирующие устройства</strong>&raquo;, с помощью которых будет осуществляться вывод графиков.</p></li>
</ul>
<p></p>
<p>Итак, приступим.</p>

<ol>
<li><p>Создадим заготовку для каждого из уравнений (1), представляющих собой интеграл от суммы, при этом, укажем начальную численность хищников и жертв в 2 и 6 особей соответственно, как показано на рис. 45.</p>

 <div class="image-container" itemscope itemtype="http://schema.org/ImageObject">
    <picture>
        <source type="image/webp" srcset="/images/articles/ispolzovanie-simvolnyh-parametrov-i-konteksta-v/1oelz9z/risunok-45-nachalo-sbora-blok-shemy-modeli-hischnik-zhertva.webp"/>
        <img class="image-in-container" src="http://inclab.ru/images/articles/ispolzovanie-simvolnyh-parametrov-i-konteksta-v/1oelz9z/risunok-45-nachalo-sbora-blok-shemy-modeli-hischnik-zhertva.jpg" itemprop="contentUrl" alt="Рисунок 45. Начало сбора блок-схемы модели Хищник-Жертва" title="Рисунок 45. Начало сбора блок-схемы модели Хищник-Жертва"/>
    </picture>
    <span class="image-description text-italic" itemprop="description">Рисунок 45. Начало сбора блок-схемы модели Хищник-Жертва</span>
</div>  
</li> 

<li><p>Далее создадим первое слагаемое \( ax \) из первого уравнения, как усиленное в \( a \) раз произведение результата интегрирования (см. рис. 46) . Обратите внимание, что в блок <strong>GAINBLK</strong> в данном случае имеет значение символьного параметра \( a \).</p>

 <div class="image-container" itemscope itemtype="http://schema.org/ImageObject">
    <picture>
        <source type="image/webp" srcset="/images/articles/ispolzovanie-simvolnyh-parametrov-i-konteksta-v/14k3t3h/risunok-46-ispolzovanie-simvolnogo-parametra-v-bloke-usilitelya.webp"/>
        <img class="image-in-container" src="http://inclab.ru/images/articles/ispolzovanie-simvolnyh-parametrov-i-konteksta-v/14k3t3h/risunok-46-ispolzovanie-simvolnogo-parametra-v-bloke-usilitelya.jpg" itemprop="contentUrl" alt="Рисунок 46. Использование символьного параметра в блоке усилителя" title="Рисунок 46. Использование символьного параметра в блоке усилителя"/>
    </picture>
    <span class="image-description text-italic" itemprop="description">Рисунок 46. Использование символьного параметра в блоке усилителя</span>
</div>  
 </li>

<li><p>Второе слагаемого первого уравнения  \( \dot{x}=ax-bxy \) представляет собой <em>произведение</em> переменных \( x,y \), образующихся на выходах блоков <strong>INTEGRAL</strong><strong>_</strong><strong>m</strong><strong>, </strong><em>которое</em> усиливается в \( b \) раз и подаётся на вход блока <strong>BIGSOM</strong><strong>_</strong><strong>f</strong> со знаком &laquo;-&raquo;, как показано на рис. 47.</p>
  <div class="image-container" itemscope itemtype="http://schema.org/ImageObject">
    <picture>
        <source type="image/webp" srcset="/images/articles/ispolzovanie-simvolnyh-parametrov-i-konteksta-v/15wcso5/risunok-47-blok-shema-pravoy-chasti-1-go-dif-uravneniya-sistemy-1.webp"/>
        <img class="image-in-container" src="http://inclab.ru/images/articles/ispolzovanie-simvolnyh-parametrov-i-konteksta-v/15wcso5/risunok-47-blok-shema-pravoy-chasti-1-go-dif-uravneniya-sistemy-1.jpg" itemprop="contentUrl" alt="Рисунок 47. Блок-схема правой части 1-го диф. уравнения системы(1)" title="Рисунок 47. Блок-схема правой части 1-го диф. уравнения системы(1)"/>
    </picture>
    <span class="image-description text-italic" itemprop="description">Рисунок 47. Блок-схема правой части 1-го диф. уравнения системы(1)</span>
</div>  
  </li>


<li><p>По аналогии с пунктами 2-3 необходимо провести соединительные линии, обеспечивающие связи блоков для создания уравнения хищников \( \dot{y}=dxy-cy \), входящего в систему (1). Обратите внимание, что во втором уравнении фигурирует множитель \( xy \) с коэффициентом усиления \( d \). Данный множитель присутствует и в уравнении для жертв и формируется на выходе блока-произведения, поэтому дублирование данного произведения излишне, потребуется лишь распараллелить выход блока.&nbsp; В результате должна получиться блок-схема, показанная на рис. 48.</p>
  
   <div class="image-container" itemscope itemtype="http://schema.org/ImageObject">
    <picture>
        <source type="image/webp" srcset="/images/articles/ispolzovanie-simvolnyh-parametrov-i-konteksta-v/12wu197/risunok-48-blok-shema-1-go-i-2-go-chasti-dif-uravneniy-1.webp"/>
        <img class="image-in-container" src="http://inclab.ru/images/articles/ispolzovanie-simvolnyh-parametrov-i-konteksta-v/12wu197/risunok-48-blok-shema-1-go-i-2-go-chasti-dif-uravneniy-1.jpg" itemprop="contentUrl" alt="Рисунок 48. Блок-схема 1-го и 2-го части диф. уравнений (1) " title="Рисунок 48. Блок-схема 1-го и 2-го части диф. уравнений (1) "/>
    </picture>
    <span class="image-description text-italic" itemprop="description">Рисунок 48. Блок-схема 1-го и 2-го части диф. уравнений (1) </span>
</div>  
  </li>

 
<li><p>Далее подсоедините регулярные выходы интегральных блоков <strong>INTEGRAL</strong><strong>_</strong><strong>m</strong> ко входам <strong>TOWS_c, </strong>а управляющие входы блоков<strong> TOWS_c &ndash; </strong>параллельно соедините со входом блока <strong>CLOCK</strong><strong>_</strong><strong>C</strong><strong> (см. рис. 49). </strong></p>
  
   <div class="image-container" itemscope itemtype="http://schema.org/ImageObject">
    <picture>
        <source type="image/webp" srcset="/images/articles/ispolzovanie-simvolnyh-parametrov-i-konteksta-v/8dso7n/risunok-49-blok-shema-sistemy-hischnik-zhertva.webp"/>
        <img class="image-in-container" src="http://inclab.ru/images/articles/ispolzovanie-simvolnyh-parametrov-i-konteksta-v/8dso7n/risunok-49-blok-shema-sistemy-hischnik-zhertva.jpg" itemprop="contentUrl" alt="Рисунок 49. Блок-схема системы Хищник-жертва " title="Рисунок 49. Блок-схема системы Хищник-жертва "/>
    </picture>
    <span class="image-description text-italic" itemprop="description">Рисунок 49. Блок-схема системы Хищник-жертва </span>
</div>  


<p>Блок<strong> TOWS_c </strong>собирает в буфер данные моделирования для дальнейшего их использования в<strong> контексте. &nbsp;</strong>У данного блока нам интересны следующие<strong> внутренние параметры: &nbsp;</strong><strong>Size</strong> <strong>of</strong> <strong>buffer</strong> <strong>- </strong>размер входного буфера, это общее количество значений входной переменной, записанных во время моделирования; <strong>Scilab</strong> <strong>variable</strong> <strong>name</strong> - имя переменной Scilab, по которому в последующем в контексте можно будет обратиться к значениям, записанным в конкретном буфере.</p>
<p>Для буфера, принимающего на вход переменную задайте <strong>Scilab</strong> <strong>variable</strong> <strong>name</strong><strong>=</strong><strong>x</strong><strong>_</strong><strong>prey</strong><strong>. </strong>Для буфера, принимающего на вход переменную задайте <strong>Scilab</strong> <strong>variable</strong> <strong>name</strong><strong>=</strong><strong>y</strong><strong>_</strong><strong>predator</strong><strong>. </strong>Размер буфера в обоих случаях установите равным <strong>1280</strong>.</p>
  </li>

<li><p>Запустите моделирование на 10 сек. и убедитесь, что не возникает ошибок моделирования. Но и графики не появляются.</p></li>
<li><p>Для того, чтобы увидеть графическую и интерпретацию колебаний численности популяций, прибегнем к использованию в контексте заданных переменных <strong>x</strong><strong>_</strong><strong>prey</strong> и <strong>y</strong><strong>_</strong><strong>predator</strong><strong>. <br /> </strong>Откройте окно добавления<strong> контекста </strong>и добавьте к уже имеющимся строкам следующие:</p>
  <div class="image-container">
<p><b>На этом месте располагается листинг, который не может быть правильно отображен в rss-ленте. Перейдите к оригинальной статье: <a href='http://inclab.ru/articles/ispolzovanie-simvolnyh-parametrov-i-konteksta-v'>http://inclab.ru/articles/ispolzovanie-simvolnyh-parametrov-i-konteksta-v</a></b></p>
<span class="image-description text-italic">Задание контекста в Xcos.</span>
</div>	
  
  </li>

<li><p>После запуска моделирования появится окно с одной системой координат с заголовком, подписанными осями и двумя графиками, как показано на рис. 50.</p>
  
   
   <div class="image-container" itemscope itemtype="http://schema.org/ImageObject">
    <picture>
        <source type="image/webp" srcset="/images/articles/ispolzovanie-simvolnyh-parametrov-i-konteksta-v/hkv2bw/risunok-50-modelirovanie-sistemy-hischnik-zhertva.webp"/>
        <img class="image-in-container" src="http://inclab.ru/images/articles/ispolzovanie-simvolnyh-parametrov-i-konteksta-v/hkv2bw/risunok-50-modelirovanie-sistemy-hischnik-zhertva.jpg" itemprop="contentUrl" alt="Рисунок 50. Моделирование системы Хищник-жертва " title="Рисунок 50. Моделирование системы Хищник-жертва "/>
    </picture>
    <span class="image-description text-italic" itemprop="description">Рисунок 50. Моделирование системы Хищник-жертва </span>
</div>  



<p><br /> Обратите внимание, что численность популяций (2-е хищников и 6 жертв) в нулевой момент времени соответствует начальным условиям, заданным в параметрах блоков &ndash; интеграторов.</p>
    </li>
</ol>
  <p></p>
<p>Анализируя график численности популяций, можно сделать следующие выводы:</p>
<ul>
<li><p>численность хищников всегда отстаёт от популяции жертв;</p></li>
<li><p>когда популяция жертв высока, хищники начинают быстро размножаться из-за обилия пищи;</p></li>
<li><p>когда хищников становится слишком много, популяция жертв начинает стремительно сокращаться;</p></li>
<li><p>при недостаточной численности жертв, поголовье хищников начинает сокращаться из-за недостатка пищи;</p></li>
<li><p>когда популяция хищников мала, популяция жертв увеличивается из-за низкого уровня смертности.</p></li>
</ul>
<p>Итак, на примере создания блок-схемы математической модели взаимодействия двух популяций, мы рассмотрели возможность задания переменных в контексте Xcos и их последующего использования в функциональных блоках. Кроме того, мы научились пользоваться блоками буферизации <strong>TOWS_c</strong> и познакомились порядком использования встроенных функций Scilab для построения и настройки отображения графиков.</p>


<p>Посмотреть, как можно манипулировать численностью популяций путём ввода управляющего воздействия в данную систему, можно в статье <a href="http://inclab.ru/xcos/matematicheskaya-model-upravleniya-chislennostyu-populyacii-scilab">статье</a>.</p>


<p>Оригинальный адрес статьи: <a href='http://inclab.ru/articles/ispolzovanie-simvolnyh-parametrov-i-konteksta-v'>http://inclab.ru/articles/ispolzovanie-simvolnyh-parametrov-i-konteksta-v</a><p>]]></description>
			<pubDate>Sun, 08 May 2022 15:26:45 +0400</pubDate>
		</item>
		<item>
			<title><![CDATA[сведение к системе в форме Коши дифференциального уравнения 2-ой степени в Xcos.]]></title>
			<link>http://inclab.ru/articles/svedenie-k-sisteme-v-forme-koshi</link>
			<guid>http://inclab.ru/articles/svedenie-k-sisteme-v-forme-koshi</guid>
			<description><![CDATA[<img src="http://inclab.ru" />Способ 2: сведение к системе в форме Коши<p>Рассмотрим более привычный и распространённый способ численного интегрирования обыкновенных дифференциальных уравнений <em>n</em>-го порядка: сведение к системе из <em>n</em> уравнений 1-го порядка, или, как ещё говорят, к нормальной форме или форме Коши.</p>
<p>Решение систем ОДУ без использования визульных блоков, было рассмотрено ранее в <a href="http://inclab.ru/beginner/reshenie-differencialnih-uravnenij-v-scilab">материале</a>.</p>
<p>Рассмотрим дифференциальное уравнение второго порядка с заданными начальными условиями:</p>

<p class="text-center">\( y''+2y'-0.3y=0, y(0)=1, y'(0)=0 \) (1)</p>
<p>Введём замену переменных, сводящих уравнение (1) к системе из двух уравнений первой степени:</p>

<p class="text-center">\begin{cases} z_1 = y \\ z_2=y'  \end{cases}</p>
<p>получим систему в новых фазовых переменных</p> 

<p class="text-center">
(2)\begin{cases} z_1'=z_2\\  z_2' = -2z_2+0.3z_1\\  \end{cases}  
  
(3)\begin{cases} z_1(0)=1\\  z_2(0)=0\\  \end{cases}
</p>
<p>Данную систему нам и необходимо замоделировать. Итак, разберём, какие из функциональных бликов Xcos понадобятся, чтобы найти решение задачи Коши системы из двух дифференциальных уравнений 1-ой степени (2) с начальными условиями (3).</p>
<p>Система (2) содержит <em>два д.у</em>. первого порядка, а значит нам понадобятся <em>два блока интегратора</em>. Здесь и в дальнейшем для моделирования дифференциальных уравнений, вместо <strong>INTEGRAL</strong><strong>_</strong><strong>f</strong>, будем использовать блок <img class="image-seftcontainer" src="http://inclab.ru/images/articles/svedenie-k-sisteme-v-forme-koshi/1d51k4y/svedenie-k-sisteme-v-forme-koshi-differencialnogo-uravneniya-2-oy-stepeni-v-xcos.jpg" alt="сведение к системе в форме Коши дифференциального уравнения 2-ой степени в Xcos." title="сведение к системе в форме Коши дифференциального уравнения 2-ой степени в Xcos."/>
&nbsp;с палитры &laquo;<strong>Системы с непрерывным временем</strong>&raquo;. Смысловая нагрузка у блока <strong>INTEGRAL</strong><strong>_</strong><strong>m</strong> та же, что и у используемого ранее <strong>INTEGRAL</strong><strong>_</strong><strong>f</strong>, - поиск первообразной сигнала, подающегося на его вход. Однако блок <strong>INTEGRAL</strong><strong>_</strong><strong>m</strong> во-первых, более нагляден, а во-вторых, имеет большее количество настраиваемых внутренних параметров блока.</p>
<p>Итак, приступим к сбору функциональной блок-схемы, реализующей поиск численного решения системы дифференциальных уравнений (2), удовлетворяющего начальным условиям (3). Для создания блок-схемы нам потребуется:</p>
<ol>
<li><p>Добавить два блока <strong>INTEGRAL</strong><strong>_</strong><strong>m</strong> на рабочую область, дав им названия соответствующих фазовых переменных и задать во внутренних параметрах блоков <strong>INTEGRAL</strong><strong>_</strong><strong>m</strong> значения параметра <strong>Initial</strong> <strong>condition</strong> (начальные условия), указанные в (7б). Результатом данных действий будет схема, изображенная на рис.38;</p>
  
 <div class="image-container" itemscope itemtype="http://schema.org/ImageObject">
    <picture>
        <source type="image/webp" srcset="/images/articles/svedenie-k-sisteme-v-forme-koshi/48wjeu/risunok-38-bloki-integratorov-s-zadannymi-nachalnymi-usloviyami.webp"/>
        <img class="image-in-container" src="http://inclab.ru/images/articles/svedenie-k-sisteme-v-forme-koshi/48wjeu/risunok-38-bloki-integratorov-s-zadannymi-nachalnymi-usloviyami.jpg" itemprop="contentUrl" alt="Рисунок 38. Блоки интеграторов с заданными начальными условиями" title="Рисунок 38. Блоки интеграторов с заданными начальными условиями"/>
    </picture>
    <span class="image-description text-italic" itemprop="description">Рисунок 38. Блоки интеграторов с заданными начальными условиями</span>
</div> 
    
  </li>
  
 <li><p>Собирать уравнения системы (2) необходимо, начиная с последнего и двигаясь вверх. Второе уравнение системы (2) имеет вид \(z_2' = -2z_2+0.3z_1 \)и представляет собой сумму двух слагаемых с разными знаками, первое из которых увеличено в 2 раза, а второе в 0.3 раз. <br /> Поэтому нам потребуется добавить блок сумматора <strong>BIGSOM</strong><strong>_</strong><strong>f</strong><strong>,</strong> во внутренних параметрах которого указан знаков слагаемых <strong>[-1;1]</strong> и блоки усилителя <strong>GAINBLK</strong><strong>_</strong><strong>f</strong> со значениями <strong>2</strong> и <strong>3</strong> соответственно. <br /> Далее необходимо составить правую част рассматриваемого уравнения, то есть подать на вход <strong>BIGSOM</strong><strong>_</strong><strong>f</strong><strong>,</strong> советующие слагаемые, как показано на рис. 39.</p>
  
 <div class="image-container" itemscope itemtype="http://schema.org/ImageObject">
    <picture>
        <source type="image/webp" srcset="/images/articles/svedenie-k-sisteme-v-forme-koshi/1pvubpq/risunok-39-blok-shema-pravoy-chasti-vtorogo-dif-uravneniya-sistemy-2.webp"/>
        <img class="image-in-container" src="http://inclab.ru/images/articles/svedenie-k-sisteme-v-forme-koshi/1pvubpq/risunok-39-blok-shema-pravoy-chasti-vtorogo-dif-uravneniya-sistemy-2.jpg" itemprop="contentUrl" alt="Рисунок 39. Блок-схема правой части второго диф.уравнения системы (2)" title="Рисунок 39. Блок-схема правой части второго диф.уравнения системы (2)"/>
    </picture>
    <span class="image-description text-italic" itemprop="description">Рисунок 39. Блок-схема правой части второго диф.уравнения системы (2)</span>
</div> 
   
</li>   
<li><p>Итак, мы получили в <em>сумматоре</em> <em>выражение</em>, которые необходимо <em>проинтегрировать</em>, то есть подать на вход блока-интегратора <strong>INTEGRAL</strong><strong>_</strong><strong>m</strong> , соответствующего фазовой переменной, производная которой стоит в левой части рассматриваемого уравнения. В уравнении \(z_2' = -2z_2+0.3z_1 \)&nbsp;слева стоит \(z_2'  \), а значит, <em>выход сумматора</em> нужно подсоединить ко <em>входу интегратора</em>, отвечающего за переменную &nbsp;\(z_2 \)(см. рис. 40).</p>
  
  <div class="image-container" itemscope itemtype="http://schema.org/ImageObject">
    <picture>
        <source type="image/webp" srcset="/images/articles/svedenie-k-sisteme-v-forme-koshi/1iztk6v/risunok-40-vyvod-vyhoda-summatora-na-vhod-integratora.webp"/>
        <img class="image-in-container" src="http://inclab.ru/images/articles/svedenie-k-sisteme-v-forme-koshi/1iztk6v/risunok-40-vyvod-vyhoda-summatora-na-vhod-integratora.jpg" itemprop="contentUrl" alt="Рисунок 40. Вывод выхода сумматора на вход интегратора" title="Рисунок 40. Вывод выхода сумматора на вход интегратора"/>
    </picture>
    <span class="image-description text-italic" itemprop="description">Рисунок 40. Вывод выхода сумматора на вход интегратора</span>
</div> 
   
  </li>  

  <li><p>Перейдём к построению первого уравнения системы (2), имеющего вид \(z_1'=z_2  \). Фазовая переменная \(z_2 \) формируется как выход соответствующего блока интегратора. Распараллелим выход нижнего&nbsp; блока&nbsp; <strong>INTEGRAL</strong><strong>_</strong><strong>m</strong> , подав его на вход верхнего блока <strong>INTEGRAL</strong><strong>_</strong><strong>m</strong> , который соответствует фазовой переменной \(z_1  \). В результате получим схему, изображенную на рисунке 41.</p>
  
  <div class="image-container" itemscope itemtype="http://schema.org/ImageObject">
    <picture>
        <source type="image/webp" srcset="/images/articles/svedenie-k-sisteme-v-forme-koshi/1ukkerg/risunok-41-blok-shema-zamknutoy-sistemy-dvuh-d-u-1-oy-stepeni-2.webp"/>
        <img class="image-in-container" src="http://inclab.ru/images/articles/svedenie-k-sisteme-v-forme-koshi/1ukkerg/risunok-41-blok-shema-zamknutoy-sistemy-dvuh-d-u-1-oy-stepeni-2.jpg" itemprop="contentUrl" alt="Рисунок 41. Блок-схема замкнутой системы двух д.у. 1-ой степени (2)" title="Рисунок 41. Блок-схема замкнутой системы двух д.у. 1-ой степени (2)"/>
    </picture>
    <span class="image-description text-italic" itemprop="description">Рисунок 41. Блок-схема замкнутой системы двух д.у. 1-ой степени (2)</span>
</div> 
   
  </li> 
 <li><p>Далее нам потребуется вывести графики фазовых переменных \(z_1, z_2  \), для этого добавьте блоки <strong>CMSCOPE</strong>, <strong>END</strong> и <strong>CLOCK</strong><strong>_</strong><strong>c</strong> на рабочую область.</p></li>
<li><p>По традиции, во внутренних параметрах блока <strong>END</strong> указать время <strong>10</strong>сек., на функциональный вход блока <strong>CMSCOPE</strong> нужно подать выход блока <strong>CLOCK</strong><strong>_</strong><strong>c</strong> с параметрами <strong>Period</strong><strong> = 0.1, Время инициализации=0,</strong> а на регулярные входы осциллографа подать распараллеленные интегральные выходы, соответствующие фазовым переменным (рис. 42).</p>
    <div class="image-container" itemscope itemtype="http://schema.org/ImageObject">
    <picture>
        <source type="image/webp" srcset="/images/articles/svedenie-k-sisteme-v-forme-koshi/1cua5vq/risunok-42-blok-shema-poiska-chislennogo-zadachi-koshi-2-3-s-vyvodom-grafikov-fazovyh-peremennyh.webp"/>
        <img class="image-in-container" src="http://inclab.ru/images/articles/svedenie-k-sisteme-v-forme-koshi/1cua5vq/risunok-42-blok-shema-poiska-chislennogo-zadachi-koshi-2-3-s-vyvodom-grafikov-fazovyh-peremennyh.jpg" itemprop="contentUrl" alt="Рисунок 42. Блок-схема поиска численного задачи Коши (2-3) с выводом графиков фазовых переменных" title="Рисунок 42. Блок-схема поиска численного задачи Коши (2-3) с выводом графиков фазовых переменных"/>
    </picture>
    <span class="image-description text-italic" itemprop="description">Рисунок 42. Блок-схема поиска численного задачи Коши (2-3) с выводом графиков фазовых переменных</span>
</div> 
   
  
  </li> 
  <li><p>После запуска моделирования и настройки параметров осциллографа, получим графики (рис. 43).</p>
    <div class="image-container" itemscope itemtype="http://schema.org/ImageObject">
    <picture>
        <source type="image/webp" srcset="/images/articles/svedenie-k-sisteme-v-forme-koshi/1k3osx4/risunok-43-graficheskoe-reshenie-zadachi-koshi-2-3.webp"/>
        <img class="image-in-container" src="http://inclab.ru/images/articles/svedenie-k-sisteme-v-forme-koshi/1k3osx4/risunok-43-graficheskoe-reshenie-zadachi-koshi-2-3.jpg" itemprop="contentUrl" alt="Рисунок 43. Графическое решение задачи Коши (2-3)" title="Рисунок 43. Графическое решение задачи Коши (2-3)"/>
    </picture>
    <span class="image-description text-italic" itemprop="description">Рисунок 43. Графическое решение задачи Коши (2-3)</span>
</div> 
    
  </li> 
  
</ol>
<p></p>
<p>Итак, основными принципами второго способа численного интегрирования дифференциальных уравнений порядка выше 1 являются:</p>
<ul>
<li><p>Сведение дифференциального уравнения <em>n</em>-ой к системе из <em>n</em> уравнений 1-ой степени, путём замены переменных;</p></li>
<li><p>Движение снизу вверх при визуализации уравнений получившейся системы;</p></li>
<li><p>Параллельное включение в схему блоков <strong>INTEGRAL</strong><strong>_</strong><strong>m</strong>, отвечающих за фазовые переменные системы;</p></li>
<li><p>Отображение результата численного моделирования на системах координат фазовая переменная &ndash; время;</p></li>
<li><p>Задание начальных условий в соответствующих блоках-интеграторах;</p></li>
<li><p>Задание отрезка интегрирования во внутренних параметрах блока <strong>END</strong>, начальной точки и шага дискретизации в блоке <strong>CLOCK</strong><strong>_</strong><strong>c</strong>;</p></li>
<li><p>Возможность выбора численного метода поиска решения дифференциального уравнения в настройкам параметров интегрирования.</p></li>
</ul>
<p>Оригинальный адрес статьи: <a href='http://inclab.ru/articles/svedenie-k-sisteme-v-forme-koshi'>http://inclab.ru/articles/svedenie-k-sisteme-v-forme-koshi</a><p>]]></description>
			<pubDate>Thu, 03 Jun 2021 16:53:18 +0400</pubDate>
		</item>
		<item>
			<title><![CDATA[Последовательное интегрирование ОДУ второй степени в Scilab]]></title>
			<link>http://inclab.ru/articles/reshenie-differencialnogo-uravneniya-2-oy-stepeni</link>
			<guid>http://inclab.ru/articles/reshenie-differencialnogo-uravneniya-2-oy-stepeni</guid>
			<description><![CDATA[<img src="http://inclab.ru" />Решение дифференциального уравнения 2-ой степени в Xcos. Способ 1: последовательное интегрирование<p>Дифференциальные уравнения первой степени являются простейшими составляющими математических моделей и используются, чаще всего, для нормализации дифференциальных уравнений высших порядков.</p>
<p>Мы остановимся на рассмотрении ОДУ 2-ой степени и двух подходах поиска его решения посредством составления блок-схем Xcos. Первый подход заключается в последовательном интегрировании правой части дифференциального уравнения, то есть, использования двух блоков-интеграторов.</p>
<h2> Способ 1: последовательное интегрирование</h2>
<p>Рассмотрим дифференциальное уравнение второго порядка с заданными начальными условиями:</p>
<p class="text-center">\( y''-0.5y'+y=0.2x-1.3, y(0)=-1, y'(0)=1 \) (1)</p>
<p>Как и в случае с <a href="http://inclab.ru/xcos/reshenie-differencialnogo-uravneniya-1-oy-stepeni">д.у. первой степени</a>, уравнение (1) необходимо привести к виду, где слева от знака &laquo;равно&raquo; будет наивысшая производная, а справа &ndash; остальные слагаемые, то есть к следующему виду:</p>
<p class="text-center">\( y''=0.5y'-y+0.2x-1.3 \) (2)</p>
<p>И в последующем рассмотреть сумму, стоящих справа от знака &laquo;равно&raquo; слагаемых, при этом, приняв каждую из производных <em>y</em>, как интеграл от исходной суммы. То есть, условно произвести последовательную замену и подстановку производных и воспользоваться принципом, что \( \int{y''}=y'\), а \( \int{\int{y''}}=\int{y'}=y\). Рассмотрим данный процесс на нашем примере.</p>

<p>Чтобы составить блок-схему дифференциального уравнения второй степени (2) нужно:</p>
<ol>
<li><p>Добавить блок сумматора <strong>BIGSOM</strong><strong>_</strong><strong>f</strong><strong>.</strong> Во внутренних параметрах данного блока указать вектор знаков слагаемых. В нашем случае справа стоят 4 слагаемых, знак первого слагаемого &laquo;+&raquo;, далее &laquo;-&raquo;, потом опять &laquo;-&raquo; и снова &laquo;+&raquo;, поэтому во внутреннем параметре <strong>Input</strong> <strong>ports</strong> <strong>signs</strong> нужно указать <strong>[1;-1;1;-1];</strong></p></li>
<li><p>Добавить два интегратора (так как уравнение 2-й степени), указав соответствующие начальные условия из (1) во внутренних параметрах каждого из блоков <strong>INTEGRAL</strong><strong>_</strong><strong>f</strong><strong>;</strong></p>

<p>Соединённых последовательно блок сумматора и интеграторов. На данном этапе должна получиться схема, изображённая на рис. 33.<br /> <br /> </p>
<div class="image-container" itemscope itemtype="http://schema.org/ImageObject">
    <picture>
        <source type="image/webp" srcset="/images/articles/reshenie-differencialnogo-uravneniya-2-oy-stepeni/xlkqwh/risunok-33-blok-shema-iz-integratorov-i-summatora.webp"/>
        <img class="image-in-container" src="http://inclab.ru/images/articles/reshenie-differencialnogo-uravneniya-2-oy-stepeni/xlkqwh/risunok-33-blok-shema-iz-integratorov-i-summatora.jpg" itemprop="contentUrl" alt="Рисунок 33. Блок-схема из интеграторов и сумматора." title="Рисунок 33. Блок-схема из интеграторов и сумматора."/>
    </picture>
    <span class="image-description text-italic" itemprop="description">Рисунок 33. Блок-схема из интеграторов и сумматора.</span>
</div>
  </li>


<li><p>Далее необходимо добавить в сумму слагаемые \( y \) и \( y' \) с соответствующими множителями, как показано на рис. 34. Здесь первые два слагаемых в блоке сумматора образуют сумму \( 0.5y'-y\)</p>
  
<div class="image-container" itemscope itemtype="http://schema.org/ImageObject">
    <picture>
        <source type="image/webp" srcset="/images/articles/reshenie-differencialnogo-uravneniya-2-oy-stepeni/8eushq/risunok-34-dobavlenie-soedinitelnyh-liniy-mezhdu-integratorami-i-summatorom.webp"/>
        <img class="image-in-container" src="http://inclab.ru/images/articles/reshenie-differencialnogo-uravneniya-2-oy-stepeni/8eushq/risunok-34-dobavlenie-soedinitelnyh-liniy-mezhdu-integratorami-i-summatorom.jpg" itemprop="contentUrl" alt="Рисунок 34. Добавление соединительных линий между интеграторами и сумматором." title="Рисунок 34. Добавление соединительных линий между интеграторами и сумматором."/>
    </picture>
    <span class="image-description text-italic" itemprop="description">Рисунок 34. Добавление соединительных линий между интеграторами и сумматором.</span>
</div>  
  
  </li>
<li><p>В сумматоре остались два свободных положительных входа. На них нужно подать независимую переменную , усиленную блоком <strong>GAINBLK</strong><strong>_</strong><strong>f</strong> и константу <br /> см. рис.35.<br /> </p>
  
<div class="image-container" itemscope itemtype="http://schema.org/ImageObject">
    <picture>
        <source type="image/webp" srcset="/images/articles/reshenie-differencialnogo-uravneniya-2-oy-stepeni/14jiwck/risunok-35-blok-shema-pravoy-chasti-differencialnogo-uravneniya-1.webp"/>
        <img class="image-in-container" src="http://inclab.ru/images/articles/reshenie-differencialnogo-uravneniya-2-oy-stepeni/14jiwck/risunok-35-blok-shema-pravoy-chasti-differencialnogo-uravneniya-1.jpg" itemprop="contentUrl" alt="Рисунок 35. Блок-схема правой части дифференциального уравнения (1)." title="Рисунок 35. Блок-схема правой части дифференциального уравнения (1)."/>
    </picture>
    <span class="image-description text-italic" itemprop="description">Рисунок 35. Блок-схема правой части дифференциального уравнения (1).</span>
</div>  
    
  </li>
<li><p>Для вывода графической информации, используйте блоки <strong>MUX</strong>, <strong>CMSCOPE</strong>, <strong>END</strong> и <strong>CLOCK</strong><strong>_</strong><strong>c</strong> с уже известным функционалом.</p></li>
</ol>

<p>Итоговая блок-схема для поиска решения ОДУ с заданными начальными условиями изображена на рисунке 36. </p>

<div class="image-container" itemscope itemtype="http://schema.org/ImageObject">
    <picture>
        <source type="image/webp" srcset="/images/articles/reshenie-differencialnogo-uravneniya-2-oy-stepeni/nryis0/risunok-36-blok-shema-chislennogo-poiska-resheniya-zadachi-koshi-dlya-odu-2-go-poryadka-putem-posled.webp"/>
        <img class="image-in-container" src="http://inclab.ru/images/articles/reshenie-differencialnogo-uravneniya-2-oy-stepeni/nryis0/risunok-36-blok-shema-chislennogo-poiska-resheniya-zadachi-koshi-dlya-odu-2-go-poryadka-putem-posled.jpg" itemprop="contentUrl" alt="Рисунок 36. Блок-схема численного поиска решения задачи Коши для ОДУ 2-го порядка путем последовательного интегрирования." title="Рисунок 36. Блок-схема численного поиска решения задачи Коши для ОДУ 2-го порядка путем последовательного интегрирования."/>
    </picture>
    <span class="image-description text-italic" itemprop="description">Рисунок 36. Блок-схема численного поиска решения задачи Коши для ОДУ 2-го порядка путем последовательного интегрирования.</span>
</div>  
 
<p>Моделирование проводилось на временном отрезке [0;10] с шагом дискретизации 0.1. На рис. 37. Представлены графики: зелёным цветом - искомой функции \( y \) и красным - её производной \( y' \).</p>

<div class="image-container" itemscope itemtype="http://schema.org/ImageObject">
    <picture>
        <source type="image/webp" srcset="/images/articles/reshenie-differencialnogo-uravneniya-2-oy-stepeni/13wh6d7/risunok-37-reshenie-zadachi-koshi-dlya-odu-2-go-poryadka.webp"/>
        <img class="image-in-container" src="http://inclab.ru/images/articles/reshenie-differencialnogo-uravneniya-2-oy-stepeni/13wh6d7/risunok-37-reshenie-zadachi-koshi-dlya-odu-2-go-poryadka.jpg" itemprop="contentUrl" alt="Рисунок 37. Решение задачи Коши для ОДУ 2-го порядка" title="Рисунок 37. Решение задачи Коши для ОДУ 2-го порядка"/>
    </picture>
    <span class="image-description text-italic" itemprop="description">Рисунок 37. Решение задачи Коши для ОДУ 2-го порядка</span>
</div>  
  
<p></p>
<p>Мы разобрали на примере один из способов численного интегрирования в Xcos дифференциальных уравнений степени, выше 1 с заданными начальными условиями. Обозначим основные принципы рассмотренного подхода последовательного интегрирования:</p>
<ul>
<li><p>Приведение дифференциального уравнения <em>n</em>-ой к виду, когда слева от знака &laquo;равно&raquo; находится только производная;</p></li>
<li><p>Использование блока <strong>TIME</strong><strong>_</strong><strong>f</strong> для подачи независимой переменной на вход функциональных блоков;</p></li>
<li><p>Последовательное подключение блоков <strong>INTEGRAL</strong><strong>_</strong><strong>f</strong> для обозначения производных порядка до <em>(</em><em>n</em><em>-1)</em> искомой функции;</p></li>
<li><p>Задание начальных условий в соответствующих блоках-интеграторах;</p></li>
<li><p>Задание отрезка интегрирования во внутренних параметрах блока <strong>END</strong>, начальной точки и шага дискретизации в блоке <strong>CLOCK</strong><strong>_</strong><strong>c</strong>;</p></li>
<li><p>Возможность выбора численного метода поиска решения дифференциального уравнения в настройкам параметров интегрирования.</p></li>
</ul>



<p>Оригинальный адрес статьи: <a href='http://inclab.ru/articles/reshenie-differencialnogo-uravneniya-2-oy-stepeni'>http://inclab.ru/articles/reshenie-differencialnogo-uravneniya-2-oy-stepeni</a><p>]]></description>
			<pubDate>Thu, 03 Jun 2021 16:51:53 +0400</pubDate>
		</item>
		<item>
			<title><![CDATA[Сравнение численного и аналитического решений дифура в Scilab]]></title>
			<link>http://inclab.ru/articles/reshenie-differencialnogo-uravneniya-1-oy-stepeni</link>
			<guid>http://inclab.ru/articles/reshenie-differencialnogo-uravneniya-1-oy-stepeni</guid>
			<description><![CDATA[<img src="http://inclab.ru" />Визуальное моделирование динамических систем в Xcos<p>Перейдём, наконец к визуальному моделированию динамических систем в Xcos. Не секрет, что различные механические, физические, экономические и многие другие системы реальной жизни описываются в виде математических моделей на основе дифференциальных уравнений. </p>
<p>Рассмотрим порядок решения задачи Коши для дифференциального уравнения первого порядка с заданным начальным условием:</p>

<p class="text-center">\( y'-4cos(3x)=1, y(0)=-2 \) (1)</p>
<p>Аналитическое решения данного уравнения имеет вид:</p>
<p class="text-center">\( y=x+\frac{4}{3}sin(3x)-2 \) (2)</p>

<p>Перейдём к построению блок-схемы в редакторе Xcos. Наша <em>блок-схема</em> будет состоять из <em>двух частей</em>: части, моделирующей найденное <em>аналитическое решение</em> задачи Коши (2) и части, отвечающей за <em>численное интегрирование</em> исходного дифференциального уравнения с заданными начальными условиями (1). Мы ни в коем случае не желаем запутать читателя или усложнить схему. Целью построения блок-схемы из двух является <em>демонстрация идентичности решений</em> &ndash; аналитического и численного.</p>
<p>Для моделирования блока аналитического решения нам понадобится единственный новый блок <img class="image-seftcontainer" src="http://inclab.ru/images/articles/reshenie-differencialnogo-uravneniya-1-oy-stepeni/1b44es3/sravnenie-chislennogo-i-analiticheskogo-resheniy-difura-v-scilab.jpg" alt="Сравнение численного и аналитического решений дифура в Scilab" title="Сравнение численного и аналитического решений дифура в Scilab"/>
 с палитры &laquo;<strong>Источники сигналов и воздействий</strong>&raquo; , необходимый непосредственно для генерации сигнала. Данный блок имеет только один регулярный выход и не имеет внутренних параметров; он необходим для подачи временных отсчетов, синхронизированных в соответствии с параметрами блоков <strong>CLOCK</strong><strong>_</strong><strong>c</strong> и <strong>END</strong>.</p>
<p>Итак, исходя из того, что моделируемое уравнение (2) имеем три слагаемых, нам понадобится блок <strong>BIGSOM</strong><strong>_</strong><strong>f</strong><strong>,</strong> два входа которого будут положительными, а один, соответствующий константе &laquo;-2&raquo; - отрицательным. Сложносочинённым в моделируемом уравнении представляется второе слагаемое \( \frac{4}{3}sin(3x) \), которое представляет из себя произведение константы \( \frac{4}{3} \)&nbsp;&nbsp;и синусоиды \( sin(\cdot) \), причём, аргумент синусоиды сам представляет собой увеличенный в три раза&nbsp; \( x \). Осуществлять вывод графиков моделируемых уравнений будет <strong>CMSCOPE</strong><strong>. </strong>Блок-схема уравнения (2) представлена на рис. 30. Обратите внимание на использование блока <strong>GAINBLK</strong><strong>_</strong><strong>f</strong><strong>, </strong>усиливающего исходный сигнал в три раза, а <em>затем</em> подающий его в функцию синуса.</p>

<div class="image-container" itemscope itemtype="http://schema.org/ImageObject">
    <picture>
        <source type="image/webp" srcset="/images/articles/reshenie-differencialnogo-uravneniya-1-oy-stepeni/wl76bg/risunok-30-blok-shema-analiticheskogo-resheniya-2.webp"/>
        <img class="image-in-container" src="http://inclab.ru/images/articles/reshenie-differencialnogo-uravneniya-1-oy-stepeni/wl76bg/risunok-30-blok-shema-analiticheskogo-resheniya-2.jpg" itemprop="contentUrl" alt="Рисунок 30. Блок схема аналитического решения (2)." title="Рисунок 30. Блок схема аналитического решения (2)."/>
    </picture>
    <span class="image-description text-italic" itemprop="description">Рисунок 30. Блок схема аналитического решения (2).</span>
</div>

<p>&nbsp;</p>
<p>Теперь перейдём к реализации блок-схемы <em>дифференциального уравнения первой степени</em> в среде визуального моделирования Xcos.</p>
<p>Первое, что необходимо сделать &ndash; это привести дифференциальное уравнение к интегрируемому виду, где <em>слева</em> от знака &laquo;равно&raquo; стоит <em>производная</em>, а <em>справа</em> &ndash; <em>остальные</em> слагаемые. В рассматриваемом примере, уравнение (1) преобразуется к виду:</p>

<p class="text-center">\( y'=1+4cos(3x) \) (3)</p>

<p>Далее, нам необходимо собрать из блоков Xcos правую часть уравнения (3), состоящую из двух слагаемых, а результат направить на блок интегрирования <img class="image-seftcontainer" src="http://inclab.ru/images/articles/reshenie-differencialnogo-uravneniya-1-oy-stepeni/12l14m6/sravnenie-chislennogo-i-analiticheskogo-resheniy-difura-v-scilab.jpg" alt="Сравнение численного и аналитического решений дифура в Scilab" title="Сравнение численного и аналитического решений дифура в Scilab"/>
, который располагается на палитре &laquo;<strong>Системы с непрерывным временем</strong>&raquo;. У блока INTEGRAL_f всего один внутренний параметр <strong>Initial</strong> <strong>state</strong><strong>, </strong>в котором указывается значение в начальный момент времени. В нашем случае <em>начальные условия</em> заданы в (1) и имеют вид \( y(0)=-2 \), а значит, параметр <strong>Initial</strong> <strong>state</strong> блока <strong>INTEGRAL</strong><strong>_</strong><strong>f</strong> нужно установить равным <strong>-2</strong>. На выходе у блока-интегратора будет результат интегрирования правой части д.у. с н.у. (1), то есть численное решение исходной задачи Коши для дифференциального уравнения первой степени.</p>
<p>Итоговая блок-схема, выводящая аналитическое и численное решения на одну систему координат, представлена на рисунке 31.</p>

<div class="image-container" itemscope itemtype="http://schema.org/ImageObject">
    <picture>
        <source type="image/webp" srcset="/images/articles/reshenie-differencialnogo-uravneniya-1-oy-stepeni/1ksej3b/risunok-31-blok-shema-vyvoda-chislennogo-i-analiticheskogo-resheniy-z-koshi-differencialnogo-uravnen.webp"/>
        <img class="image-in-container" src="http://inclab.ru/images/articles/reshenie-differencialnogo-uravneniya-1-oy-stepeni/1ksej3b/risunok-31-blok-shema-vyvoda-chislennogo-i-analiticheskogo-resheniy-z-koshi-differencialnogo-uravnen.jpg" itemprop="contentUrl" alt="Рисунок 31. Блок-схема вывода численного и аналитического решений з. Коши дифференциального уравнения" title="Рисунок 31. Блок-схема вывода численного и аналитического решений з. Коши дифференциального уравнения"/>
    </picture>
    <span class="image-description text-italic" itemprop="description">Рисунок 31. Блок-схема вывода численного и аналитического решений з. Коши дифференциального уравнения</span>
</div>
<p>Моделирование проводилось на временном отрезке [0;5] с шагом дискретизации 0.1. Результат моделирования представлен на рис. 32.</p>
<div class="image-container" itemscope itemtype="http://schema.org/ImageObject">
    <picture>
        <source type="image/webp" srcset="/images/articles/reshenie-differencialnogo-uravneniya-1-oy-stepeni/65xj9j/risunok-32-sovpadayuschie-chislennoe-goluboy-grafik-i-analiticheskoe-tochechnyy-grafik-resheniya.webp"/>
        <img class="image-in-container" src="http://inclab.ru/images/articles/reshenie-differencialnogo-uravneniya-1-oy-stepeni/65xj9j/risunok-32-sovpadayuschie-chislennoe-goluboy-grafik-i-analiticheskoe-tochechnyy-grafik-resheniya.jpg" itemprop="contentUrl" alt="Рисунок 32. Совпадающие численное (голубой график) и аналитическое (точечный график) решения." title="Рисунок 32. Совпадающие численное (голубой график) и аналитическое (точечный график) решения."/>
    </picture>
    <span class="image-description text-italic" itemprop="description">Рисунок 32. Совпадающие численное (голубой график) и аналитическое (точечный график) решения.</span>
</div>
<p>&nbsp;</p>
<p>Итак, нами рассмотрен подход к решению задачи Коши для ОДУ 1-ой степени.</p>
<p>Основные принципы данного подхода следующие:</p>
<ul>
<li><p>Приведение дифференциального уравнения к виду, когда слева от знака &laquo;равно&raquo; находится только производная;</p></li>
<li><p>Использование блока <strong>TIME</strong><strong>_</strong><strong>f</strong> для подачи сигнала на вход функциональных блоков;</p></li>
<li><p>Использование блока <strong>INTEGRAL</strong><strong>_</strong><strong>f</strong> для поиска численного решения дифференциального уравнения;</p></li>
<li><p>Задание отрезка интегрирования во внутренних параметрах блока <strong>END</strong>, начальной точки и шага дискретизации в блоке <strong>CLOCK</strong><strong>_</strong><strong>c</strong>;</p></li>
<li><p>Возможность выбора численного метода поиска решения дифференциального уравнения в настройкам параметров интегрирования.</p></li>
</ul><p>Оригинальный адрес статьи: <a href='http://inclab.ru/articles/reshenie-differencialnogo-uravneniya-1-oy-stepeni'>http://inclab.ru/articles/reshenie-differencialnogo-uravneniya-1-oy-stepeni</a><p>]]></description>
			<pubDate>Thu, 03 Jun 2021 16:50:41 +0400</pubDate>
		</item>
		<item>
			<title><![CDATA[Использование random и time_delay Scilab Xcos]]></title>
			<link>http://inclab.ru/articles/zashumlenie-i-zapazdyvanie-signalov-v-scilab</link>
			<guid>http://inclab.ru/articles/zashumlenie-i-zapazdyvanie-signalov-v-scilab</guid>
			<description><![CDATA[<img src="http://inclab.ru" />рассмотрим примеры применения Xcos блоков, которые могут быть полезны для реализации различных математических моделей <p>В данной статье рассмотрим примеры применения Xcos блоков, которые могут быть полезны для реализации различных математических моделей и проведения численных экспериментов.</p>
<p>Начнём с генерации гауссового &laquo;белого шума&raquo;. &laquo;Белый шум&raquo; &mdash; это стационарный шум, спектральные составляющие которого равномерно распределены по всему диапазону задействованных частот. Иногда ошибочно предполагается, что гауссовый шум эквивалентен &laquo;белому шуму&raquo;. Однако эти понятия не эквивалентны, так как гауссовый шум предполагает распределение значений сигнала в виде нормального распределения, а термин &laquo;белый&raquo; имеет отношение к корреляции сигнала в два различных момента. &laquo;Белый шум&raquo; может иметь любое распределение &mdash; как Гаусса, так и распределение Пуассона, Коши и т. д. Гауссовый &laquo;белый шум&raquo; в качестве модели хорошо подходит для математического описания многих природных процессов.</p>
<p>&laquo;Белый шум&raquo; можно рассматривать как случайный процесс с нулевым математический ожиданием, и если речь идёт о гауссовом &laquo;белом шуме&raquo;, то данный процесс должен иметь нормальное распределение.</p>


<h2>Генерация случайных чисел в Scilab Xcos</h2>
<p>В Xcos за генерацию случайных чисел отвечает блок <strong>RAND</strong><strong>_</strong><strong>m</strong> <img class="image-seftcontainer" src="http://inclab.ru/images/articles/zashumlenie-i-zapazdyvanie-signalov-v-scilab/d65d0s/ispolzovanie-random-i-time_delay-scilab-xcos.jpg" alt="Использование random и time_delay Scilab Xcos" title="Использование random и time_delay Scilab Xcos"/>
, который располагается на палитре &laquo;<strong>Источники сигналов и воздействий</strong>&raquo;. При помощи данного блока можно сгенерировать случайный процесс, распределённый по нормальному или равномерному закону, причём внутренние параметры блока позволяют задавать минимальное и максимальное значения для равномерного распределения, и мат. ожидание и дисперсию для нормального распределения (см. рис. 24).&nbsp;</p>
<p>На рис. 24. заданы значеня:<br/>
Flag = 0  равномерное распределение от А до А+В. <br/>
Flag = 1  нормальное распределение с м.о.=А и СКО=В.
</p>

<div class="image-container" itemscope itemtype="http://schema.org/ImageObject">
    <picture>
        <source type="image/webp" srcset="/images/articles/zashumlenie-i-zapazdyvanie-signalov-v-scilab/1xrrf5p/risunok-24-vnutrennie-parametry-bloka-generatora-sluchaynyh-chisel.webp"/>
        <img class="image-in-container" src="http://inclab.ru/images/articles/zashumlenie-i-zapazdyvanie-signalov-v-scilab/1xrrf5p/risunok-24-vnutrennie-parametry-bloka-generatora-sluchaynyh-chisel.jpg" itemprop="contentUrl" alt="Рисунок 24. Внутренние параметры блока-генератора случайных чисел." title="Рисунок 24. Внутренние параметры блока-генератора случайных чисел."/>
    </picture>
    <span class="image-description text-italic" itemprop="description">Рисунок 24. Внутренние параметры блока-генератора случайных чисел.</span>
</div>

<p>Рассмотрим пример построения диаграммы, реализующей генерацию &laquo;белого шума&raquo;, равномерно распределённого от -2 до 1 и гауссового &laquo;белого шума&raquo; с нулевым средним и среднеквадратичным отклонением равным 1.</p>
<p>Для этого нам понадобятся два блока <strong>RAND</strong><strong>_</strong><strong>m</strong><strong>, </strong>блок <strong>CLOCK</strong><strong>_</strong><strong>c</strong> <strong>, </strong>блок <strong>CMSCOPE</strong> и ещё один новый блок <img class="image-seftcontainer" src="http://inclab.ru/images/articles/zashumlenie-i-zapazdyvanie-signalov-v-scilab/khih3y/ispolzovanie-random-i-time_delay-scilab-xcos.jpg" alt="Использование random и time_delay Scilab Xcos" title="Использование random и time_delay Scilab Xcos"/>
<strong>&nbsp;</strong>с палитры<strong> &laquo;Регистрирующие устройства&raquo;. </strong></p>
<p>Блок <strong>END</strong> имеет всего один параметр, отвечающий за длительность эксперимента и нужен для того, чтобы не исправлять дополнительно параметры моделирования; ни выходов, ни входов он не имеет.</p>
<p>&nbsp;</p>
<p>Приступим к построению схемы.</p>
<ol>
<li><p>Для начала установите время моделирования равное 10 сек., для это во внутреннем параметре блока <strong>END</strong> напишите<strong> 10;</strong></p></li>
<li><p><strong>Далее </strong>соедините регулярные (чёрные) выходы блоков <strong>RAND</strong><strong>_</strong><strong>m</strong> с соответствующими входами осциллографа<strong>;</strong></p></li>
<li><p>К управляющим (красным) входам блоков <strong>RAND</strong><strong>_</strong><strong>m</strong> и <strong>CMSCOPE</strong> подведите соединительные линии, выходящие из блока <strong>CLOCK</strong><strong>_</strong><strong>c</strong>;</p></li>
<li><p>Установите шаг дискретизации равный одой сотой во внутренних параметрах часов;</p></li>
<li><p>Настройте параметры генераторов случайных чисел в соответствии с заданием. Особое внимание уделите параметру В;</p></li>
<li><p>Отредактируйте внутренние параметры блока <strong>CMSCOPE</strong> так, чтобы графики хорошо помещались в границы координатных сеток;</p></li>
<li><p>Добавьте текстовые комментарии рядом с блоками-генераторами. Для этого дважды кликните левой кнопкой мыши по рабочей области рядом с блоком и введите справочный текст со значениями параметров блоков;</p></li>
<li><p>Измените цвета соединительных линий между блоками <strong>RAND</strong><strong>_</strong><strong>m</strong> и <strong>CMSCOPE</strong> в соответствии с цветами графиков<strong>. </strong>Для этого кликните правой кнопкой мыши по соединительной линии и в выпадающем меню выберите<strong> &laquo;Формат&raquo; - &laquo;Цвет границы&raquo;.</strong></p></li>
</ol>
<p>Схема, которая должна получиться после всех манипуляций и случайные процессы, реализованные данной блок-схемой представлены на рисунке 25 а-б).</p>

<div class="image-container" itemscope itemtype="http://schema.org/ImageObject">
    <picture>
        <source type="image/webp" srcset="/images/articles/zashumlenie-i-zapazdyvanie-signalov-v-scilab/1aadk0j/risunok-25-a-blok-shema-realizuyuschaya-postroenie-dvuh-sluchaynyh-processov.webp"/>
        <img class="image-in-container" src="http://inclab.ru/images/articles/zashumlenie-i-zapazdyvanie-signalov-v-scilab/1aadk0j/risunok-25-a-blok-shema-realizuyuschaya-postroenie-dvuh-sluchaynyh-processov.jpg" itemprop="contentUrl" alt="Рисунок 25 a. Блок-схема, реализующая построение двух случайных процессов." title="Рисунок 25 a. Блок-схема, реализующая построение двух случайных процессов."/>
    </picture>
    <span class="image-description text-italic" itemprop="description">Рисунок 25 a. Блок-схема, реализующая построение двух случайных процессов.</span>
</div>

<p>Генерация «Белого шума» с разными распределениями Scilab Xcos.</p>

<div class="image-container" itemscope itemtype="http://schema.org/ImageObject">
    <picture>
        <source type="image/webp" srcset="/images/articles/zashumlenie-i-zapazdyvanie-signalov-v-scilab/1smewsv/risunok-25-b-siniy---ravnomerno-raspredelennyy-i-zelenyy---gaussovyy-belyy-shum.webp"/>
        <img class="image-in-container" src="http://inclab.ru/images/articles/zashumlenie-i-zapazdyvanie-signalov-v-scilab/1smewsv/risunok-25-b-siniy---ravnomerno-raspredelennyy-i-zelenyy---gaussovyy-belyy-shum.jpg" itemprop="contentUrl" alt="Рисунок 25 б. Синий - равномерно распределённый и зелёный - гауссовый «белый шум»." title="Рисунок 25 б. Синий - равномерно распределённый и зелёный - гауссовый «белый шум»."/>
    </picture>
    <span class="image-description text-italic" itemprop="description">Рисунок 25 б. Синий - равномерно распределённый и зелёный - гауссовый «белый шум».</span>
</div>

<h2>Задание для самостоятельной работы</h2>
<p>Рассмотреть еще один вариант использования генератора случайных чисел, на этот раз для зашумления синусоидального сигнала, мы предлагаем читателю самостоятельно. Данный приём часто используется для измерения частотных характеристик различных линейных динамических систем, таких как усилители, электронные фильтры, дискретные системы управления и т. д.</p>
<p>Вашей задачей будет сгенерировать два сигнала:</p>
<ul>
<li><p>1-й синусоидальный сигнал с равномерно распределёнными от -1 до 1 помехами, представляющий из себя сумму синусоиды и случайного процесса;</p></li>
<li><p>2-й случайный процесс, ограниченный сверху и снизу синусоидами амплитуды = 1, представляющий из себя произведение функции <em>sin</em><em>(</em><em>t</em><em>)</em> и случайной величины, генерируемой блоком <strong>RAND</strong><strong>_</strong><strong>m</strong><strong>.</strong></p></li>
</ul>
<p>Результат визуального моделирования необходимо разделить на две системы координат: на первой отобразить график 1-го зашумлённого синусоидального сигнала и функции <em>sin</em><em>(</em><em>t</em><em>), а </em>на второй координатной сетке вывести 2-й случайный процесс и синусоиды, его ограничивающие.</p>
<p>Для создания необходимой блок-схемы понадобятся уже известные блоки: блок <strong>RAND</strong><strong>_</strong><strong>m</strong><strong>, </strong>генератор сигнала <strong>GENSIN</strong><strong>_</strong><strong>f</strong><strong>, </strong>блок для создания отражённой синусоиды <strong>GAINBLK</strong><strong>, </strong>два мультиплексора<strong>, </strong>осциллятор с векторным входом<strong>, блоки </strong><strong>CLOCK</strong><strong>_</strong><strong>c</strong> и <strong>END</strong><strong>. </strong></p>


<p>И два новых блока сложения и умножения: <img class="image-seftcontainer" src="http://inclab.ru/images/articles/zashumlenie-i-zapazdyvanie-signalov-v-scilab/dqhtin/ispolzovanie-random-i-time_delay-scilab-xcos.jpg" alt="Использование random и time_delay Scilab Xcos" title="Использование random и time_delay Scilab Xcos"/>
&nbsp;и <img class="image-seftcontainer" src="http://inclab.ru/images/articles/zashumlenie-i-zapazdyvanie-signalov-v-scilab/et5bdl/ispolzovanie-random-i-time_delay-scilab-xcos.jpg" alt="Использование random и time_delay Scilab Xcos" title="Использование random и time_delay Scilab Xcos"/>
&nbsp;с палитры<strong> &laquo;Математические операции&raquo;.</strong></p>
<p>У новых блоков <strong>BIGSOM</strong><strong>_</strong><strong>f</strong><strong>&nbsp; </strong>и <strong>PRODUCT</strong> нам интересен внутренний параметр <strong>Inputs</strong> <strong>ports</strong> <strong>signs</strong><strong>, </strong>где<em> в векторной форме в квадратных скобках через </em>точку с запятой<em> &laquo;;&raquo;</em> указываются <em>знаки слагаемых</em>, входящих в состав суммы и <em>знаки множителей</em>, в случае произведения. Для <strong>положительного</strong> слагаемого/множителя следует указать <strong>1</strong>, а для <strong>отрицательного</strong> поставить <strong>-1</strong>. Отметим, что <em>количество единиц</em> в скобках соответствует <em>количеству</em> регулярных <em>входов</em> блоков <strong>BIGSOM</strong><strong>_</strong><strong>f</strong> и <strong>PRODUCT</strong><strong>.</strong></p>
<p>В рассматриваемом случае и блок <strong>BIGSOM</strong><strong>_</strong><strong>f</strong><strong>, </strong>и блок <strong>PRODUCT</strong> будут иметь<strong> внутренние параметры [1;1].</strong></p>
<p>После добавления всех необходимых блоков на рабочую область, соедините соответствующие по цвету входы и выходы, настройте внутренние параметры у блоков, убедитесь в соразмерности векторных входов и выходов блоков и запустите моделирование для 10 сек.</p>
<p>В итоге у вас должно получиться 5 графиков &ndash; два на первой системе координат и три на второй. Результат моделирования представлен на рис. 26. </p>

<div class="image-container" itemscope itemtype="http://schema.org/ImageObject">
    <picture>
        <source type="image/webp" srcset="/images/articles/zashumlenie-i-zapazdyvanie-signalov-v-scilab/1bc4xym/risunok-risunok-26-sinusoidopodobnye-sluchaynye-processy.webp"/>
        <img class="image-in-container" src="http://inclab.ru/images/articles/zashumlenie-i-zapazdyvanie-signalov-v-scilab/1bc4xym/risunok-risunok-26-sinusoidopodobnye-sluchaynye-processy.jpg" itemprop="contentUrl" alt="Рисунок Рисунок 26. Синусоидоподобные случайные процессы" title="Рисунок Рисунок 26. Синусоидоподобные случайные процессы"/>
    </picture>
    <span class="image-description text-italic" itemprop="description">Рисунок Рисунок 26. Синусоидоподобные случайные процессы</span>
</div>


<p>Блок-схема изображена на рис. 27.</p>

<div class="image-container" itemscope itemtype="http://schema.org/ImageObject">
    <picture>
        <source type="image/webp" srcset="/images/articles/zashumlenie-i-zapazdyvanie-signalov-v-scilab/nijptj/risunok-27-blok-shema-xcos-realizuyuschaya-razlichnye-zashumlennye-signaly-s-pomoschyu-generatora-sl.webp"/>
        <img class="image-in-container" src="http://inclab.ru/images/articles/zashumlenie-i-zapazdyvanie-signalov-v-scilab/nijptj/risunok-27-blok-shema-xcos-realizuyuschaya-razlichnye-zashumlennye-signaly-s-pomoschyu-generatora-sl.jpg" itemprop="contentUrl" alt="Рисунок 27. Блок-схема Xcos, реализующая различные зашумлённые сигналы с помощью генератора случайных чисел RAND_m." title="Рисунок 27. Блок-схема Xcos, реализующая различные зашумлённые сигналы с помощью генератора случайных чисел RAND_m."/>
    </picture>
    <span class="image-description text-italic" itemprop="description">Рисунок 27. Блок-схема Xcos, реализующая различные зашумлённые сигналы с помощью генератора случайных чисел RAND_m.</span>
</div>


<h2>Генерация запаздывающего сигнала в Scilab Xcos</h2>

<p>Рассмотрим ещё один полезный в процессе генерации сигналов блок <img class="image-seftcontainer" src="http://inclab.ru/images/articles/zashumlenie-i-zapazdyvanie-signalov-v-scilab/11da3ya/ispolzovanie-random-i-time_delay-scilab-xcos.jpg" alt="Использование random и time_delay Scilab Xcos" title="Использование random и time_delay Scilab Xcos"/>
, с палитры &laquo;<strong>Системы с непрерывным временем</strong>&raquo; осуществляющий задержку сигнала во времени.</p>
<p><strong>Внутренние параметры</strong> данного блока следующие:</p>
<ul>
<li><p><strong>Delay</strong> - определяется задержку по времени <em>выходного</em> сигнала;&nbsp;</p></li>
<li><p><strong>Initial</strong> <strong>input</strong> - определяет значение <em>выходного</em> сигнала на протяжении указанного времени&nbsp; задержки;</p></li>
<li><p><strong>Buffer</strong> <strong>size</strong>, по умолчанию равный 1024, определяет количество отсчетов <em>входного</em> сигнала, которые будут храниться внутри блока задержки. Параметр <strong>Buffer</strong> <strong>size</strong> должен быть <em>равным или больше</em>, чем <em>число точек</em>, в которых <em>вычисляется входной</em> сигнал за время <strong>Delay</strong><strong>.</strong></p></li>
</ul>
<p>Блок <strong>TIME</strong><strong>_</strong><strong>DELAY</strong> принимает на вход некоторый сигнал и <em>на протяжении</em> <em>времени</em>, указанном во внутреннем параметре <strong>Delay</strong>, подаёт на свой выход <strong>значение</strong>, равное внутреннему <em>параметру</em> <strong>Initial</strong> <strong>input</strong>, сохраняя, при этом, значения входного сигнала в буфере.</p>
<p><em>По истечении времени задержки</em>, блок <strong>TIME</strong><strong>_</strong><strong>DELAY</strong> подаёт на свой <em>выход</em> значения, ранее записанные в <em>буфер</em>, начиная с первого, при этом, продолжая пополнять значения буфера, удаляя уже использованные.</p>
<p>Пользуясь описанным функционалом блока временнОй задержки, рассмотрим на примере создание простейшего запаздывающего сигнала и реализацию синусоидального сигнала, зашумлённого с определённого момента времени (см. рис. 28).</p>

<div class="image-container" itemscope itemtype="http://schema.org/ImageObject">
    <picture>
        <source type="image/webp" srcset="/images/articles/zashumlenie-i-zapazdyvanie-signalov-v-scilab/17oahe4/risunok-28-rezultat-ispolzovanie-bloka-zaderzhki-time_delay.webp"/>
        <img class="image-in-container" src="http://inclab.ru/images/articles/zashumlenie-i-zapazdyvanie-signalov-v-scilab/17oahe4/risunok-28-rezultat-ispolzovanie-bloka-zaderzhki-time_delay.jpg" itemprop="contentUrl" alt="Рисунок 28. Результат использование блока задержки TIME_DELAY." title="Рисунок 28. Результат использование блока задержки TIME_DELAY."/>
    </picture>
    <span class="image-description text-italic" itemprop="description">Рисунок 28. Результат использование блока задержки TIME_DELAY.</span>
</div>

<p>Блок-схема, реализующая описанную задачу будет состоять из следующих блоков: блоков инициализации и указания времени моделирования <strong>CLOCK</strong><strong>_</strong><strong>c</strong> и <strong>END</strong><strong>, </strong>одного векторного осциллографа <strong>CMSCOPE</strong><strong>, </strong>двух мультиплексоров <strong>MUX</strong> для вывода двух синусоид на каждую систему координат<strong>, </strong>блоков-генераторов синусоидального сигнала и случайных значений <strong>GENSIN</strong><strong>_</strong><strong>f</strong> и <strong>RAND</strong><strong>_</strong><strong>m</strong><strong>, </strong>блока суммирования <strong>BIGSOM</strong><strong>_</strong><strong>f</strong><strong>, </strong>и двух блоков задержки сигнала <strong>TIME</strong><strong>_</strong><strong>DELAY</strong><strong>.</strong></p>
<p>Реализация вывода первой пары графиков на одну систему координат не должна вызвать у читатель сложностей. Отметим, что осуществляется данный вывод с использованием первого векторного входа условной размерности 2 на блоке осциллятора <strong>CMSCOPE</strong><strong>. </strong>Данный вход формируется как объединение двух сигналов: исходной синусоиды и синусоиды, проходящей через блок задержки <strong>TIME</strong><strong>_</strong><strong>DELAY</strong> с <strong>внутренними параметрами </strong><strong>Delay</strong><strong>=4.5, </strong><strong>Initial</strong> <strong>input</strong><strong>=-0.5.</strong></p>
<p>На реализации же зашумлённого с некоторого момента времени сигнала остановимся подробнее. Выше, когда речь шла о двух типах зашумленных сигналов (см. рис. 26), первый синусоидоподобный <strong>сигнал</strong> генерировался как <strong>сумма</strong> функции <em>sin</em><em>(</em><em>t</em><em>)</em> (блока <strong>GENSIN</strong><strong>_</strong><strong>f</strong><strong>)&nbsp; </strong>и случайного процесса (блока <strong>RAND</strong><strong>_</strong><strong>m</strong><strong>)</strong>. То есть, при гипотетическом обнулении слагаемого, вносящего шум, сумма данных блоков представляла бы чистую синусоиду.</p>
<p>Отталкиваясь от этого факта, мы можем настроить параметры блока задержки <strong>TIME</strong><strong>_</strong><strong>DELAY</strong><strong> так</strong>, чтобы первые 4 сек. в синусоиду <strong>GENSIN</strong><strong>_</strong><strong>f</strong>&nbsp; не вносилось бы вклада с блока шума <strong>RAND</strong><strong>_</strong><strong>m</strong><strong>.</strong> А по истечении этих 4-х секунд, указанных как <strong>Delay</strong><strong>=4</strong>, функция <em>sin</em><em>(</em><em>t</em><em>)</em> была бы осложнена случайными величинами, генерируемыми блоком <strong>RAND</strong><strong>_</strong><strong>m</strong>, например, с нормальным распределением и дисперсией=0.2.</p>
<p>Описанное выше в виде Xcos-блоков собирается в схему, изображённую на рисунке 29.</p>

<div class="image-container" itemscope itemtype="http://schema.org/ImageObject">
    <picture>
        <source type="image/webp" srcset="/images/articles/zashumlenie-i-zapazdyvanie-signalov-v-scilab/ea3d20/risunok-29-blok-shema-realizuyuschaya-sinusoidalnye-signaly-s-zapazdyvaniem-s-pomoschyu-bloka-time_d.webp"/>
        <img class="image-in-container" src="http://inclab.ru/images/articles/zashumlenie-i-zapazdyvanie-signalov-v-scilab/ea3d20/risunok-29-blok-shema-realizuyuschaya-sinusoidalnye-signaly-s-zapazdyvaniem-s-pomoschyu-bloka-time_d.jpg" itemprop="contentUrl" alt="Рисунок 29. Блок схема, реализующая синусоидальные сигналы с запаздыванием с помощью блока TIME_DELAY." title="Рисунок 29. Блок схема, реализующая синусоидальные сигналы с запаздыванием с помощью блока TIME_DELAY."/>
    </picture>
    <span class="image-description text-italic" itemprop="description">Рисунок 29. Блок схема, реализующая синусоидальные сигналы с запаздыванием с помощью блока TIME_DELAY.</span>
</div>

<p>Отдельно хотелось бы отметить настройку внутренних параметров блока с векторным входом <strong>CMSCOPE</strong><strong>.</strong> Обратите внимание на поля, выделенные красными прямоугольниками на рис. 30. Данные поля настраиваются в соответствии с размерностью входов блока осциллографа, где числа соответствуют настройкам соответствующих входов, считая с верхнего.</p>

<div class="image-container" itemscope itemtype="http://schema.org/ImageObject">
    <picture>
        <source type="image/webp" srcset="/images/articles/zashumlenie-i-zapazdyvanie-signalov-v-scilab/11ydlq2/risunok-30-parametry-oscillografa-cmscope-s-dvumya-vektornymi-vhodami-uslovnoy-razmernosti-2.webp"/>
        <img class="image-in-container" src="http://inclab.ru/images/articles/zashumlenie-i-zapazdyvanie-signalov-v-scilab/11ydlq2/risunok-30-parametry-oscillografa-cmscope-s-dvumya-vektornymi-vhodami-uslovnoy-razmernosti-2.jpg" itemprop="contentUrl" alt="Рисунок 30. Параметры осциллографа CMSCOPE с двумя векторными входами условной размерности 2." title="Рисунок 30. Параметры осциллографа CMSCOPE с двумя векторными входами условной размерности 2."/>
    </picture>
    <span class="image-description text-italic" itemprop="description">Рисунок 30. Параметры осциллографа CMSCOPE с двумя векторными входами условной размерности 2.</span>
</div>



















<p>Оригинальный адрес статьи: <a href='http://inclab.ru/articles/zashumlenie-i-zapazdyvanie-signalov-v-scilab'>http://inclab.ru/articles/zashumlenie-i-zapazdyvanie-signalov-v-scilab</a><p>]]></description>
			<pubDate>Thu, 03 Jun 2021 16:49:03 +0400</pubDate>
		</item>
		<item>
			<title><![CDATA[Отображение нескольких графиков в Xcos]]></title>
			<link>http://inclab.ru/articles/vektornye-vhodyvyhody-blokov-i-ih-sorazmernost-Xcos</link>
			<guid>http://inclab.ru/articles/vektornye-vhodyvyhody-blokov-i-ih-sorazmernost-Xcos</guid>
			<description><![CDATA[<img src="http://inclab.ru" />векторизацией входа/выхода блока в диаграмме Xcos<p>Мы рассмотрели пример построения простейшей диаграммы в Xcos, реализуемой блоками с минимальным числом портов и изменением только необходимых параметров. Однако, чаще всего для решения задачи визуального моделирования, блоки в Xcos должны иметь больше одного входа и выхода, кроме того, один из выходов блока может быть параллельно подключен к нескольким блокам.</p>
<p>Явление многомерного подключения блоков в диаграмме Xcos назовём <em>векторизацией входа/выхода блока</em>. Очевидно, в случае многомерных портов блоков, имеет смысл говорить об их <em>соразмерности</em>.&nbsp;</p>
<p>В процессе моделирования нередко встаёт вопрос, как, например, отобразить графики двух различных процессов в одной системе координат или, напротив, по одному графику на каждую систему координат с различными внутренними параметрами соответствующих блоков. Безусловно, пакет Xcos должен удовлетворять запросам пользователя, а значит содержит в себе инструментарий для реализации подобных задач.</p>
<p>В предыдущей статье мы познакомились с одним из блоков, использующихся для графического представления результата моделирования на временной оси &ndash; <strong>CSCOPE</strong><strong>.&nbsp; </strong>Данный блок используется для графического представления результата моделирования на временной оси. Вход у него только один - векторный, а значит, с помощью блока <strong>CSCOPE</strong> мы можем отобразить только одну координатную сетку, но со множеством графиков на ней. Осталось только понять, как объединить множество графиков в векторный объект.</p>

<h2>Отображение нескольких графиков в одной системе координат</h2>
<p>За объединение входных данных в один выходной многомерный поток отвечает блок &nbsp;<img class="image-seftcontainer" src="http://inclab.ru/images/articles/vektornye-vhodyvyhody-blokov-i-ih-sorazmernost-Xcos/afbvvg/otobrazhenie-neskolkih-grafikov-v-xcos.jpg" alt="Отображение нескольких графиков в Xcos" title="Отображение нескольких графиков в Xcos"/>
 - мультиплексор, который располагается на палитре <strong>&laquo;Маршрутизация сигналов&raquo;.</strong> Подсказкой к понимаю его функционала служат два входных треугольничка и один выходной. Данный блок может принимать на вход не только два, но и любое конечное число входных сигналов, в том числе, таких, которые сами по себе уже являются векторными выходами других блоков.</p>
<p>Внутренний параметр у блока <strong>MUX</strong> всего один &ndash; <strong>Number</strong> <strong>of</strong> <strong>input</strong> <strong>ports</strong> <strong>or</strong> <strong>vector</strong> <strong>of</strong> <strong>sizes</strong> и определяется автоматически, путем конкатенации входных сигналов. Значение данного параметра необходимо для корректировки внутренних настроек блоков, принимающих на вход сигнал, испускаемый <strong>MUX</strong><strong>&rsquo;ом,</strong> в нашем случаем, блока <strong>CSCOPE</strong>.</p>

<p>Перейдём, наконец, к примеру использования мультиплексора. Для этого на рабочую область уже собранной модели из блоков <strong>CSCOPE</strong><strong>, </strong><strong>GENSIN</strong><strong>_</strong><strong>f</strong><strong>, </strong><strong>CLOCK</strong><strong>_</strong><strong>c</strong> добавьте блок <strong>MUX</strong> <br /> и блок <img class="image-seftcontainer" src="http://inclab.ru/images/articles/vektornye-vhodyvyhody-blokov-i-ih-sorazmernost-Xcos/14oqyw5/otobrazhenie-neskolkih-grafikov-v-xcos.jpg" alt="Отображение нескольких графиков в Xcos" title="Отображение нескольких графиков в Xcos"/>
<strong>&nbsp;</strong>с вкладки <strong>&laquo;Математические операции&raquo;.</strong></p>
<p>&nbsp;</p>
<p>Далее выполните действия:</p>
<ol>
<li><p>Удалите соединительную линию между выходом генератора синусоиды и входом осциллографа;</p></li>
<li><p>Соедините выход блока <strong>GENSIN</strong><strong>_</strong><strong>f</strong> со входом блока <strong>GAINBLK</strong><strong>_</strong><strong>f</strong><strong>;</strong></p></li>
<li><p>Соедините выход блока <strong>GAINBLK</strong><strong>_</strong><strong>f</strong> с верхним входом блока <strong>MUX</strong><strong>;</strong></p></li>
<li><p>Выход блока <strong>MUX</strong> соедините со входом блока <strong>CSCOPE</strong>;</p></li>
<li><p><em>Распараллельте</em> синусоидальный сигнал. Для этого <em>из</em> существующей <em>соединительной линии</em> между <strong>GENSIN</strong><strong>_</strong><strong>f</strong> и <strong>GAINBLK</strong><strong>_</strong><strong>f</strong> вытяните еще одну линию и подведите её ко второму входу блока <strong>MUX</strong>. (Линию можно вытянуть и в противоположном направлении: от входа блока <strong>MUX</strong> провести до существующей соединительной линии между <strong>GENSIN</strong><strong>_</strong><strong>f</strong> и <strong>GAINBLK</strong><strong>_</strong><strong>f</strong>). Если всё сделано правильно, новая соединительная линия как бы &laquo;прилипнет&raquo; к существующей, а в месте их соединения появится оранжевый квадратик.</p>

<p>Убедитесь, что все соединения установлены <em>правильно</em>: соединительная линия при наведении на неё мыши, должна стать <em>зелёной</em>. В результате должна получиться модель, как показано на рис. 14.</p>

<div class="image-container" itemscope itemtype="http://schema.org/ImageObject">
    <picture>
        <source type="image/webp" srcset="/images/articles/vektornye-vhodyvyhody-blokov-i-ih-sorazmernost-Xcos/nq4hw3/risunok-14-sozdanie-blochnoy-diagrammy-s-multipleksorom-i-redaktirovanie-stilya-soedinitelnyh-liniy.webp"/>
        <img class="image-in-container" src="http://inclab.ru/images/articles/vektornye-vhodyvyhody-blokov-i-ih-sorazmernost-Xcos/nq4hw3/risunok-14-sozdanie-blochnoy-diagrammy-s-multipleksorom-i-redaktirovanie-stilya-soedinitelnyh-liniy.jpg" itemprop="contentUrl" alt="Рисунок 14. Создание блочной диаграммы с мультиплексором и редактирование стиля соединительных линий." title="Рисунок 14. Создание блочной диаграммы с мультиплексором и редактирование стиля соединительных линий."/>
    </picture>
    <span class="image-description text-italic" itemprop="description">Рисунок 14. Создание блочной диаграммы с мультиплексором и редактирование стиля соединительных линий.</span>
</div>

<p>Расположение блоков в рабочей области Xcos может быть произвольным, но как правило, их располагают таким образом, чтобы обеспечить наибольшую наглядность и удобочитаемость модели. Для большего эстетического эффекта, соединительные линии могут быть выровнены путем вызова <strong>Меню соединительной линии:</strong> для этого кликните правой кнопкой мыши по линии, в выпадающем меню выберите пункт <strong>Стиль соединения</strong>, далее <br /> стиль <strong>Optimal</strong> (см. рис. 14). Результатом редактирования стиля соединений будет модель, приведённая на рис. 15.</p>

<div class="image-container" itemscope itemtype="http://schema.org/ImageObject">
    <picture>
        <source type="image/webp" srcset="/images/articles/vektornye-vhodyvyhody-blokov-i-ih-sorazmernost-Xcos/t666ex/risunok-15-bloki-soedinennye-optimalnymi-tipami-liniy.webp"/>
        <img class="image-in-container" src="http://inclab.ru/images/articles/vektornye-vhodyvyhody-blokov-i-ih-sorazmernost-Xcos/t666ex/risunok-15-bloki-soedinennye-optimalnymi-tipami-liniy.jpg" itemprop="contentUrl" alt="Рисунок 15. Блоки, соединённые оптимальными типами линий." title="Рисунок 15. Блоки, соединённые оптимальными типами линий."/>
    </picture>
    <span class="image-description text-italic" itemprop="description">Рисунок 15. Блоки, соединённые оптимальными типами линий.</span>
</div>


<p>Перейдём теперь к редактированию внутренних параметров блоков <strong>GAINBLK</strong><strong>_</strong><strong>f</strong> и <strong>GENSIN</strong><strong>_</strong><strong>f</strong>:</p>
</li>
  
<li><p>Установите внутренний параметр блока <strong>GAINBLK</strong><strong>_</strong><strong>f</strong> равным<strong> 2;</strong></p></li>
<li><p>Установите внутренний параметры блока <strong>GENSIN</strong><strong>_</strong><strong>f</strong> следующими<strong>:</strong> Абсолютная величина=0.5, Частота=1, Фаза=0.</p>
   
  </li>
</ol>

<p>Запустите моделирование и убедитесь, что в одной системе координат отображаются две синусоиды, амплитуда одной из которых равна 0.5, а второй 2*0.5=1 (рис. 16).</p>

<div class="image-container" itemscope itemtype="http://schema.org/ImageObject">
    <picture>
        <source type="image/webp" srcset="/images/articles/vektornye-vhodyvyhody-blokov-i-ih-sorazmernost-Xcos/12wghjp/risunok-16-otobrazhenie-dvuh-sinusoidalnyh-signalov-v-odnoy-sisteme-koordinat.webp"/>
        <img class="image-in-container" src="http://inclab.ru/images/articles/vektornye-vhodyvyhody-blokov-i-ih-sorazmernost-Xcos/12wghjp/risunok-16-otobrazhenie-dvuh-sinusoidalnyh-signalov-v-odnoy-sisteme-koordinat.jpg" itemprop="contentUrl" alt="Рисунок 16. Отображение двух синусоидальных сигналов в одной системе координат." title="Рисунок 16. Отображение двух синусоидальных сигналов в одной системе координат."/>
    </picture>
    <span class="image-description text-italic" itemprop="description">Рисунок 16. Отображение двух синусоидальных сигналов в одной системе координат.</span>
</div>

<h2>Отображение нескольких систем координат в одном графическом окне</h2>
<p>Итак, мы рассмотрели пример отображения нескольких графиков в одной системе координат с помощью объединяющего блока <strong>MUX</strong><strong> и </strong>блока-рисовальщика осциллографа <strong>CSCOPE</strong><strong>.</strong></p>
<p>&nbsp;</p>
<p>Далее перейдём к вопросу отображения нескольких систем координат в одном графическом окне. Для этого нам понадобится блок <img class="image-seftcontainer" src="http://inclab.ru/images/articles/vektornye-vhodyvyhody-blokov-i-ih-sorazmernost-Xcos/1921412/otobrazhenie-neskolkih-grafikov-v-xcos.jpg" alt="Отображение нескольких графиков в Xcos" title="Отображение нескольких графиков в Xcos"/>
&nbsp;с вкладки <strong>&laquo;Регистрирующие устройства&raquo;. &nbsp;</strong></p>
<p>Блок <strong>CMSCOPE</strong> имеет то же назначение, что и блок <strong>CSCOPE</strong> &ndash; отображать графический результат моделирования, но, в отличие от <strong>CSCOPE</strong>, умеет разбивать графики по разным системам координат, при этом количество черных входных треугольничков будет соответствовать количеству отображаемых систем координат. Но с этим блоком не всё так просто.</p>
<p>&nbsp;</p>
<p><em>Больший функционал, как известно, влечёт бОльшую ответственность.</em> При использовании многопортового блока <strong>CMSCOPE</strong> <em>придётся строго следить за соразмерностью портов </em>выхода сигнала и значений параметров самого блока.</p>
<p>Чтобы лучше разобраться в функционале данного блока, рассмотрим использование <strong>CMSCOPE</strong> на примере. Воспользуемся имеющейся блок-схемой, заменив на ней блок <strong>CSCOPE</strong> блоком <strong>CMSCOPE</strong><strong>. </strong></p>

<p>&nbsp;</p>
<p>Для этого проделайте следующие действия:</p>
<ol>
<li><p>Удалите блок осциллографа <strong>CSCOPE</strong><strong>. </strong>Заметьте, что его соединительные линии удалятся автоматически;</p></li>
<li><p>Добавьте блок <strong>CMSCOPE</strong> с вкладки<strong> &laquo;Регистрирующие устройства&raquo;;</strong></p></li>
<li><p>Соедините выход блока <strong>CLOCK</strong><strong>_</strong>c с красным входом блока <strong>CMSCOPE</strong><strong>;</strong></p></li>
<li><p>Соедините выход блока <strong>MUX</strong> с верхним черным входом блока <strong>CMSCOPE</strong>;</p></li>
<li><p>Распараллельте синусоидальный сигнал. Для этого из существующей соединительной линии между блоками <strong>GENSIN</strong><strong>_</strong><strong>f</strong> и <strong>GAINBLK</strong><strong>_</strong><strong>f</strong> вытяните еще одну линию и подведите её ко второму черному входу блока <strong>CMSCOPE</strong>;</p></li>
<li><p>Отредактируйте<strong> Стиль соединения</strong> линий.</p></li>
</ol>
<p>В результате у Вас должна получиться схема, изображенная на рисунке 17.</p>

<div class="image-container" itemscope itemtype="http://schema.org/ImageObject">
    <picture>
        <source type="image/webp" srcset="/images/articles/vektornye-vhodyvyhody-blokov-i-ih-sorazmernost-Xcos/1zv6ji/risunok-17-blok-shema-s-ispolzovaniem-bloka-cmscope.webp"/>
        <img class="image-in-container" src="http://inclab.ru/images/articles/vektornye-vhodyvyhody-blokov-i-ih-sorazmernost-Xcos/1zv6ji/risunok-17-blok-shema-s-ispolzovaniem-bloka-cmscope.jpg" itemprop="contentUrl" alt="Рисунок 17. Блок схема с использованием блока CMSCOPE" title="Рисунок 17. Блок схема с использованием блока CMSCOPE"/>
    </picture>
    <span class="image-description text-italic" itemprop="description">Рисунок 17. Блок схема с использованием блока CMSCOPE</span>
</div>

<p>Запустите моделирование. И.. Получите ошибку (см. рис. 18).</p>

<div class="image-container" itemscope itemtype="http://schema.org/ImageObject">
    <picture>
        <source type="image/webp" srcset="/images/articles/vektornye-vhodyvyhody-blokov-i-ih-sorazmernost-Xcos/17501pp/risunok-18-oshibka-nesootvetstviya-razmernosti-portov-na-primere-ispolzovaniem-bloka-cmscope.webp"/>
        <img class="image-in-container" src="http://inclab.ru/images/articles/vektornye-vhodyvyhody-blokov-i-ih-sorazmernost-Xcos/17501pp/risunok-18-oshibka-nesootvetstviya-razmernosti-portov-na-primere-ispolzovaniem-bloka-cmscope.jpg" itemprop="contentUrl" alt="Рисунок 18. Ошибка несоответствия размерности портов на примере использованием блока CMSCOPE" title="Рисунок 18. Ошибка несоответствия размерности портов на примере использованием блока CMSCOPE"/>
    </picture>
    <span class="image-description text-italic" itemprop="description">Рисунок 18. Ошибка несоответствия размерности портов на примере использованием блока CMSCOPE</span>
</div>


<p>Вот мы и подобрались к вопросу соответствия размерностей векторных портов. Сообщение об ошибке гласит <strong>&laquo;</strong><strong>Problem</strong> <strong>in</strong> <strong>port</strong> <strong>size</strong> <strong>or</strong> <strong>type</strong><strong>&raquo;,</strong> что означает несоответствие в типе или размерности портов. Разберёмся, почему возникла данная ошибка и как избежать её появления в будущем.</p>
<p>Рассмотрим нижний порт блока <strong>CMSCOPE</strong><strong>. </strong>На него передаётся <span style="color: red">сгенерированная синусоида</span>, не претерпевающая по дороге никаких изменений. На рисунке 19 это <span style="color: red">красная траектория</span> движения сигнала и сиреневая стрелочка у <span style="color: red">нижнего входа</span> <strong>CMSCOPE</strong>.</p>
<p><em>Итак, по красной траектории движется один сигнал, условная размерность которого равна 1</em> (см. рис 19).</p>
<p>Теперь обратимся к верхнему порту блока <strong>CMSCOPE</strong><strong>.</strong> Рассмотрим, что за сигнал попадает на него. Верхний вход блока <strong>CMSCOPE</strong> принимает на себя выход блока <strong>MUX</strong>.</p>
<p>Выше мы выяснили, что блок <strong>MUX</strong> объединяет входные данные в векторный объект. В нашем случае в мультиплексор входит два сигнала: <br/><span style="color: green"> ! первый</span>, движущийся по <span style="color: green">зелёной траектории</span>, который представляет собой<span style="color: green"> синусоиду с увеличенной в 2 раза амплитудой</span> и<br/><span style="color: blue"> ! второй &ndash; исходная синусоида</span>, которая движется по <span style="color: blue">синей траектории</span>. <br/>&nbsp;Соответственно, на выходе у <strong>MUX</strong><strong>&rsquo;а</strong> получается объект условной размерности 2, который подаётся на верхний чёрный вход осциллографа (розовые стрелки на рисунке 19).</p>
<br/>
<p><em>Итак, по сине-зелёной траектории движется сигнал, условная размерность которого равна 2 </em>(см. рис 19).</p>

<div class="image-container" itemscope itemtype="http://schema.org/ImageObject">
    <picture>
        <source type="image/webp" srcset="/images/articles/vektornye-vhodyvyhody-blokov-i-ih-sorazmernost-Xcos/1wrjhjp/risunok-19-traektorii-dvizheniya-signalov-v-blok-sheme-xcos.webp"/>
        <img class="image-in-container" src="http://inclab.ru/images/articles/vektornye-vhodyvyhody-blokov-i-ih-sorazmernost-Xcos/1wrjhjp/risunok-19-traektorii-dvizheniya-signalov-v-blok-sheme-xcos.jpg" itemprop="contentUrl" alt="Рисунок 19. Траектории движения сигналов в блок-схеме Xcos." title="Рисунок 19. Траектории движения сигналов в блок-схеме Xcos."/>
    </picture>
    <span class="image-description text-italic" itemprop="description">Рисунок 19. Траектории движения сигналов в блок-схеме Xcos.</span>
</div>

<p>Дело в том, что <em>по умолчанию, все порты блока </em><strong><em>CMSCOPE</em></strong> <em>имеют размерность 1<strong>.</strong></em> Следовательно, для соразмерности портов блок-схемы, необходимо прибегнуть к редактирования <strong>внутренних параметров</strong> блока <strong>CMSCOPE</strong><strong>. </strong>Щёлкните по блоку осциллографа правой кнопкой мыши и выберите пункт<strong> &laquo;Параметры блока&raquo;.</strong></p>
<p>В Открывшемся окне внутренних параметров блока, необходимо исправить значение параметра <strong>Input</strong> <strong>ports</strong> <strong>sizes</strong><strong>. </strong>В поле значений данного параметра <em>через пробел</em> указываются <em>размерности</em> соответствующих входов осциллографа, <em>начиная с верхнего</em>. В нашем случае на верхний черный порт подаётся сигнал условной размерности 2, а на нижний &ndash; размерности 1, поэтому необходимо указать &laquo;<strong>2 1</strong>&raquo; (см. рис. 20).</p>
<p>На данном этапе, становится понятно, что на графическом окне будет располагаться две системы координат, на одной из которых будут отображаться два синусоидальных сигнала, а на другой &ndash; один. Соответственно, мы можем настроить параметры координатных сеток не зависимо друг от друга для наилучшего отображения графиков на каждой из них.</p>
<p>Для корректного отображения синусоиды с амплитудой=0.5 следует изменить вертикальные пределы второго графика, рисующего исходную синусоиду, движущуюся по красной траектории. Поэтому, в полях значений параметров <strong>Ymin</strong> <strong>vector</strong> и <strong>Ymax</strong> <strong>vector</strong><strong>, </strong>необходимо изменить числа, соответствующие второй системе координат, а именно, указать значения -0.5 и 0.5 соответственно, как показано на рисунке 20<strong>.</strong></p>

<div class="image-container" itemscope itemtype="http://schema.org/ImageObject">
    <picture>
        <source type="image/webp" srcset="/images/articles/vektornye-vhodyvyhody-blokov-i-ih-sorazmernost-Xcos/dz2551/risunok-20-redaktirovanie-vnutrennih-parametrov-bloka-cmscope.webp"/>
        <img class="image-in-container" src="http://inclab.ru/images/articles/vektornye-vhodyvyhody-blokov-i-ih-sorazmernost-Xcos/dz2551/risunok-20-redaktirovanie-vnutrennih-parametrov-bloka-cmscope.jpg" itemprop="contentUrl" alt="Рисунок 20. Редактирование внутренних параметров блока CMSCOPE." title="Рисунок 20. Редактирование внутренних параметров блока CMSCOPE."/>
    </picture>
    <span class="image-description text-italic" itemprop="description">Рисунок 20. Редактирование внутренних параметров блока CMSCOPE.</span>
</div>

<p>Ещё одним векторным параметром, за которым следует внимательно следить при настройке параметров блока <strong>CMSCOPE</strong> является параметр <strong>Refresh</strong> <strong>period</strong><strong>, </strong>отвечающий за максимальное одновременное отображение значений графика в системе координат. Поясним, пожалуй, что это значит. Например, для процесса моделируемого на временном отрезке t=[0..40] при значении параметра <strong>Refresh</strong> <strong>period</strong><strong>=30 </strong>на систему координат будет выведен график для значений t=[0..30], <em>после чего, сетка обновится</em>, и будут выведены оставшиеся значения для t=[31..40]. Как и в случае с рассмотренными векторными параметрами, значения <strong>Refresh</strong> <strong>period</strong> для каждой из систем координат вводятся через пробел, причём число значений должно совпадать с числом входов у блока <strong>CMSCOPE</strong>.</p>
<p>Результат моделирования рассмотренного примера с настроенными параметрами моделирования и непосредственно блоков, представлен на рисунке 21.</p>

<div class="image-container" itemscope itemtype="http://schema.org/ImageObject">
    <picture>
        <source type="image/webp" srcset="/images/articles/vektornye-vhodyvyhody-blokov-i-ih-sorazmernost-Xcos/1a8sp4p/risunok-21-otobrazhenie-dvuh-sistem-koordinat-s-pomoschyu-bloka-cmscope.webp"/>
        <img class="image-in-container" src="http://inclab.ru/images/articles/vektornye-vhodyvyhody-blokov-i-ih-sorazmernost-Xcos/1a8sp4p/risunok-21-otobrazhenie-dvuh-sistem-koordinat-s-pomoschyu-bloka-cmscope.jpg" itemprop="contentUrl" alt="Рисунок 21. Отображение двух систем координат с помощью блока CMSCOPE." title="Рисунок 21. Отображение двух систем координат с помощью блока CMSCOPE."/>
    </picture>
    <span class="image-description text-italic" itemprop="description">Рисунок 21. Отображение двух систем координат с помощью блока CMSCOPE.</span>
</div>

<h2>Задание для самостоятельной работы</h2>
<p>Для лучшего понимания работы блоков с векторными входами и выходами, мы предлагаем читателю самостоятельно создать блок-схему, реализующую вывод <em>трёх</em> <em>систем</em> координат.</p>
<p>На <em>первой</em> из которых будут изображены <em>три</em> синусоидальных <em>сигнала</em> с различной амплитудой, один из которых будет отражён относительно горизонтальной оси.</p>
<p>На <em>второй</em> системе координат следует ввести <em>один</em> синусоидальный <em>сигнал</em>, <em>обработанный</em> с помощью одной из функций, расположенных на палитре <strong>&laquo;Математические операции&raquo;,</strong> например с использованием блока вычисления квадратного корня <strong>SQRT</strong><strong>.</strong></p>
<p>На <em>третьей</em> координатной сетке нужно вывести <em>пару </em>синусоид: одну &ndash; с исходными параметрами блока генератора <strong>GENSIN</strong><strong>_</strong><strong>f</strong>, а вторую &ndash; соответствующую знаковой функции <em>sgn</em><em>(</em><em>sin</em><em>(</em><em>t</em><em>)),</em> где</p>
<p>блок для реализации функции <em>sgn</em><em>(</em><em>sin</em><em>(</em><em>t</em><em>)),</em> &nbsp;содержится на палитре <strong>&laquo;Математические операции&raquo;.</strong></p>
<p>Результат моделирования описанных процессов изображён на рисунке 22.</p>

<div class="image-container" itemscope itemtype="http://schema.org/ImageObject">
    <picture>
        <source type="image/webp" srcset="/images/articles/vektornye-vhodyvyhody-blokov-i-ih-sorazmernost-Xcos/a2ywcy/risunok-22-rezultat-vizualnogo-modelirovaniya-s-ispolzovaniem-matematicheskih-funkciy-summatora-i-os.webp"/>
        <img class="image-in-container" src="http://inclab.ru/images/articles/vektornye-vhodyvyhody-blokov-i-ih-sorazmernost-Xcos/a2ywcy/risunok-22-rezultat-vizualnogo-modelirovaniya-s-ispolzovaniem-matematicheskih-funkciy-summatora-i-os.jpg" itemprop="contentUrl" alt="Рисунок 22. Результат визуального моделирования с использованием математических функций, сумматора и осциллографа с векторными входами." title="Рисунок 22. Результат визуального моделирования с использованием математических функций, сумматора и осциллографа с векторными входами."/>
    </picture>
    <span class="image-description text-italic" itemprop="description">Рисунок 22. Результат визуального моделирования с использованием математических функций, сумматора и осциллографа с векторными входами.</span>
</div>

<p>Блок-схему, реализующую построение данных графиков, мы тоже приведём в помощь читателю (см. рис. 23), но настоятельно рекомендуем обращаться к ней только в случае крайних затруднений.</p>
<p>Настройку же внутренних параметров блоков, входящих в состав данной схемы, мы возлагаем исключительно на плечи обучающегося.</p>

<div class="image-container" itemscope itemtype="http://schema.org/ImageObject">
    <picture>
        <source type="image/webp" srcset="/images/articles/vektornye-vhodyvyhody-blokov-i-ih-sorazmernost-Xcos/fpp98t/risunok-23-blok-shema-modeliruyuschaya-sinusoidalnye-signaly.webp"/>
        <img class="image-in-container" src="http://inclab.ru/images/articles/vektornye-vhodyvyhody-blokov-i-ih-sorazmernost-Xcos/fpp98t/risunok-23-blok-shema-modeliruyuschaya-sinusoidalnye-signaly.jpg" itemprop="contentUrl" alt="Рисунок 23. Блок-схема, моделирующая синусоидальные сигналы" title="Рисунок 23. Блок-схема, моделирующая синусоидальные сигналы"/>
    </picture>
    <span class="image-description text-italic" itemprop="description">Рисунок 23. Блок-схема, моделирующая синусоидальные сигналы</span>
</div>


<p>Оригинальный адрес статьи: <a href='http://inclab.ru/articles/vektornye-vhodyvyhody-blokov-i-ih-sorazmernost-Xcos'>http://inclab.ru/articles/vektornye-vhodyvyhody-blokov-i-ih-sorazmernost-Xcos</a><p>]]></description>
			<pubDate>Thu, 03 Jun 2021 16:47:30 +0400</pubDate>
		</item>
		<item>
			<title><![CDATA[Внутренние параметры блок-схемы Scilab]]></title>
			<link>http://inclab.ru/articles/nastroyka-vnutrennih-parametrov-blokov-i-modelirovaniya</link>
			<guid>http://inclab.ru/articles/nastroyka-vnutrennih-parametrov-blokov-i-modelirovaniya</guid>
			<description><![CDATA[<img src="http://inclab.ru" />настройки параметров моделирования<p>Приступим к адаптации под наши нужды результата визуального моделирования с <em>настройки параметров моделирования</em>. Прежде всего стоит изменить <em>максимальное время генерирования сигнала,</em> так как по умолчанию моделирование происходит на протяжении <br /> 10<sup>5 </sup>сек, что, чаще всего, является избыточным.</p>
<p>Чтобы изменить время моделирования, на панели <strong>Главного меню</strong> рабочей области <strong>Графического редактора</strong> на вкладке <strong>&laquo;Моделирование&raquo;</strong> выберите пункт <strong>Установка </strong>(рис. 7).</p>

<div class="image-container" itemscope itemtype="http://schema.org/ImageObject">
    <picture>
        <source type="image/webp" srcset="/images/articles/nastroyka-vnutrennih-parametrov-blokov-i-modelirovaniya/x77vqx/risunok-7-vyzov-nastroyki-parametrov-modelirovaniya.webp"/>
        <img class="image-in-container" src="http://inclab.ru/images/articles/nastroyka-vnutrennih-parametrov-blokov-i-modelirovaniya/x77vqx/risunok-7-vyzov-nastroyki-parametrov-modelirovaniya.jpg" itemprop="contentUrl" alt="Рисунок 7. Вызов настройки  параметров моделирования." title="Рисунок 7. Вызов настройки  параметров моделирования."/>
    </picture>
    <span class="image-description text-italic" itemprop="description">Рисунок 7. Вызов настройки  параметров моделирования.</span>
</div>

<p>После чего появится <em>окно с параметрами моделирования </em>(рис. 8), где в соответствующих полях можно изменить стоящие по умолчанию параметры <em>в </em><em>Scilab</em><em> &ndash; </em>формате.</p>
<p>К редактированию доступны различные параметры моделирования: абсолютная и относительные погрешности интегрирования, максимальный размер шага интегрирования, вид программы решения и др., подробнее на данных параметрах мы остановимся, рассматривая возможности решения дифференциальных уравнений.</p>
<p>На данном же этапе для нас интерес представляет лишь параметр <strong>Конечное время интегрирования</strong>. Это временной интервал, в секундах, от нуля до конечной точки интегрирования. Установите его значение равным <strong>3.0</strong><strong>E</strong><strong>01</strong>, что соответствует (3*10<sup>1</sup>) = 30 сек. и нажмите кнопку <strong>OK</strong>.</p>

<div class="image-container" itemscope itemtype="http://schema.org/ImageObject">
    <picture>
        <source type="image/webp" srcset="/images/articles/nastroyka-vnutrennih-parametrov-blokov-i-modelirovaniya/buqotq/risunok-8-ustanovka-vremeni-modelirovaniya.webp"/>
        <img class="image-in-container" src="http://inclab.ru/images/articles/nastroyka-vnutrennih-parametrov-blokov-i-modelirovaniya/buqotq/risunok-8-ustanovka-vremeni-modelirovaniya.jpg" itemprop="contentUrl" alt="Рисунок 8. Установка времени моделирования." title="Рисунок 8. Установка времени моделирования."/>
    </picture>
    <span class="image-description text-italic" itemprop="description">Рисунок 8. Установка времени моделирования.</span>
</div>

<p>Запустите моделирование с новыми параметрами и убедитесь, что график синусоиды строится до максимального значения параметра t = 30сек. (см. рис. 9).</p>

<div class="image-container" itemscope itemtype="http://schema.org/ImageObject">
    <picture>
        <source type="image/webp" srcset="/images/articles/nastroyka-vnutrennih-parametrov-blokov-i-modelirovaniya/8851yn/risunok-9-sinusoida-na-vremennom-intervale-t-0-30-sek.webp"/>
        <img class="image-in-container" src="http://inclab.ru/images/articles/nastroyka-vnutrennih-parametrov-blokov-i-modelirovaniya/8851yn/risunok-9-sinusoida-na-vremennom-intervale-t-0-30-sek.jpg" itemprop="contentUrl" alt="Рисунок 9. Синусоида на временном интервале t=0..30 сек." title="Рисунок 9. Синусоида на временном интервале t=0..30 сек."/>
    </picture>
    <span class="image-description text-italic" itemprop="description">Рисунок 9. Синусоида на временном интервале t=0..30 сек.</span>
</div>

<p>Перейдём теперь к изучению свойств непосредственно самих блоков. Для<em> каждого из блоков</em>, помещенных на рабочую область, доступно <em>внутреннее меню блока</em>.</p>
<p>Чтобы обратиться, например, ко внутреннему меню осциллографа, кликните правой кнопкой мыши на блоке <strong>CSCOPE</strong> (рис. 10).</p>

<div class="image-container" itemscope itemtype="http://schema.org/ImageObject">
    <picture>
        <source type="image/webp" srcset="/images/articles/nastroyka-vnutrennih-parametrov-blokov-i-modelirovaniya/163j9b3/risunok-10-vyzov-menyu-bloka-xcos.webp"/>
        <img class="image-in-container" src="http://inclab.ru/images/articles/nastroyka-vnutrennih-parametrov-blokov-i-modelirovaniya/163j9b3/risunok-10-vyzov-menyu-bloka-xcos.jpg" itemprop="contentUrl" alt="Рисунок 10. Вызов меню блока Xcos." title="Рисунок 10. Вызов меню блока Xcos."/>
    </picture>
    <span class="image-description text-italic" itemprop="description">Рисунок 10. Вызов меню блока Xcos.</span>
</div>

<p>Ещё раз акцентируем внимание, что данное меню имеется у <em>каждого блока</em>, а значит, на данном этапе становится очевидным, что <em>любой </em>из Xcos <em>блоков</em> можно <em>перемещать, вырезать, копировать, удалять и изменять его размеры</em>. Помимо этого, любой блок можно <em>повернуть, разместить зеркально и отразить</em>, сохранив, при этом, расположение входов\выходов, что может быть полезно при составлении объемных блок-схем. Блоки, также, можно выравнивать, раскрашивать и подробно изучать.</p>
<p>Первый пункт выпадающего меню неслучайно оставлен нами напоследок, ибо именно о нём и говорилось в начале данной статьи. Кликнув на пункт меню <strong>Параметры блока</strong>, в выпадающем меню блока <strong>CSCOPE</strong> перед вами откроется окно индивидуальных параметров именно блока <strong>CSCOPE</strong> (см. рис. 11).</p>

<div class="image-container" itemscope itemtype="http://schema.org/ImageObject">
    <picture>
        <source type="image/webp" srcset="/images/articles/nastroyka-vnutrennih-parametrov-blokov-i-modelirovaniya/1n24bu9/risunok-11-redaktirovanie-parametrov-bloka-cscope.webp"/>
        <img class="image-in-container" src="http://inclab.ru/images/articles/nastroyka-vnutrennih-parametrov-blokov-i-modelirovaniya/1n24bu9/risunok-11-redaktirovanie-parametrov-bloka-cscope.jpg" itemprop="contentUrl" alt="Рисунок 11. Редактирование параметров блока CSCOPE." title="Рисунок 11. Редактирование параметров блока CSCOPE."/>
    </picture>
    <span class="image-description text-italic" itemprop="description">Рисунок 11. Редактирование параметров блока CSCOPE.</span>
</div>

<p>Нас интересуют параметры <strong>Ymin</strong> и <strong>Ymax</strong><strong>, </strong>отвечающие соответственно за минимальное и максимальное значения по вертикальной оси графика. Установите значения <strong>Ymin</strong><strong>=-1 </strong>и <strong>Ymax</strong><strong>=1</strong> и нажмите кнопку <strong>OK</strong>. Заметьте, что значение <strong>Ymin</strong> непременно должно быть меньше значения <strong>Ymax</strong><strong>.</strong> Результат моделирования с новыми параметрами представлен на рисунке 12.</p>


<div class="image-container" itemscope itemtype="http://schema.org/ImageObject">
    <picture>
        <source type="image/webp" srcset="/images/articles/nastroyka-vnutrennih-parametrov-blokov-i-modelirovaniya/1emgca7/risunok-12-sinusoida-s-otredaktirovannymi-parametrami-osi-ordinat.webp"/>
        <img class="image-in-container" src="http://inclab.ru/images/articles/nastroyka-vnutrennih-parametrov-blokov-i-modelirovaniya/1emgca7/risunok-12-sinusoida-s-otredaktirovannymi-parametrami-osi-ordinat.jpg" itemprop="contentUrl" alt="Рисунок 12. Синусоида с отредактированными параметрами оси ординат." title="Рисунок 12. Синусоида с отредактированными параметрами оси ординат."/>
    </picture>
    <span class="image-description text-italic" itemprop="description">Рисунок 12. Синусоида с отредактированными параметрами оси ординат.</span>
</div>

<p>Перечень и значения параметров блока отличаются в зависимости от выбранного блока. В нашем примере фигурируют ещё блоки <strong>GENSIN</strong><strong>_</strong><strong>f</strong> и <strong>CLOCK</strong><strong>_</strong><strong>c</strong><strong>. </strong></p>
<p>Блок <strong>CLOCK</strong><strong>_</strong><strong>c</strong> имеет два настраиваемых параметра, один из которых &ndash; время инициализации, а другой &ndash; <strong>Period</strong> &ndash; величина шага дискретизации. Чем меньше значение параметра Period, тем менее ломаным будет график.</p>
<p>Перейдём к параметрам блока <strong>GENSIN</strong><strong>_</strong><strong>f</strong>. Данный блок имеет три параметра: <strong>Абсолютная величина</strong> &ndash; это амплитуда колебаний, <strong>Частота</strong> (рад/с) &ndash; это частота колебаний и <strong>Фаза</strong> (рад) &ndash; это сдвиг по временной оси.</p>
<p>Изменяя внутренние параметры блоков <strong>CSCOPE</strong><strong>,</strong> <strong>GENSIN</strong><strong>_</strong><strong>f</strong><strong>,</strong> <strong>CLOCK</strong><strong>_</strong><strong>c</strong>, можно моделировать различные синусоидальные сигналы (рис. 13 а-б).</p>
<p>Рисунок 13. а) Синусоида с параметрами: Абсолютная величина=2, Частота=1, Фаза=0, Period=1</p>

<div class="image-container" itemscope itemtype="http://schema.org/ImageObject">
    <picture>
        <source type="image/webp" srcset="/images/articles/nastroyka-vnutrennih-parametrov-blokov-i-modelirovaniya/jbqrc4/risunok-13-a-modelirovanie-sinusoidalnogo-signala-s-razlichnymi-vnutrennimi-parametrami-blokov-vremy.webp"/>
        <img class="image-in-container" src="http://inclab.ru/images/articles/nastroyka-vnutrennih-parametrov-blokov-i-modelirovaniya/jbqrc4/risunok-13-a-modelirovanie-sinusoidalnogo-signala-s-razlichnymi-vnutrennimi-parametrami-blokov-vremy.jpg" itemprop="contentUrl" alt="Рисунок 13. а) Моделирование синусоидального сигнала с различными внутренними параметрами блоков, время моделирования 30 сек." title="Рисунок 13. а) Моделирование синусоидального сигнала с различными внутренними параметрами блоков, время моделирования 30 сек."/>
    </picture>
    <span class="image-description text-italic" itemprop="description">Рисунок 13. а) Моделирование синусоидального сигнала с различными внутренними параметрами блоков, время моделирования 30 сек.</span>
</div>

<p>Рисунок 13. б) Синусоида с параметрами: Абсолютная величина=0.5, Частота= 0.25, Фаза=π, Period=0.1</p>
<div class="image-container" itemscope itemtype="http://schema.org/ImageObject">
    <picture>
        <source type="image/webp" srcset="/images/articles/nastroyka-vnutrennih-parametrov-blokov-i-modelirovaniya/1gw0tk7/risunok-13-b-modelirovanie-sinusoidalnogo-signala-s-razlichnymi-vnutrennimi-parametrami-blokov-vremy.webp"/>
        <img class="image-in-container" src="http://inclab.ru/images/articles/nastroyka-vnutrennih-parametrov-blokov-i-modelirovaniya/1gw0tk7/risunok-13-b-modelirovanie-sinusoidalnogo-signala-s-razlichnymi-vnutrennimi-parametrami-blokov-vremy.jpg" itemprop="contentUrl" alt="Рисунок 13. б) Моделирование синусоидального сигнала с различными внутренними параметрами блоков, время моделирования 30 сек." title="Рисунок 13. б) Моделирование синусоидального сигнала с различными внутренними параметрами блоков, время моделирования 30 сек."/>
    </picture>
    <span class="image-description text-italic" itemprop="description">Рисунок 13. б) Моделирование синусоидального сигнала с различными внутренними параметрами блоков, время моделирования 30 сек.</span>
</div>

<p>Однако для просмотра результата с новыми параметрами, придётся каждый раз перезапускать моделирование, при этом не забывая закрывать графическое окно, в противном случае, изменения могут не отобразиться в силу закешированности предыдущей графической информации.</p>
<p>Согласитесь, данная процедура весьма неудобна и назойлива, гораздо более удобно было бы вывести сразу несколько графиков синусоиды с различными параметрами, дабы иметь возможность сравнить результаты моделирования. Данной процедуре и посвящен следующая статья. </p>



<p>Оригинальный адрес статьи: <a href='http://inclab.ru/articles/nastroyka-vnutrennih-parametrov-blokov-i-modelirovaniya'>http://inclab.ru/articles/nastroyka-vnutrennih-parametrov-blokov-i-modelirovaniya</a><p>]]></description>
			<pubDate>Thu, 03 Jun 2021 16:46:02 +0400</pubDate>
		</item>
		<item>
			<title><![CDATA[Создаём первую блок-диаграмму в Scilab]]></title>
			<link>http://inclab.ru/articles/pervaya-diagramma-v-xcos</link>
			<guid>http://inclab.ru/articles/pervaya-diagramma-v-xcos</guid>
			<description><![CDATA[<img src="http://inclab.ru" />Рассмотрим пример построения простейшей диаграммы в Xcos<p>Рассмотрим пример построения простейшей диаграммы в Xcos. Наша первая диаграмма будет состоять всего из трёх блоков: блока-генератора сигнала <strong>GENSIN</strong><strong>_</strong><strong>f</strong> <img class="image-seftcontainer" src="http://inclab.ru/images/articles/pervaya-diagramma-v-xcos/12gl33f/sozdaem-pervuyu-blok-diagrammu-v-scilab.jpg" alt="Создаём первую блок-диаграмму в Scilab" title="Создаём первую блок-диаграмму в Scilab"/>
, <br /> блока часов <strong>CLOCK</strong><strong>_</strong><strong>c</strong> <img class="image-seftcontainer" src="http://inclab.ru/images/articles/pervaya-diagramma-v-xcos/tyxdx4/sozdaem-pervuyu-blok-diagrammu-v-scilab.jpg" alt="Создаём первую блок-диаграмму в Scilab" title="Создаём первую блок-диаграмму в Scilab"/>
, <br />и блока-визуализатора <strong>CSCOPE</strong> <img class="image-seftcontainer" src="http://inclab.ru/images/articles/pervaya-diagramma-v-xcos/1fqgkoi/sozdaem-pervuyu-blok-diagrammu-v-scilab.jpg" alt="Создаём первую блок-диаграмму в Scilab" title="Создаём первую блок-диаграмму в Scilab"/>
.</p>
<p>Приступим к созданию первой диаграммы:</p>
<ol>
<li><p>На <strong>Палитре блоков</strong> выберите пункт <strong>&laquo;Источники сигналов и воздействий&raquo; </strong>и добавьте блок <strong>GENSIN</strong><strong>_</strong><strong>f</strong> на рабочую область <strong>Графического редактора</strong> (рис. 3)</p>

<div class="image-container" itemscope itemtype="http://schema.org/ImageObject">
    <picture>
        <source type="image/webp" srcset="/images/articles/pervaya-diagramma-v-xcos/haydnd/risunok-3-dobavlenie-bloka-generatora-sinusoidy-na-okno-graficheskogo-redaktora-xcos.webp"/>
        <img class="image-in-container" src="http://inclab.ru/images/articles/pervaya-diagramma-v-xcos/haydnd/risunok-3-dobavlenie-bloka-generatora-sinusoidy-na-okno-graficheskogo-redaktora-xcos.jpg" itemprop="contentUrl" alt="Рисунок 3. Добавление блока генератора синусоиды на окно графического редактора Xcos." title="Рисунок 3. Добавление блока генератора синусоиды на окно графического редактора Xcos."/>
    </picture>
    <span class="image-description text-italic" itemprop="description">Рисунок 3. Добавление блока генератора синусоиды на окно графического редактора Xcos.</span>
</div>
</li>
<li><p>В той же палитре найдите блок часов <strong>CLOCK</strong><strong>_</strong><strong>c</strong> и добавьте его на рабочую область.</p></li>
<li><p>Перейдите на палитру <strong>&laquo;Регистрирующие устройства&raquo;</strong> и добавьте блок осциллографа с одним входом <strong>CSCOPE</strong> на рабочую область (рис. 4)</p>
  
<div class="image-container" itemscope itemtype="http://schema.org/ImageObject">
    <picture>
        <source type="image/webp" srcset="/images/articles/pervaya-diagramma-v-xcos/gm97hl/risunok-4-bloki-dlya-generacii-prosteyshego-signala-na-rabochey-oblasti-xcos.webp"/>
        <img class="image-in-container" src="http://inclab.ru/images/articles/pervaya-diagramma-v-xcos/gm97hl/risunok-4-bloki-dlya-generacii-prosteyshego-signala-na-rabochey-oblasti-xcos.jpg" itemprop="contentUrl" alt="Рисунок 4. Блоки для генерации простейшего сигнала на рабочей области Xcos." title="Рисунок 4. Блоки для генерации простейшего сигнала на рабочей области Xcos."/>
    </picture>
    <span class="image-description text-italic" itemprop="description">Рисунок 4. Блоки для генерации простейшего сигнала на рабочей области Xcos.</span>
</div>


<p>Итак, нужные нам блоки добавлены на рабочую область. Теперь необходимо правильно <em>соединить выходы</em> одних блоков <em>со входами</em> других посредством <em>соединительных линий</em>. <em>Выходами</em> считаются стрелочки, выходящие из блоков, то есть <em>треугольнички, крепящиеся к блоку основанием</em>, <em>входы</em> же &ndash; это <em>треугольнички, крепящиеся к блоку вершиной</em>.</p>

<p>Чтобы <em>добавить соединительную линию</em> от блока к блоку, необходимо <em>зажать левую клавишу мыши</em> на треугольничке желаемого выхода <em>и протянуть линию</em> до треугольничка, отмечающего вход другого блока. Если соединение установлено <em>правильно</em>, соединительная линия при наведении на неё мыши, станет <em>зелёной</em>. Удалить линию можно, выделив её левой клавишей мыши и нажав Delete на клавиатуре.</p>
<p>&nbsp;Заметьте, что блок <strong>GENSIN</strong><strong>_</strong><strong>f</strong> имеет только <em>один выход</em> и не имеет входов, это значит, что соединительные линии могут только выходить из него. Счётчик времени <strong>CLOCK</strong><strong>_</strong><strong>c</strong><strong>, </strong>также, имеет всего <em>один выход</em>. Причём <em>цвета треугольничков</em>-выходов этих блоков <em>отличаются</em>. Блок осциллографа <strong>CSCOPE</strong> же <em>не имеет выходов</em>, у него в наличии <em>два входа разных цветов</em>. Это ещё одна подсказка для реализации правильного соединения: <em>цвета входов и выходов блоков должны совпадать</em>.</p>  
<p>Продолжим построение диаграммы:</p>  
  </li>

<li><p>Соедините черный выход генератора <strong>GENSIN</strong><strong>_</strong><strong>f</strong> с черным входом осциллографа <strong>CSCOPE</strong>, а красный выход счетчика <strong>CLOCK</strong><strong>_</strong><strong>c</strong> с красным входом осциллографа <strong>CSCOPE</strong><strong>, </strong>как показано на рис. 5.</p>
  
  <div class="image-container" itemscope itemtype="http://schema.org/ImageObject">
    <picture>
        <source type="image/webp" srcset="/images/articles/pervaya-diagramma-v-xcos/d1f2m8/risunok-5-realizaciya-diagrammy-dlya-generacii-sinusoidalnogo-signala.webp"/>
        <img class="image-in-container" src="http://inclab.ru/images/articles/pervaya-diagramma-v-xcos/d1f2m8/risunok-5-realizaciya-diagrammy-dlya-generacii-sinusoidalnogo-signala.jpg" itemprop="contentUrl" alt="Рисунок 5. Реализация диаграммы для генерации синусоидального сигнала." title="Рисунок 5. Реализация диаграммы для генерации синусоидального сигнала."/>
    </picture>
    <span class="image-description text-italic" itemprop="description">Рисунок 5. Реализация диаграммы для генерации синусоидального сигнала.</span>
</div>
 
<p>Итак, диаграмма построена. Как видно, диаграмма Xcos содержит два типа соединений: регулярные (чёрные) и управляющие (красные). По регулярным соединениям передаются сигналы данных, а по управляющим &ndash; сигналы активации. Блоки также могут иметь регулярные и управляющие входы и выходы. Как правило регулярные входы и выходы блоков располагаются слева и справа от изображения блока, а управляющие &ndash; сверху и снизу.</p>
<p>- Если блок имеет управляющий вход, то он срабатывает каждый раз, когда на него поступает сигнал активации. Поведение блока, не имеющего управляющего входа, определяется его внутренними параметрами.</p>
<p>- Блок может наследовать сигнал активации от предыдущего блока, т.е. срабатывать при поступлении на его регулярный вход сигнала данных. Также, блок может быть активирован всегда, как, например, блок <strong>GENSIN</strong><strong>_</strong><strong>f</strong><strong>.</strong></p>
<p>- Блок без входов, не получающий сигналов активации и не объявленный активным всегда, является константным блоком. Выход такого блока не зависит от времени, а сам блок срабатывает лишь единожды на этапе инициализации.</p>
<p>Таки образом, выходные значения константных блоков не изменяются никогда, как бы часто мы к ним не обращались. Выходные значения блоков, активных всегда, будут меняться так часто, как часто будут запрошены их значения. В остальных случаях выходные значения будут меняться так часто, как часто блок будет получать сигнал активации: от входа или наследовать от предыдущего блока.</p>
<p>Для того, чтобы увидеть результат работы собранной диаграммы в виде графика, необходимо запустить процесс моделирования.</p>  
 
  </li>

<li><p>Для этого на панели <strong>Главного меню</strong> рабочей области <strong>Графического редактора</strong> на вкладке <strong>&laquo;Моделирование&raquo;</strong> выберите пункт <strong>Запустить </strong>(рис. 6).</p>
  <div class="image-container" itemscope itemtype="http://schema.org/ImageObject">
    <picture>
        <source type="image/webp" srcset="/images/articles/pervaya-diagramma-v-xcos/1s0strn/risunok-6-zapusk-modelirovaniya.webp"/>
        <img class="image-in-container" src="http://inclab.ru/images/articles/pervaya-diagramma-v-xcos/1s0strn/risunok-6-zapusk-modelirovaniya.jpg" itemprop="contentUrl" alt="Рисунок 6. Запуск моделирования." title="Рисунок 6. Запуск моделирования."/>
    </picture>
    <span class="image-description text-italic" itemprop="description">Рисунок 6. Запуск моделирования.</span>
</div>  
  </li>
  
 <li><p>6.	Результатом работы программы, кто бы мог подумать, будет график синусоиды, который рисуется на протяжении t=100000 сек. (рис. 6*) </p>
  <div class="image-container" itemscope itemtype="http://schema.org/ImageObject">
    <picture>
        <source type="image/webp" srcset="/images/articles/pervaya-diagramma-v-xcos/khfdn7/risunok-6-rezultat-modelirovaniya-v-graficheskom-okne---sinusoida.webp"/>
        <img class="image-in-container" src="http://inclab.ru/images/articles/pervaya-diagramma-v-xcos/khfdn7/risunok-6-rezultat-modelirovaniya-v-graficheskom-okne---sinusoida.jpg" itemprop="contentUrl" alt="Рисунок 6*. Результат моделирования в графическом окне - синусоида." title="Рисунок 6*. Результат моделирования в графическом окне - синусоида."/>
    </picture>
    <span class="image-description text-italic" itemprop="description">Рисунок 6*. Результат моделирования в графическом окне - синусоида.</span>
</div>  
  </li> 
  
  
</ol>
<p>Внимательный читатель непременно задастся вопросом, почему же моделирование происходит на протяжении столь продолжительного времени, ведь мы его нигде не указывали, можно ли прервать столь долгий процесс моделирования и есть ли возможность изменить параметры, например, время моделирования или настроить отображение системы координат и отобразить несколько графиков.</p>
<p>Ответы на эти вопросы вы найдёте в следующей статье.</p><p>Оригинальный адрес статьи: <a href='http://inclab.ru/articles/pervaya-diagramma-v-xcos'>http://inclab.ru/articles/pervaya-diagramma-v-xcos</a><p>]]></description>
			<pubDate>Thu, 03 Jun 2021 16:44:44 +0400</pubDate>
		</item>
		<item>
			<title><![CDATA[Основные палитры и блоки в Xcos]]></title>
			<link>http://inclab.ru/articles/osnovy-osnov-kak-nachat-rabotu-v</link>
			<guid>http://inclab.ru/articles/osnovy-osnov-kak-nachat-rabotu-v</guid>
			<description><![CDATA[<img src="http://inclab.ru" />как начать работу в Scilab Xcos<p>Визуальное моделирование динамических систем разного рода в Xcos базируется на графическом представлении математических моделей таких систем в виде блок-схем.</p>
<p>Чтобы приступить к построению модели системы в виде её блочной диаграммы, необходимо открыть окно графического редактора. Порядок вызова среды Xcos следующий: в <strong>Командном окне</strong> на панели <strong>Главного меню</strong> выбрать пункт <strong>Инструменты</strong> и в выпадающем списке кликнуть на пункт <strong>Визуальное моделирование X</strong><strong>cos</strong> (см. рис. 1.)</p>

<div class="image-container" itemscope itemtype="http://schema.org/ImageObject">
    <picture>
        <source type="image/webp" srcset="/images/articles/osnovy-osnov-kak-nachat-rabotu-v/108syja/risunok-1-zapusk-graficheskogo-redaktora-xcos.webp"/>
        <img class="image-in-container" src="http://inclab.ru/images/articles/osnovy-osnov-kak-nachat-rabotu-v/108syja/risunok-1-zapusk-graficheskogo-redaktora-xcos.jpg" itemprop="contentUrl" alt="Рисунок 1. Запуск графического редактора Xcos." title="Рисунок 1. Запуск графического редактора Xcos."/>
    </picture>
    <span class="image-description text-italic" itemprop="description">Рисунок 1. Запуск графического редактора Xcos.</span>
</div>

<p>После запуска Xcos появятся два окна: <strong>Окно палитры блоков</strong> и рабочая область - &nbsp;<strong>Окно графического редактора</strong> с именем<em> Безымянный</em>, как показано на <em>рисунке 2</em>. Эти окна - самостоятельные объекты, их можно перемещать, сворачивать, изменять размеры для удобства работы и т.д. &nbsp;</p>

<div class="image-container" itemscope itemtype="http://schema.org/ImageObject">
    <picture>
        <source type="image/webp" srcset="/images/articles/osnovy-osnov-kak-nachat-rabotu-v/anxcu0/risunok-2-okna-palitry-blokov-i-graficheskogo-redaktora-xcos.webp"/>
        <img class="image-in-container" src="http://inclab.ru/images/articles/osnovy-osnov-kak-nachat-rabotu-v/anxcu0/risunok-2-okna-palitry-blokov-i-graficheskogo-redaktora-xcos.jpg" itemprop="contentUrl" alt="Рисунок 2. Окна палитры блоков и графического редактора Xcos" title="Рисунок 2. Окна палитры блоков и графического редактора Xcos"/>
    </picture>
    <span class="image-description text-italic" itemprop="description">Рисунок 2. Окна палитры блоков и графического редактора Xcos</span>
</div>
<p><strong>Палитры блоков</strong> &ndash; это сгруппированные по смыслу и отрасли использования блоки, из которых и собираются диаграммы Xcos. Выделив нужную группу левым кликом мыши, вы увидите справа список входящих в нее блоков. Полезной, в ходе работы, оказывается палитра <em>&laquo;</em><em>Recently</em> <em>Used</em> <em>Blocks</em><em>&raquo;</em>, где отображаются недавно использованные блоки.</p>
<p><strong>Графический редактор</strong> представляет из себя окно с серой областью, на которой и будут располагаться блоки. Чтобы добавить какой-либо блок на окно графического редактора, его нужно <em>перетащить мышкой</em> на серую область окна графического редактора с зажатой левой кнопкой или <em>дважды кликнуть по блоку</em> левой кнопкой мыши в меню палитры блоков.</p><p>Оригинальный адрес статьи: <a href='http://inclab.ru/articles/osnovy-osnov-kak-nachat-rabotu-v'>http://inclab.ru/articles/osnovy-osnov-kak-nachat-rabotu-v</a><p>]]></description>
			<pubDate>Thu, 03 Jun 2021 16:43:26 +0400</pubDate>
		</item>
		<item>
			<title><![CDATA[Получаем анимированный GIF-файл в Scilab]]></title>
			<link>http://inclab.ru/articles/sohranyaem-animaciyu-v-gif-scilab</link>
			<guid>http://inclab.ru/articles/sohranyaem-animaciyu-v-gif-scilab</guid>
			<description><![CDATA[<img src="http://inclab.ru" />После создания анимационного графика сохраняем результат в GIF<p>После того, как анимация объекта реализована, для презентации результатов может пригодиться возможность формирования гиф-изображения.</p>
<p>На основе предыдущей статьи <a href="http://inclab.ru/profi/osnova-animacii-v-scilab-imitaciya-dvijeniya">Основа анимации в Scilab</a>, рассмотрим, как можно сохранять анимированные графики в Scilab.</p>


<p>Для создания гифок нам потребуется дополнение <em>animaGIF</em>, установить которое можно прямо из консоли Scilab, просто набрав команду:</p>
<div class="image-container">
<p><b>На этом месте располагается листинг, который не может быть правильно отображен в rss-ленте. Перейдите к оригинальной статье: <a href='http://inclab.ru/articles/sohranyaem-animaciyu-v-gif-scilab'>http://inclab.ru/articles/sohranyaem-animaciyu-v-gif-scilab</a></b></p>
<span class="image-description text-italic">Установка ATOMS из консоли Scilab.</span>
</div>	
<p>Кроме того, данное дополнение доступно она фоициальном сайте по ссылке <a target="_blank" href="https://atoms.scilab.org/toolboxes/animaGIF/1.0">animated GIF creator</a>.</p>
<p>После установки дополнения, необходимо заново запустить среду, т.е. закрыть Scilab и заново его запустить.</p>
<p>Использование данного инструмента, созданного для формирования GIF-картинок, не вызывает особых сложностей. Единственное, что стоит упомянуть: анимация будет значительно подтормаживать.</p>

<h2>Программная реализация</h2>

<p>Итак, ранее <a href="http://inclab.ru/profi/osnova-animacii-v-scilab-imitaciya-dvijeniya">была сформирована программа</a>, которая реализовывала движение точки по прямой. Немного модифицировав этот код, получим движущийся по окружности ромб:</p>
<div class="image-container">
<p><b>На этом месте располагается листинг, который не может быть правильно отображен в rss-ленте. Перейдите к оригинальной статье: <a href='http://inclab.ru/articles/sohranyaem-animaciyu-v-gif-scilab'>http://inclab.ru/articles/sohranyaem-animaciyu-v-gif-scilab</a></b></p>
<span class="image-description text-italic">Модификация имеющегося кода.</span>
</div>	

<div class="image-container">
<img src="http://inclab.ru/files/articles/sohranyaem-animaciyu-v-gif-scilab/mooving-dot.gif"/>
  <span class="image-description text-italic">Ромб, движущийся по окружности.</span>
</div>	


<p>Далее, для формирования анимированной картинки, нужно указать путь, куда эта картинка будет сохранена и её имя. В программе используется тот же каталог, в котором лежит sce файл с программой:</p>
<div class="image-container">
<p><b>На этом месте располагается листинг, который не может быть правильно отображен в rss-ленте. Перейдите к оригинальной статье: <a href='http://inclab.ru/articles/sohranyaem-animaciyu-v-gif-scilab'>http://inclab.ru/articles/sohranyaem-animaciyu-v-gif-scilab</a></b></p>
<span class="image-description text-italic">Путь к GIF-ке.</span>
</div>	


<p>Ниже приведены команды, реализующие запись в GIF при помощи установленного дополнения <em>animaGIF</em>:</p>
<div class="image-container">
<p><b>На этом месте располагается листинг, который не может быть правильно отображен в rss-ленте. Перейдите к оригинальной статье: <a href='http://inclab.ru/articles/sohranyaem-animaciyu-v-gif-scilab'>http://inclab.ru/articles/sohranyaem-animaciyu-v-gif-scilab</a></b></p>
<span class="image-description text-italic">Использование animaGIF.</span>
</div>	


<p>Полный код программы приведён ниже:</p>
<div class="image-container">
<p><b>На этом месте располагается листинг, который не может быть правильно отображен в rss-ленте. Перейдите к оригинальной статье: <a href='http://inclab.ru/articles/sohranyaem-animaciyu-v-gif-scilab'>http://inclab.ru/articles/sohranyaem-animaciyu-v-gif-scilab</a></b></p>
<span class="image-description text-italic">Создание анимированной картинки в Scilab.</span>
</div>	<p>Оригинальный адрес статьи: <a href='http://inclab.ru/articles/sohranyaem-animaciyu-v-gif-scilab'>http://inclab.ru/articles/sohranyaem-animaciyu-v-gif-scilab</a><p>]]></description>
			<pubDate>Fri, 04 Jun 2021 16:17:45 +0400</pubDate>
		</item>
		<item>
			<title><![CDATA[Рисуем движущийся объект в Scilab]]></title>
			<link>http://inclab.ru/articles/osnova-animacii-v-scilab-imitaciya-dvijeniya</link>
			<guid>http://inclab.ru/articles/osnova-animacii-v-scilab-imitaciya-dvijeniya</guid>
			<description><![CDATA[<img src="http://inclab.ru" />Каким образом можно создавать анимационные Картинки в Scilab<p>Рассмотрим простой случай создания имитации движения в Scilab, чтобы продемонстрировать основную идею реализации.</p>
<p>Итак, будем работать с точкой, которая движется по оси \(x\). В каждый момент времени \(t_i\) у этой точки задаётся положение \((x_i,y_i)\). Так как по оси \(y\) положение у объекта постоянное, оно опущено в иллюстрации ниже:</p>
<div class="image-container" itemscope itemtype="http://schema.org/ImageObject">
    <picture>
        <source type="image/webp" srcset="/images/articles/osnova-animacii-v-scilab-imitaciya-dvijeniya/1x6bluo/polozhenie-tochki-v-diskretnye-momenty-vrmeni.webp"/>
        <img class="image-in-container" src="http://inclab.ru/images/articles/osnova-animacii-v-scilab-imitaciya-dvijeniya/1x6bluo/polozhenie-tochki-v-diskretnye-momenty-vrmeni.jpg" itemprop="contentUrl" alt="Положение точки в дискретные моменты врмени." title="Положение точки в дискретные моменты врмени."/>
    </picture>
    <span class="image-description text-italic" itemprop="description">Положение точки в дискретные моменты врмени.</span>
</div>
<p>Создание анимации движения этого кружочка из точки \((x_i,y_i)\) в точку \((x_{i+1},y_{i+1})\) будет происходить следующим образом:<br/>
Рисуем точку в момент времени \(t_i\) с координатами  \((x_{i},y_{i})\)<br/>
Стираем точку с координатами  \((x_{i},y_{i})\) <br/>
Инкремируем момент времени \(t_{i+1}\) <br/>
Рисуем точку в момент времени \(t_{i+1}\) с координатами  \((x_{i+1},y_{i+1})\)<br/>
</p>
<div class="image-container" itemscope itemtype="http://schema.org/ImageObject">
    <picture>
        <source type="image/webp" srcset="/images/articles/osnova-animacii-v-scilab-imitaciya-dvijeniya/1dv1xx1/cikl-peredvizheniya-tochki-vdol-gorizontalnoy-osi.webp"/>
        <img class="image-in-container" src="http://inclab.ru/images/articles/osnova-animacii-v-scilab-imitaciya-dvijeniya/1dv1xx1/cikl-peredvizheniya-tochki-vdol-gorizontalnoy-osi.jpg" itemprop="contentUrl" alt="Цикл передвижения точки вдоль горизонтальной оси." title="Цикл передвижения точки вдоль горизонтальной оси."/>
    </picture>
    <span class="image-description text-italic" itemprop="description">Цикл передвижения точки вдоль горизонтальной оси.</span>
</div>

<div class="image-container">
<img src="http://inclab.ru/files/articles/osnova-animacii-v-scilab-imitaciya-dvijeniya/animation-point-scilab.gif"/>

</div>	

<h2>Программная реализация</h2>

<p>Сформируем массивы данных: временной промежуток и соответствующее положение точки на оси \(x\).</p>
<div class="image-container">
<p><b>На этом месте располагается листинг, который не может быть правильно отображен в rss-ленте. Перейдите к оригинальной статье: <a href='http://inclab.ru/articles/osnova-animacii-v-scilab-imitaciya-dvijeniya'>http://inclab.ru/articles/osnova-animacii-v-scilab-imitaciya-dvijeniya</a></b></p>
<span class="image-description text-italic">время и координата.</span>
</div>	

<p>Добавим начальную точку на графике</p>
<div class="image-container">
<p><b>На этом месте располагается листинг, который не может быть правильно отображен в rss-ленте. Перейдите к оригинальной статье: <a href='http://inclab.ru/articles/osnova-animacii-v-scilab-imitaciya-dvijeniya'>http://inclab.ru/articles/osnova-animacii-v-scilab-imitaciya-dvijeniya</a></b></p>
<span class="image-description text-italic">Точка в первый момент времени.</span>
</div>	


<p>Далее заведём переменные для координатной сетки, сцены, на которой происходит анимаци и самого анимированного элемента:</p>
<div class="image-container">
<p><b>На этом месте располагается листинг, который не может быть правильно отображен в rss-ленте. Перейдите к оригинальной статье: <a href='http://inclab.ru/articles/osnova-animacii-v-scilab-imitaciya-dvijeniya'>http://inclab.ru/articles/osnova-animacii-v-scilab-imitaciya-dvijeniya</a></b></p>
<span class="image-description text-italic">Зарезервируем переменные для создания анимации</span>
</div>	


<p>Несколько стилизуем наши элементы: добавим подпись оси и заголовок сетки координат, а также увеличим размер точки и её покрасим её в синий цвет:</p>
<div class="image-container">
<p><b>На этом месте располагается листинг, который не может быть правильно отображен в rss-ленте. Перейдите к оригинальной статье: <a href='http://inclab.ru/articles/osnova-animacii-v-scilab-imitaciya-dvijeniya'>http://inclab.ru/articles/osnova-animacii-v-scilab-imitaciya-dvijeniya</a></b></p>
<span class="image-description text-italic">Стилизуем изображаемые данные на графике в Scilab</span>
</div>	


<p>А далее - организуем цикл по всем значениям массива, отвечающего за положение токи на плоскости и  итерационно будем рисовать и стирать точку в каждый из  моментов времени:</p>
<div class="image-container">
<p><b>На этом месте располагается листинг, который не может быть правильно отображен в rss-ленте. Перейдите к оригинальной статье: <a href='http://inclab.ru/articles/osnova-animacii-v-scilab-imitaciya-dvijeniya'>http://inclab.ru/articles/osnova-animacii-v-scilab-imitaciya-dvijeniya</a></b></p>
<span class="image-description text-italic">Цикл для создания анимации</span>
</div>	

<p>В итоге, программа, реализующая передвижение точки с анимацией движения будет выглядеть следующим образом:</p>
<div class="image-container">
<p><b>На этом месте располагается листинг, который не может быть правильно отображен в rss-ленте. Перейдите к оригинальной статье: <a href='http://inclab.ru/articles/osnova-animacii-v-scilab-imitaciya-dvijeniya'>http://inclab.ru/articles/osnova-animacii-v-scilab-imitaciya-dvijeniya</a></b></p>
<span class="image-description text-italic">Создание анимации в Scilab</span>
</div>	
<p>Оригинальный адрес статьи: <a href='http://inclab.ru/articles/osnova-animacii-v-scilab-imitaciya-dvijeniya'>http://inclab.ru/articles/osnova-animacii-v-scilab-imitaciya-dvijeniya</a><p>]]></description>
			<pubDate>Fri, 04 Jun 2021 16:03:44 +0400</pubDate>
		</item>
		<item>
			<title><![CDATA[Фазовые портреты и поле направлений механических систем в scilab]]></title>
			<link>http://inclab.ru/articles/avtokolebaniya-v-mehanicheskih-sistemah-v-scilab</link>
			<guid>http://inclab.ru/articles/avtokolebaniya-v-mehanicheskih-sistemah-v-scilab</guid>
			<description><![CDATA[<img src="http://inclab.ru" />Моделирование уравнения Ван-дер-Поля и Брюсселятор<h2>уравнения Ван-дер-Поля</h2>
<p>В качестве модели, описывающей автоколебания в радиотехническом генераторе, рассмотрим уравнение Ван-дер-Поля.</p>
<div class="image-container" itemscope itemtype="http://schema.org/ImageObject">
    <picture>
        <source type="image/webp" srcset="/images/articles/avtokolebaniya-v-mehanicheskih-sistemah-v-scilab/1mzegsr/risunok-obschiy-vid-generatora.webp"/>
        <img class="image-in-container" src="http://inclab.ru/images/articles/avtokolebaniya-v-mehanicheskih-sistemah-v-scilab/1mzegsr/risunok-obschiy-vid-generatora.jpg" itemprop="contentUrl" alt="Рисунок. Общий вид генератора." title="Рисунок. Общий вид генератора."/>
    </picture>
    <span class="image-description text-italic" itemprop="description">Рисунок. Общий вид генератора.</span>
</div>
<p>А это уравнение Ван-дер-Поля. Обыкновенное дифференциальное уравнение второго порядка с параметром \(\lambda\).</p>
<p class="text-center">\( y'' + (\lambda - y'^2)y' + y = 0 \)</p>

<p>Для моделирования переходных процессов придётся свести данное уравнение к системе в нормальной форме. Введём новые переменные:</p>
<p class="text-center">
\begin{cases} z_1 = y \\ z_2=y' \end{cases}
</p>
<p>Тогда в новых обозначениях, получим систему ОДУ 1-го порядка:</p>
<p class="text-center">
\begin{cases} z_1' = z_2 \\ z_2' = -z_1 + (z_2^2 - \lambda)z_2  \end{cases}
</p>

<p>Найдём особые точки данной системы: то есть точки, в которых скорости нулевые:</p>
<p class="text-center">
\begin{cases} 0 = z_2 \\ 0 = -z_1 + (z_2^2 - \lambda)z_2  \end{cases}

\begin{cases} 0 = z_2 \\ 0 = -z_1   \end{cases}
</p>

<p>Итак, нашлась всего одна особая точка \( (z_1, z_2) = (0,0) \) , или в исходных обозначениях:  \( y=y'=0 \).</p>
<p>Данная точка является:</p>
<ul>
  <li>устойчивым узлом при \(\lambda < -2 \)</li>
  <li>устойчивым фокусом при \(-2 < \lambda < 0\)</li>
  <li>неустойчивым фокусом при \(0<\lambda<2\)</li>
  <li>неустойчивым узлом при \(\lambda>2\)</li>
</ul>

<p>Кроме того, в данной системе наблюдается возникновение предельных циклов.</p>

<p>Рассмотрим, как меняется поведедение системы в зависимости от значений параметра \(\lambda\)</p>
  
<div class="image-container">
<p><b>На этом месте располагается листинг, который не может быть правильно отображен в rss-ленте. Перейдите к оригинальной статье: <a href='http://inclab.ru/articles/avtokolebaniya-v-mehanicheskih-sistemah-v-scilab'>http://inclab.ru/articles/avtokolebaniya-v-mehanicheskih-sistemah-v-scilab</a></b></p>
<span class="image-description text-italic">Программа, моделирующая возникновение автоколебаний.</span>
</div>	  
  
  <div class="image-container" itemscope itemtype="http://schema.org/ImageObject">
    <picture>
        <source type="image/webp" srcset="/images/articles/avtokolebaniya-v-mehanicheskih-sistemah-v-scilab/uamn47/reshenie-sistemy-van-der-polya-sprava---vremennaya-razvertka-sprava---fazovye-portrety-dlya-lyambda-.webp"/>
        <img class="image-in-container" src="http://inclab.ru/images/articles/avtokolebaniya-v-mehanicheskih-sistemah-v-scilab/uamn47/reshenie-sistemy-van-der-polya-sprava---vremennaya-razvertka-sprava---fazovye-portrety-dlya-lyambda-.jpg" itemprop="contentUrl" alt="Решение системы Ван-дер-Поля. Справа - временная развёртка, справа - фазовые портреты для лямбда = {0.1; 1.1; 10} " title="Решение системы Ван-дер-Поля. Справа - временная развёртка, справа - фазовые портреты для лямбда = {0.1; 1.1; 10} "/>
    </picture>
    <span class="image-description text-italic" itemprop="description">Решение системы Ван-дер-Поля. Справа - временная развёртка, справа - фазовые портреты для лямбда = {0.1; 1.1; 10} </span>
</div>
  
  
  <h2>Химические колебания. Брюсселятор</h2>
<p>Для погружения в циклическую генерацию решений, мы рассмотрим простой модельный пример: гипотетическую химическую реакцию, которая получила название Брюсселятор . Уравнения этой реакции имеют вид:</p>  
<p class="text-center">
\begin{cases} 
  
  A \xrightarrow{k_1} X \\
  B+x \xrightarrow{k_2} Y+D \\
  2X+Y \xrightarrow{k_3} 3X \\
  X \xrightarrow{k_4} E \\
  
  \end{cases}
</p>  
  
  <p>Кинетические уравнения для данной системы будут иметь вид:</p>  
<p class="text-center">
\begin{cases} 
  \frac{dX}{dt} = k_1A - k_2BX + k_3X^2Y - k_4X \\
  \frac{dY}{dt} = k_2BX + k_3X^2Y   
  \end{cases}
</p>  
  
  
  <p>Заведём новые переменные, чтобы не перегружать систему параметрами:</p>  
<p class="text-center">
\begin{cases} 
  \tau = kt \\
  x = \sqrt{\frac{k_3}{k_4}}X \\
  y = \sqrt{\frac{k_3}{k_4}}Y \\
  z_1 = x\\
  z_2 = y

  \end{cases}
</p>    
  
  
  <p>Тогда кинетические уравнения преобразуются к виду:</p>  
<p class="text-center">
\begin{cases} 
  z_1' = a - (b+1)z_1 + z_1^2z_2 \\
  z_2' = bz_1 - z_1^2z_2   
  \end{cases}
</p>   
  
 
  <p>Замоделируем поведение решений системы ОДУ с различными параметрами и начальными условиями.</p> 
    <p>Приведённый ниже код включает в себя несколько примеров, рассмотренных ранее: использование циклов, обращение к графикам на координатной сетке, как к потомкам объекта axes, а также, задание цвета в формате rgb, где значения каждого из параметров генерируются случайным образом.</p> 
  
  
 <div class="image-container">
<p><b>На этом месте располагается листинг, который не может быть правильно отображен в rss-ленте. Перейдите к оригинальной статье: <a href='http://inclab.ru/articles/avtokolebaniya-v-mehanicheskih-sistemah-v-scilab'>http://inclab.ru/articles/avtokolebaniya-v-mehanicheskih-sistemah-v-scilab</a></b></p>
<span class="image-description text-italic">Построение фазовых портретов для Брюсцелятора с различными параметрами и начальными условиями.</span>
</div>	

 <div class="image-container" itemscope itemtype="http://schema.org/ImageObject">
    <picture>
        <source type="image/webp" srcset="/images/articles/avtokolebaniya-v-mehanicheskih-sistemah-v-scilab/16bvr5a/resheniya-na-fazovoy-ploskosti-v-scilab.webp"/>
        <img class="image-in-container" src="http://inclab.ru/images/articles/avtokolebaniya-v-mehanicheskih-sistemah-v-scilab/16bvr5a/resheniya-na-fazovoy-ploskosti-v-scilab.jpg" itemprop="contentUrl" alt=" Решения на фазовой плоскости в Scilab " title=" Решения на фазовой плоскости в Scilab "/>
    </picture>
    <span class="image-description text-italic" itemprop="description"> Решения на фазовой плоскости в Scilab </span>
</div>
  



  
  
  
  
  
  
  
  <p>Оригинальный адрес статьи: <a href='http://inclab.ru/articles/avtokolebaniya-v-mehanicheskih-sistemah-v-scilab'>http://inclab.ru/articles/avtokolebaniya-v-mehanicheskih-sistemah-v-scilab</a><p>]]></description>
			<pubDate>Thu, 03 Jun 2021 16:38:21 +0400</pubDate>
		</item>
		<item>
			<title><![CDATA[Раскраска точек на 3D графике в Scilab]]></title>
			<link>http://inclab.ru/articles/raskraska-tochek-na-3d-grafike</link>
			<guid>http://inclab.ru/articles/raskraska-tochek-na-3d-grafike</guid>
			<description><![CDATA[<img src="http://inclab.ru" />Генерируем конечное число точек случайного цвета<p>Для анализа статистических данных или формирования входных значений, может оказаться полезной возможность цветовой интерпретации результатов.</p>
<p>В данной статье приведён пример, как сформировать массив случайно расположенных точек, раскрашенных, согласно заданной цветовой карте. Случайные коордиинаты точек сформированы покомпонетно функцией <em>rand()</em>. В данном случае, координаты принимают значения от 0 до 1.</p>
<p>Далее, с помощью функции <em>jetcolormap</em>, вычисляется цветовая карта с <em>n</em> цветами, варьирующимися от синего, голубого, зеленого, желтого, оранжевого, и до красного.</p>

<p>Далее, с помощью функции <em>param3d1</em> все точки добавляются на трёхмерную плоскость, но остаются невидимыми благодаря <em>drawlater</em>. Пока эти точки чёрные.</p>

<p>Настроив параметры отображени точек в пространсве, можем приступать к их раскраршиванию в цикле <em>dots(i).mark_foreground = w(i)</em>.</p>
<p>И только после присвоения случайно сформированного цвета, каждой из 500 точек, мы включаем их видимость на графике с помощью <em>drawnow</em>.</p>

<div class="image-container">
<p><b>На этом месте располагается листинг, который не может быть правильно отображен в rss-ленте. Перейдите к оригинальной статье: <a href='http://inclab.ru/articles/raskraska-tochek-na-3d-grafike'>http://inclab.ru/articles/raskraska-tochek-na-3d-grafike</a></b></p>
<span class="image-description text-italic">Случайные точки случайного цвета в 3-х мерном пространстве.</span>
</div>	

<p>Результат работы программы:</p>
<div class="image-container" itemscope itemtype="http://schema.org/ImageObject">
    <picture>
        <source type="image/webp" srcset="/images/articles/raskraska-tochek-na-3d-grafike/19uemdd/risunok-generiruem-konechnoe-chislo-tochek-sluchaynogo-cveta-v-scilab.webp"/>
        <img class="image-in-container" src="http://inclab.ru/images/articles/raskraska-tochek-na-3d-grafike/19uemdd/risunok-generiruem-konechnoe-chislo-tochek-sluchaynogo-cveta-v-scilab.jpg" itemprop="contentUrl" alt="Рисунок. Генерируем конечное число точек случайного цвета в scilab." title="Рисунок. Генерируем конечное число точек случайного цвета в scilab."/>
    </picture>
    <span class="image-description text-italic" itemprop="description">Рисунок. Генерируем конечное число точек случайного цвета в scilab.</span>
</div><p>Оригинальный адрес статьи: <a href='http://inclab.ru/articles/raskraska-tochek-na-3d-grafike'>http://inclab.ru/articles/raskraska-tochek-na-3d-grafike</a><p>]]></description>
			<pubDate>Thu, 03 Jun 2021 16:37:15 +0400</pubDate>
		</item>
		<item>
			<title><![CDATA[Задание толщины линии, начертание графиков в Scilab]]></title>
			<link>http://inclab.ru/articles/kak-zadat-tolschinu-linii-na-grafike</link>
			<guid>http://inclab.ru/articles/kak-zadat-tolschinu-linii-na-grafike</guid>
			<description><![CDATA[<img src="http://inclab.ru" />Раскрываем секретный секрет Scilab.<p>Чтобы тонко настраивать толщину и начертание графиков в Scilab, придётся поработать с объектами.</p>
<p>С помощью ключевого <em>gca()</em> происходит обращение к последней созданной сетке координат: <em>get current axes</em>.</p>
<p>У самой сетки есть некоторые настраиваемые параметры (Подробнее в материале <a href="https://inclab.ru/beginner/nastroyka-grafikov-v-scilab-polnyy-gayd">Настройка графиков: свойства осей и сетки</a>), но сейчас не о них. Нас интересуют объекты, расположенные на данной сетке координат, а именно - графики. Графики - это "потомки", дети на сетке, при этом нумерация этих потомков идёт от последнего добавленного к первому.</p>



<h2>Рассмотрим простой пример изменения толщины графика.</h2>


<div class="image-container">
<p><b>На этом месте располагается листинг, который не может быть правильно отображен в rss-ленте. Перейдите к оригинальной статье: <a href='http://inclab.ru/articles/kak-zadat-tolschinu-linii-na-grafike'>http://inclab.ru/articles/kak-zadat-tolschinu-linii-na-grafike</a></b></p>
<span class="image-description text-italic">Тригонометрические функции с линиями разной толщины.</span>
</div>	


<p>Результат работы программы:</p>
<div class="image-container" itemscope itemtype="http://schema.org/ImageObject">
    <picture>
        <source type="image/webp" srcset="/images/articles/kak-zadat-tolschinu-linii-na-grafike/15v6glo/risunok-zhirnost-linii-na-grafike-v-scilab.webp"/>
        <img class="image-in-container" src="http://inclab.ru/images/articles/kak-zadat-tolschinu-linii-na-grafike/15v6glo/risunok-zhirnost-linii-na-grafike-v-scilab.jpg" itemprop="contentUrl" alt="Рисунок. Жирность линии на графике в scilab." title="Рисунок. Жирность линии на графике в scilab."/>
    </picture>
    <span class="image-description text-italic" itemprop="description">Рисунок. Жирность линии на графике в scilab.</span>
</div>


<h2>Пример с обращением к разным осям.</h2>
<p>После того, как заведена переменная для какой-либо из сеток координат, параметры этой сетки и её содержимого можно менять в любом месте программы.</p>
<p>В приведённом примере, переменные для осей синуса и косинуса заводятся сразу после построения графиков, а изменение толщины линий графиков происходит в самом конце программы.</p>

<div class="image-container">
<p><b>На этом месте располагается листинг, который не может быть правильно отображен в rss-ленте. Перейдите к оригинальной статье: <a href='http://inclab.ru/articles/kak-zadat-tolschinu-linii-na-grafike'>http://inclab.ru/articles/kak-zadat-tolschinu-linii-na-grafike</a></b></p>
<span class="image-description text-italic">Тригонометрические функции с линиями разной ширины.</span>
</div>	


<p>Результат работы программы:</p>
<div class="image-container" itemscope itemtype="http://schema.org/ImageObject">
    <picture>
        <source type="image/webp" srcset="/images/articles/kak-zadat-tolschinu-linii-na-grafike/w4s64a/risunok-grafiki-raznoy-tolschiny-v-scilab.webp"/>
        <img class="image-in-container" src="http://inclab.ru/images/articles/kak-zadat-tolschinu-linii-na-grafike/w4s64a/risunok-grafiki-raznoy-tolschiny-v-scilab.jpg" itemprop="contentUrl" alt="Рисунок. Графики разной толщины в scilab." title="Рисунок. Графики разной толщины в scilab."/>
    </picture>
    <span class="image-description text-italic" itemprop="description">Рисунок. Графики разной толщины в scilab.</span>
</div>

<h2>Пример с несколькими графиками.</h2>
<p>Давайте посмотрим, как быть, если на одной сетке располагается более одного графика и таких сеток несколько.</p>
<p>В этом случа придётся манипулировать параметром, отвечающим за номер графика на сетке координат <em>a.children.children<b>(1)</b></em>.</p>
<div class="image-container">
<p><b>На этом месте располагается листинг, который не может быть правильно отображен в rss-ленте. Перейдите к оригинальной статье: <a href='http://inclab.ru/articles/kak-zadat-tolschinu-linii-na-grafike'>http://inclab.ru/articles/kak-zadat-tolschinu-linii-na-grafike</a></b></p>
<span class="image-description text-italic">Установка толщины линий графиков на разных сетках.</span>
</div>	


<p>Результат работы программы:</p>
<div class="image-container" itemscope itemtype="http://schema.org/ImageObject">
    <picture>
        <source type="image/webp" srcset="/images/articles/kak-zadat-tolschinu-linii-na-grafike/1ts310y/risunok-grafiki-raznoy-tolschiny-na-raznyh-koordinatnyh-setkah-v-scilab.webp"/>
        <img class="image-in-container" src="http://inclab.ru/images/articles/kak-zadat-tolschinu-linii-na-grafike/1ts310y/risunok-grafiki-raznoy-tolschiny-na-raznyh-koordinatnyh-setkah-v-scilab.jpg" itemprop="contentUrl" alt="Рисунок. Графики разной толщины на разных координатных сетках в scilab." title="Рисунок. Графики разной толщины на разных координатных сетках в scilab."/>
    </picture>
    <span class="image-description text-italic" itemprop="description">Рисунок. Графики разной толщины на разных координатных сетках в scilab.</span>
</div>

<p>Обратите внимание, как нумеруются графики. В случае с тригонометрическими функциями, сначала на сетку был добавлен косинус с помощью функции <em>plot()</em>, а затем - синус. При установке ширины, обращение к потомкам осей происходит в обратном порядке: последний добавленный график имеет номер 1. </p>



<h2>Границы координатной сетки, стиль линий, настройка цвета.</h2>
<p>Полезным бывает несколько расшрить координатную сетку, так как по умолчанию она ограничивается максимальным и минимальным значениями графика.</p>
<p>Чтобы расширить (или уменьшить) границы сетки - оси \( x \) и \(y
  \), нужно обратиться к нужной сетке и задать желаемые знанчения в формате  <em>[Xmin, Ymin; Xmax, Ymax]</em>.</p>
<p>Например, указав значения <em>a.data_bounds=[-6,-2; 15,0]</em>, мы принудительно укажем, что координатная сетка будет изображена по горизонтальной оси от -6 до 15, а по вертикальной ограничиваться значениями от -2 до 0.</p>
<p></p>
<p>Помимо обрезки\расширения координатных осей в Scilab, вам может понадобиться сформировать цвет автоматически в формате <em>rgb</em>. Для этого необходимо воспользоваться функцией <em>color(r,g,b)</em>, где r,g,b - принимают значения от 0 до 255.</p>
<p></p>
<p>Кроме цвета и жирности, у графиков в Scilab можно менять начертание - стиль линии. Стиль задаётся натуральным числом от 1 до 10 с помощью обращения к нужному графику <em>a.children(1).line_style = 3</em></p>
<div class="image-container">
<p><b>На этом месте располагается листинг, который не может быть правильно отображен в rss-ленте. Перейдите к оригинальной статье: <a href='http://inclab.ru/articles/kak-zadat-tolschinu-linii-na-grafike'>http://inclab.ru/articles/kak-zadat-tolschinu-linii-na-grafike</a></b></p>
<span class="image-description text-italic">Установка границ координатной сетки, толщины, цвета и стиля линий на графике в Scilab.</span>
</div>	


<p>Результат работы программы:</p>
<div class="image-container" itemscope itemtype="http://schema.org/ImageObject">
    <picture>
        <source type="image/webp" srcset="/images/articles/kak-zadat-tolschinu-linii-na-grafike/1vbf6za/risunok-grafiki-raznoy-stilistiki-v-scilab.webp"/>
        <img class="image-in-container" src="http://inclab.ru/images/articles/kak-zadat-tolschinu-linii-na-grafike/1vbf6za/risunok-grafiki-raznoy-stilistiki-v-scilab.jpg" itemprop="contentUrl" alt="Рисунок. Графики разной стилистики в scilab." title="Рисунок. Графики разной стилистики в scilab."/>
    </picture>
    <span class="image-description text-italic" itemprop="description">Рисунок. Графики разной стилистики в scilab.</span>
</div>

<p></p>

<p><b>Данная статья получила продолжение в материале <a href="https://inclab.ru/beginner/nastroyka-grafikov-v-scilab-polnyy-gayd">Настройка графиков: свойства осей и сетки</a></b>.</p><p>Оригинальный адрес статьи: <a href='http://inclab.ru/articles/kak-zadat-tolschinu-linii-na-grafike'>http://inclab.ru/articles/kak-zadat-tolschinu-linii-na-grafike</a><p>]]></description>
			<pubDate>Wed, 22 Jun 2022 00:16:45 +0400</pubDate>
		</item>
		<item>
			<title><![CDATA[Список тем блога]]></title>
			<link>http://inclab.ru/tags</link>
			<guid>http://inclab.ru/tags</guid>
			<description><![CDATA[<p>Оригинальный адрес статьи: <a href='http://inclab.ru/tags'>http://inclab.ru/tags</a><p>]]></description>
			<pubDate>Fri, 07 Feb 2020 20:59:10 +0400</pubDate>
		</item>
		<item>
			<title><![CDATA[От автора]]></title>
			<link>http://inclab.ru/ot-avtora</link>
			<guid>http://inclab.ru/ot-avtora</guid>
			<description><![CDATA[<img src="http://inclab.ru" /><p>Данный ресурс представляет собой главы моей методички, написанной для студентов, столкнувшихся в процессе обучения с необходимостью использовать мат. пакет Scilab.</p>
<p>Материал, размещённый на сайте является обзорным и подходит для изучения базовых возможностей мат. пакета. Однако, на основе рассмотренных примеров уже можно решать широкий класс задач, в том числе, и мат. моделирования. Надеюсь, статьи будут полезны посетителям.</p>
<p>Буду рада получить обратную связь: комментарии, вопросы, пожелания.</p><p>Оригинальный адрес статьи: <a href='http://inclab.ru/ot-avtora'>http://inclab.ru/ot-avtora</a><p>]]></description>
			<pubDate>Fri, 07 Feb 2020 19:08:29 +0400</pubDate>
		</item>
		<item>
			<title><![CDATA[Создаём форму с вводом значений и выводом графиков по щелчку на кнопке в Scilab]]></title>
			<link>http://inclab.ru/articles/sozdanie-gui-v-scilab</link>
			<guid>http://inclab.ru/articles/sozdanie-gui-v-scilab</guid>
			<description><![CDATA[<img src="http://inclab.ru" />GUI ( Graphic User Interface )  это пользовательский интерфейс, позволяющий взаимодействовать с приложением, написанным на языке Scilab, человеку, не имеющему специальных знаний в программировании. Графический интерфейс пользователя определяет взаимодействие с пользователем на уровне визуализированной информации: заполнение форм, выбор пунктов меню, нажатие кнопок, заполнение полей ввода.<p>GUI ( Graphic User Interface )  это пользовательский интерфейс, позволяющий взаимодействовать с приложением, написанным на языке Scilab, человеку, не имеющему специальных знаний в программировании. Графический интерфейс пользователя определяет взаимодействие с пользователем на уровне визуализированной информации: заполнение форм, выбор пунктов меню, нажатие кнопок, заполнение полей ввода.</p>

<p>Мы рассмотрим создание графического приложения, реализующего возможность ввода пользователем параметров системы и построения графика в визуальном окне. Для этого будем решать следующую задачу.</p>

<p>Груз массы \( m \) кг. находится на пружине жёсткости \( c \) H/м и движется в жидкости. Сила сопротивления движению груза пропорциональна первой степени скорости груза \( R = -\alpha v, \alpha>0 \). Определить движение груза, если в начальный момент груз был смещён из положения равновесия на \( x_0 \) метров и отпущен без начальной скорости.</p>

<p>По 2-му закону Ньютона, движение груза описывается с помощью дифференциального уравнения 2-й степени, которое имеет вид:</p>
 <p class="text-center" >
\( \ddot{mx} = -cx - \alpha \dot{x} \)
</p> 
<p>и начальными условиями \( x(0) = x_0, \dot{x}(0)=0 \).</p>

<p>Как известно, ДУ второго порядка сводится к системе в нормальной форме Коши, состоящей из двух уравнений первой степени. Введём новые переменные \( z_1, z_2 \)  и сделаем необходимые переобозначения в исходной системе:</p>
<p>
 \begin{cases} z_1 = x  \\ z_2 = \dot{x} \end{cases}
 \begin{cases} \dot{z}_1 = z_2 \\ \dot{z}_2 = -{1 \over m}(cz_1 + \alpha z_2) \end{cases}
</p> 
<p>Прежде всего создадим графическое окно, на котором будут располагаться поля ввода параметров системы и график движения груза (рис. 15 и листинг 20).</p>

<div class="image-container">
<p><b>На этом месте располагается листинг, который не может быть правильно отображен в rss-ленте. Перейдите к оригинальной статье: <a href='http://inclab.ru/articles/sozdanie-gui-v-scilab'>http://inclab.ru/articles/sozdanie-gui-v-scilab</a></b></p>
<span class="image-description text-italic">Листинг 20. Создание графического окна с произвольным заголовком.</span>
</div> 

<div class="image-container" itemscope itemtype="http://schema.org/ImageObject">
    <picture>
        <source type="image/webp" srcset="/images/articles/sozdanie-gui-v-scilab/11olk5t/risunok-15-graficheskoe-okno-sozdannoe-s-pomoschyu-funkcii-createwindow-v-mat-pakete-scilab.webp"/>
        <img class="image-in-container" src="http://inclab.ru/images/articles/sozdanie-gui-v-scilab/11olk5t/risunok-15-graficheskoe-okno-sozdannoe-s-pomoschyu-funkcii-createwindow-v-mat-pakete-scilab.jpg" itemprop="contentUrl" alt="Рисунок 15. Графическое окно, созданное с помощью функции createWindow(); в мат. пакете Scilab" title="Рисунок 15. Графическое окно, созданное с помощью функции createWindow(); в мат. пакете Scilab"/>
    </picture>
    <span class="image-description text-italic" itemprop="description">Рисунок 15. Графическое окно, созданное с помощью функции createWindow(); в мат. пакете Scilab</span>
</div>
   
<p>На следующем этапе разместим в этом окне 6 полей для ввода параметров системы с соответствующими названиями (см. Рисунок 16).</p>

<div class="image-container" itemscope itemtype="http://schema.org/ImageObject">
    <picture>
        <source type="image/webp" srcset="/images/articles/sozdanie-gui-v-scilab/1pmpfxy/risunok-16-graficheskoe-okno-s-ui-ehlementami.webp"/>
        <img class="image-in-container" src="http://inclab.ru/images/articles/sozdanie-gui-v-scilab/1pmpfxy/risunok-16-graficheskoe-okno-s-ui-ehlementami.jpg" itemprop="contentUrl" alt="Рисунок 16. Графическое окно с UI  элементами." title="Рисунок 16. Графическое окно с UI  элементами."/>
    </picture>
    <span class="image-description text-italic" itemprop="description">Рисунок 16. Графическое окно с UI  элементами.</span>
</div>
 

<p>Обратите внимание, что положение каждого из элементов задается в относительных единицах «Units», причем начало отсчета находится в левом нижнем углу графического окна (листинг 21).</p>

 
<div class="image-container">
<p><b>На этом месте располагается листинг, который не может быть правильно отображен в rss-ленте. Перейдите к оригинальной статье: <a href='http://inclab.ru/articles/sozdanie-gui-v-scilab'>http://inclab.ru/articles/sozdanie-gui-v-scilab</a></b></p>
<span class="image-description text-italic">Листинг 21. Фрагмент кода добавления UI  элементов на  графическое окно.</span>
</div> 


<p>Добавим параметры для численного решения задачи: это начальное положение груза, время моделирования и шаг дискретизации. </p>

 
<div class="image-container">
<p><b>На этом месте располагается листинг, который не может быть правильно отображен в rss-ленте. Перейдите к оригинальной статье: <a href='http://inclab.ru/articles/sozdanie-gui-v-scilab'>http://inclab.ru/articles/sozdanie-gui-v-scilab</a></b></p>
<span class="image-description text-italic">Параметры, необходимые для функции ODE().</span>
</div> 


<p>Рассмотрим подробно добавление UI - элемента на примере создания  текстового поля  для ввода пользователем массы груза.</p> 

<div class="image-container">
<p><b>На этом месте располагается листинг, который не может быть правильно отображен в rss-ленте. Перейдите к оригинальной статье: <a href='http://inclab.ru/articles/sozdanie-gui-v-scilab'>http://inclab.ru/articles/sozdanie-gui-v-scilab</a></b></p>
<span class="image-description text-italic">Добравление поля и его названия для ввода массы груза.</span>
</div> 


<p>Элементы пользовательского интерфейса создаются с помощью функции <b>uicontrol()</b> с различными параметрами. <b>Первый параметр обозначает окно</b>, на которое будет добавлен элемент, в нашем случае это параметр <b>mainWindow</b>.<br/>

Далее указывается тип (style) создаваемого элемента, у нас это <b>text  для лейбла</b> поля и <b>edit  для самого поля ввода</b> массы \(m \). <br/>
Следующим параметром, как правило, идет значение создаваемого элемента по умолчанию (string), мы задали название лейбла <b>Масса груза m</b> и значение в <b>12</b> кг. для поля edit. <br/>

Параметры units и position задают положение элемента на графическом окне mainWindow. Значение normalized данного параметра означает, что элемент будет спозиционирован относительно на графическом окне. Значение [0.3 0.8 0.125 0.05] означает, что элемент будет помещен в точку  (0.3; 0.8) графического окна и займёт 0.125 относительных единиц в ширину и 0.05 относительных единиц в высоту. </p>

 <p>Нам осталось добавить кнопку, по которой будут происходить вычисления и зарезервировать место для вывода графика движения груза.</p>
<div class="image-container" itemscope itemtype="http://schema.org/ImageObject">
    <picture>
        <source type="image/webp" srcset="/images/articles/sozdanie-gui-v-scilab/138p02q/risunok-17-ehlement-knopka-polzovatelskogo-interfesa-sozdannogo-na-yazyke-scilab.webp"/>
        <img class="image-in-container" src="http://inclab.ru/images/articles/sozdanie-gui-v-scilab/138p02q/risunok-17-ehlement-knopka-polzovatelskogo-interfesa-sozdannogo-na-yazyke-scilab.jpg" itemprop="contentUrl" alt="Рисунок 17. Элемент «Кнопка» пользовательского интерфеса, созданного на языке Scilab." title="Рисунок 17. Элемент «Кнопка» пользовательского интерфеса, созданного на языке Scilab."/>
    </picture>
    <span class="image-description text-italic" itemprop="description">Рисунок 17. Элемент «Кнопка» пользовательского интерфеса, созданного на языке Scilab.</span>
</div>
 
<p>Создадим кнопку «начать расчет», по нажатию на которую, будет вызываться функция startCalculus() (см. Листинг 22 и рисунок 17).</p>

 
<div class="image-container">
<p><b>На этом месте располагается листинг, который не может быть правильно отображен в rss-ленте. Перейдите к оригинальной статье: <a href='http://inclab.ru/articles/sozdanie-gui-v-scilab'>http://inclab.ru/articles/sozdanie-gui-v-scilab</a></b></p>
<span class="image-description text-italic">Листинг 22. Создание кнопки «начать расчет» на языке Scilab.</span>
</div> 
  
    
<p>Зарезервируем место для вывода графического решения задачи на графическом окне mainWindow (см. Листинг 23). </p>

 
<div class="image-container">
<p><b>На этом месте располагается листинг, который не может быть правильно отображен в rss-ленте. Перейдите к оригинальной статье: <a href='http://inclab.ru/articles/sozdanie-gui-v-scilab'>http://inclab.ru/articles/sozdanie-gui-v-scilab</a></b></p>
<span class="image-description text-italic">Листинг 23. Выделение области для вывода графика на графическом окне mainWindow.</span>
</div> 

 



<p>В итоге мы получим графическое окно, на котором расположены необходимые элементы управления, такие что пользователь, не имеющий специальных навыков программирования в среде Scilab, мог бы задавать различные параметры системы, необходимые для численного решения задачи о грузе, подвешенном на пружине (см. рисунок 18)</p>

<div class="image-container" itemscope itemtype="http://schema.org/ImageObject">
    <picture>
        <source type="image/webp" srcset="/images/articles/sozdanie-gui-v-scilab/9kyjr/risunok-18-vydelenie-oblasti-dlya-vyvoda-grafika-na-graficheskom-okne-mainwindow.webp"/>
        <img class="image-in-container" src="http://inclab.ru/images/articles/sozdanie-gui-v-scilab/9kyjr/risunok-18-vydelenie-oblasti-dlya-vyvoda-grafika-na-graficheskom-okne-mainwindow.jpg" itemprop="contentUrl" alt="Рисунок 18. Выделение области для вывода графика на графическом окне mainWindow." title="Рисунок 18. Выделение области для вывода графика на графическом окне mainWindow."/>
    </picture>
    <span class="image-description text-italic" itemprop="description">Рисунок 18. Выделение области для вывода графика на графическом окне mainWindow.</span>
</div>
   

<p>По нажатию на кнопку «начать расчет», происходит вызов пользовательской функции <b>startCalculus()</b>, в которой значения всех полей ввода записываются в переменные</p>

<div class="image-container">
<p><b>На этом месте располагается листинг, который не может быть правильно отображен в rss-ленте. Перейдите к оригинальной статье: <a href='http://inclab.ru/articles/sozdanie-gui-v-scilab'>http://inclab.ru/articles/sozdanie-gui-v-scilab</a></b></p>
<span class="image-description text-italic">Листинг 24. Фрагмент функции, где происходит считывание значений с пользовательской формы.</span>
</div> 

<p>далее формируются входные параметры для функции ode() для решения дифференциального уравнения:  </p>
  
 <div class="image-container">
<p><b>На этом месте располагается листинг, который не может быть правильно отображен в rss-ленте. Перейдите к оригинальной статье: <a href='http://inclab.ru/articles/sozdanie-gui-v-scilab'>http://inclab.ru/articles/sozdanie-gui-v-scilab</a></b></p>
<span class="image-description text-italic">Листинг 25. Задание отрезка интегрирования и начальных уловий для ode().</span>
</div>  

<p>Численное интегрирование с введёнными параметрами происходит при помощи функции func() за пределами startCalculus()</p>
 
 <div class="image-container">
<p><b>На этом месте располагается листинг, который не может быть правильно отображен в rss-ленте. Перейдите к оригинальной статье: <a href='http://inclab.ru/articles/sozdanie-gui-v-scilab'>http://inclab.ru/articles/sozdanie-gui-v-scilab</a></b></p>
<span class="image-description text-italic">Листинг 26. Матричная форма решения диф.уравнения второй степени.</span>
</div> 

  
<p>Вернёмся к startCalculus() и в конце функции осуществим вывод графика движения груза.</p>

 <div class="image-container">
<p><b>На этом месте располагается листинг, который не может быть правильно отображен в rss-ленте. Перейдите к оригинальной статье: <a href='http://inclab.ru/articles/sozdanie-gui-v-scilab'>http://inclab.ru/articles/sozdanie-gui-v-scilab</a></b></p>
<span class="image-description text-italic">Листинг 28. Добавление графика на окно.</span>
</div>

 <div class="image-container" itemscope itemtype="http://schema.org/ImageObject">
    <picture>
        <source type="image/webp" srcset="/images/articles/sozdanie-gui-v-scilab/1frfanm/risunok-19-rezultat-resheniya-zadachi.webp"/>
        <img class="image-in-container" src="http://inclab.ru/images/articles/sozdanie-gui-v-scilab/1frfanm/risunok-19-rezultat-resheniya-zadachi.jpg" itemprop="contentUrl" alt="Рисунок 19. Результат решения задачи." title="Рисунок 19. Результат решения задачи."/>
    </picture>
    <span class="image-description text-italic" itemprop="description">Рисунок 19. Результат решения задачи.</span>
</div>
   
<p>Оригинальный адрес статьи: <a href='http://inclab.ru/articles/sozdanie-gui-v-scilab'>http://inclab.ru/articles/sozdanie-gui-v-scilab</a><p>]]></description>
			<pubDate>Thu, 04 Nov 2021 21:05:42 +0400</pubDate>
		</item>
		<item>
			<title><![CDATA[Исследование решений обыкновенных дифференциальных уравнений в scilab]]></title>
			<link>http://inclab.ru/articles/reshenie-differencialnih-uravnenij-v-scilab</link>
			<guid>http://inclab.ru/articles/reshenie-differencialnih-uravnenij-v-scilab</guid>
			<description><![CDATA[<img src="http://inclab.ru" />Дифференциальные уравнения возникают в широком классе задач по описанию управляемых энергетических, промышленных и других процессов и комплексов. В настоящее время наблюдается бурное развитие робототехники, разработка и эксплуатация новых моделей роботов и промышленных манипуляторов, что стимулирует активные исследования по математической и прикладной теории управления, моделированию и конструированию управляемых систем.<p>Дифференциальные уравнения возникают в широком классе задач по описанию управляемых энергетических, промышленных и других процессов и комплексов. В настоящее время наблюдается бурное развитие робототехники, разработка и эксплуатация новых моделей роботов и промышленных манипуляторов, что стимулирует активные исследования по математической и прикладной теории управления, моделированию и конструированию управляемых систем.</p>
<p>Мы рассмотрим способы исследования сложных механических систем, моделируемых дифференциальными уравнениями. Рассмотрим способы конструирования управления нескольких видов для механической системы с двумя степенями свободы. А также, проведем визуализацию процесса стабилизации движения.</p>

<h2>Дифференциальные уравнения n-го порядка</h2>

<p><em>Дифференциальным уравнением n-го порядка</em> называется соотношение вида</p>

<p class="text-center"> \( H(t, x', x'', ... ,x^{(n)}) =0 \) </p>
<p><em>Решением дифференциального уравнения является функция \( x(t) \),</em> которая обращает это уравнение в тождество. Дифференциальные уравнения имеют бесконечное множество решений.
</p>
<p><em>Чтобы однозначно определить решение некоторой задачи, необходимо задавать начальные условия.</em> Количество таких условий должно совпадать с порядком уравнения. А решение, найденное для таких условий называется решением задачи Коши.</p>

 
<h3>6.2 Пример решения оду в Scilab</h3>
  
<p>Для решения обыкновенных дифференциальных уравнений (ОДУ) в Scilab используется <br/>функция <em>y = ode([type], y0, t0, t, func)</em>.<br/> Разберём, что обозначает каждый из параметров у этой функции.</p>
<p>  
<em>type</em> - необязательный строковый параметр, с помощью которого можно выбрать метод решения ОДУ. Обычно этот параметр опускается.<br/>
<em>t0</em> - <em>скаляр</em> начальный момент отрезка интегрирования. Обычно \( t0 = 0 \).<br/>

<em>y0</em> - начальные условия. Отметим, что \(y0 \)  это <em>вектор</em>, размерность которого совпадает с порядком ОДУ. Так, для ОДУ 2-го порядка необходимо задать значения в начальный момент времени для функции и её производной, т.е. использовать запись \(y0 = [0.1, 0.3]\).<br/>
<em>t</em> - <em>вектор</em>, задающий узлы сетки, в которых ищем решение. Как правило, вектор t задается следующим образом <em>t=t0:d:tmax</em>, где \(t0\) - начальный момент отрезка интегрирования, \(d\) - шаг дискретизации, \(tmax\) - конечный момент отрезка интегрирования.<br/>

<em>func</em> - пользовательская  <em>функция</em>, определяющая правую часть уравнения.<br/>

<em>y</em> - <em>вектор</em> решений.</p>
  
  
  
<p>Рассмотрим использование функции <em>ode()</em> на примере решения следующей задачи.</p>

<p>Найти угловую скорость \( \omega(t) \)  твердого тела вокруг неподвижной оси, если заданы начальная угловая скорость тела \( \omega_0=1 \) и угловое ускорение \( \varepsilon(t) = 2+0.5sin(t) \). Найти значение \( \omega(t) \) в момент времени \( t_1=1.3 \). Построить график функций. </p>

  <div class="image-container" itemscope itemtype="http://schema.org/ImageObject">
    <picture>
        <source type="image/webp" srcset="/images/articles/reshenie-differencialnih-uravnenij-v-scilab/8rjjd7/risunok-9-sravnenie-grafikov-uglovoy-skorosti-tochki-po-funkcii-naydennoy-analiticheskim-i-chislenny.webp"/>
        <img class="image-in-container" src="http://inclab.ru/images/articles/reshenie-differencialnih-uravnenij-v-scilab/8rjjd7/risunok-9-sravnenie-grafikov-uglovoy-skorosti-tochki-po-funkcii-naydennoy-analiticheskim-i-chislenny.jpg" itemprop="contentUrl" alt="Рисунок 9. Сравнение графиков угловой скорости точки, по функции, найденной аналитическим и численным интегрированием. Красным кружком обозначено значение скорости точки в момент времени t=1.3c." title="Рисунок 9. Сравнение графиков угловой скорости точки, по функции, найденной аналитическим и численным интегрированием. Красным кружком обозначено значение скорости точки в момент времени t=1.3c."/>
    </picture>
    <span class="image-description text-italic" itemprop="description">Рисунок 9. Сравнение графиков угловой скорости точки, по функции, найденной аналитическим и численным интегрированием. Красным кружком обозначено значение скорости точки в момент времени t=1.3c.</span>
</div>



<p>Угловая скорость точки может быть найдена из дифференциального уравнения</p>

<p class="text-center"> \( \omega = {d\varphi \over dt}  \)  </p>

<p>В нашем случае по условию задачи указаны следующие параметры для функции <em>ode()</em>:<br/> 
  
  \(t0=0 \) начальный момент времени,<br/> 
  \(y0 = 1\) начальное условие одно, т.к. порядок уравнения равен 1, это начальная угловая скорость тела \( \omega_0=1 \) <br/>
  <em>t=t0:h:tmax</em> - <em>вектор</em>, задающий узлы сетки.</p>

<p>Результат работы программы представлен на рис.9, исходный код на листинге 15.</p>

 

<div class="image-container">
<p><b>На этом месте располагается листинг, который не может быть правильно отображен в rss-ленте. Перейдите к оригинальной статье: <a href='http://inclab.ru/articles/reshenie-differencialnih-uravnenij-v-scilab'>http://inclab.ru/articles/reshenie-differencialnih-uravnenij-v-scilab</a></b></p>
<span class="image-description text-italic">Листинг 15. Программа поиска угловой скорости точки с помощью функции ode().</span>
</div>	



<p>Отметим, что в данной программе фигурирует пользовательская функция <em>aomega(t)</em>, представляющая собой угловую скорость, найденную аналитически с указанным начальным условием.</p>

<p>Функция \( f = 2t - 0,5cos(t) + 1,5 \)   единственное решение дифференциального уравнения, удовлетворяющее заданным начальным условиям, то есть, функция  \(f\)     решение  задачи Коши.</p>



 
<h3>6.3 Cистемы дифференциальных уравнений</h3> 

<p>Для решения систем ОДУ в Scilab используется та же функция <em>y = ode([type], y0, t0, t, func)</em>. Однако важным требованием является запись исследуемой системы <em>в нормальной форме Коши</em>.</p>

<p>Системой дифференциальных уравнений, записанной в нормальной форме Коши называется система, где слева стоят производные фазовых переменных, а справа  некоторые функции, т.е. система вида</p>

<p class="text-center" >
 \begin{cases} x_1' = f_1(t,x_1,...x_n) \\ x_2' = f_2(t,x_1,...x_n) \\ ...\\ x_n' = f_n(t,x_1,...x_n) \end{cases}
</p>

<p>Решением системы ОДУ является <em>вектор x(t)</em>, который обращает это уравнение в тождество. Размерность вектора равна количеству уравнений в системе.</p>

<p><em>Стоит отметить, что дифференциальное уравнение n-ой степени может быть представлено в виде системы из n-уравнений первой степени, что позволяет решать задачу Коши для полученной системы ОДУ</em>.</p>

 
<h3>6.4 Примеры поиска решения систем ОДУ в Scilab</h3>

 
<p><b>Решение системы ОДУ</b></p>

<p>Рассмотрим решение задачи Коши для системы уравнений</p>
<p class="text-center" >
 \begin{cases} x' = cos(xy) \\ y' = sin(x+ty) \end{cases}
</p> 

<p>на интервале \( [0; 10]\) и с начальными условиями \(x(0)=0, y(0)=0 \).</p>

<p>Для поиска решения данной задачи, нам <em>необходимо привести исходную систему к нормальному виду Коши</em>. Для этого введём новые переменные \( (z1, z2) \) и сделаем необходимые переобозначения в исходной системе:</p>

 <p>Рассмотрим решение задачи Коши для системы уравнений</p>
<p class="text-center" >
 \begin{cases} z_1 = x  \\ z_2 = y \end{cases}
 \begin{cases} z_1' = cos(z_1 z_2) \\ z_2' = sin(z_1 + t z_2) \end{cases}
</p> 

<p>Код программы, реализующей поиск решения системы дифференциальных уравнений представлен на листинге 16. Обратите внимание, как происходит обращение к компонентам вектора решения \( z(t)  \).</p>  
<div class="image-container">
<p><b>На этом месте располагается листинг, который не может быть правильно отображен в rss-ленте. Перейдите к оригинальной статье: <a href='http://inclab.ru/articles/reshenie-differencialnih-uravnenij-v-scilab'>http://inclab.ru/articles/reshenie-differencialnih-uravnenij-v-scilab</a></b></p>
<span class="image-description text-italic">Листинг 16. Программа поиска решения системы дифференциальных уравнений с его графической интерпретацией.</span>
</div>	


<p>Для наглядной реализации сформировано графическое решение на рис. 10. </p>
<div class="image-container" itemscope itemtype="http://schema.org/ImageObject">
    <picture>
        <source type="image/webp" srcset="/images/articles/reshenie-differencialnih-uravnenij-v-scilab/1ayq2d/risunok-10-graficheskoe-reshenie-zadachi-koshi-s-pomoschyu-funkcii-ode.webp"/>
        <img class="image-in-container" src="http://inclab.ru/images/articles/reshenie-differencialnih-uravnenij-v-scilab/1ayq2d/risunok-10-graficheskoe-reshenie-zadachi-koshi-s-pomoschyu-funkcii-ode.jpg" itemprop="contentUrl" alt="Рисунок 10. Графическое решение задачи Коши с помощью функции ode()." title="Рисунок 10. Графическое решение задачи Коши с помощью функции ode()."/>
    </picture>
    <span class="image-description text-italic" itemprop="description">Рисунок 10. Графическое решение задачи Коши с помощью функции ode().</span>
</div>
  
 
<p><b>Решение системы ОДУ в матричной форме</b></p>

<p>Рассмотрим решение задачи Коши для системы уравнений, заданных в матричном виде</p>

 <p class="text-center" >
 \begin{matrix}
{dy \over dx}  =Ax, & y= { \Biggl( \begin{matrix} y_1 \\ y_2 \end{matrix} \Biggr) }, & A= { \Biggl( \begin{matrix} 2 & 0 \\ 1 & -1 \end{matrix} \Biggr) } 
    \end{matrix}
</p> 

<p> на интервале \( [0; 10] \) и начальными условиями \( y_1(0)=1, y_2(0)=0 \).</p>

<p>Код программы, реализующей поиск решения системы дифференциальных уравнений представлен на листинге 17. Обратите внимание, как происходит обращение к компонентам вектора решения \(y(t)\).</p>

<div class="image-container">
<p><b>На этом месте располагается листинг, который не может быть правильно отображен в rss-ленте. Перейдите к оригинальной статье: <a href='http://inclab.ru/articles/reshenie-differencialnih-uravnenij-v-scilab'>http://inclab.ru/articles/reshenie-differencialnih-uravnenij-v-scilab</a></b></p>
<span class="image-description text-italic">Листинг 17. Решение задачи Коши для системы ОДУ, в матричной форме на языке Scilab.</span>
</div>    
  
<p>Для наглядной реализации сформировано графическое решение на рис. 11. </p>
<div class="image-container" itemscope itemtype="http://schema.org/ImageObject">
    <picture>
        <source type="image/webp" srcset="/images/articles/reshenie-differencialnih-uravnenij-v-scilab/116vtpl/risunok-11-graficheskoe-reshenie-zadachi-koshi-s-pomoschyu-funkcii-ode.webp"/>
        <img class="image-in-container" src="http://inclab.ru/images/articles/reshenie-differencialnih-uravnenij-v-scilab/116vtpl/risunok-11-graficheskoe-reshenie-zadachi-koshi-s-pomoschyu-funkcii-ode.jpg" itemprop="contentUrl" alt="Рисунок 11. Графическое решение задачи Коши с помощью функции ode()." title="Рисунок 11. Графическое решение задачи Коши с помощью функции ode()."/>
    </picture>
    <span class="image-description text-italic" itemprop="description">Рисунок 11. Графическое решение задачи Коши с помощью функции ode().</span>
</div>
   


<p><b>Решение ДУ 2-го порядка путём сведения к системе уравнений</b></p>

<p>Продолжим знакомиться с возможностями функции <em>ode()</em> на примере решения задачи механики на второй закон Ньютона.</p>

<p>Груз находится на пружине жёсткости \( c=12  \) H/м, масса груза \( m=68.7 \) кг. Определить закон движения груза, если на него действует сила \( F=100.5sin(2t) + {2\pi \over 3} \) H.</p>

<p>По 2-му закону Ньютона, движение груза описывается с помощью дифференциального уравнения 2-й степени, которое имеет вид:</p>
 <p class="text-center" >
\( \ddot{mx} =-cx + F(t) \)
</p> 
<p>и начальными условиями \( x(0)= 0, ;\ \dot{x}(0)= 0 \).</p>

<p>Как известно, ОДУ второго порядка сводится к системе в нормальной форме Коши, состоящей из двух уравнений первой степени. Введём новые переменные \( (z_1, z_2) \)  и сделаем необходимые переобозначения в исходной системе:</p>
<p>
 \begin{cases} z_1 = x  \\ z_2 = \dot{x} \end{cases}
 \begin{cases} \dot{z}_1 = z_2 \\ \dot{z}_2 = {1 \over m}(-cz_1 + F(t)) \end{cases}
</p> 
<p>Код программы, реализующей поиск решения системы дифференциальных уравнений представлен на листинге 18.  Обратите внимание, как происходит обращение к компонентам вектора решения \(  y(t) \).</p>

<div class="image-container">
<p><b>На этом месте располагается листинг, который не может быть правильно отображен в rss-ленте. Перейдите к оригинальной статье: <a href='http://inclab.ru/articles/reshenie-differencialnih-uravnenij-v-scilab'>http://inclab.ru/articles/reshenie-differencialnih-uravnenij-v-scilab</a></b></p>
<span class="image-description text-italic">Листинг 18. Решение дифференциального уравнения 2-ой степени, путём сведения к системе из 2-х уравнений 1-ой степени на языке Scilab.</span>
</div>    

<p>Для наглядной реализации сформировано графическое решение на рис. 12. Компонента \( z_1  \) представляет собой координату груза, а компонента \( z_2 \) - скорость груза.</p>
<div class="image-container" itemscope itemtype="http://schema.org/ImageObject">
    <picture>
        <source type="image/webp" srcset="/images/articles/reshenie-differencialnih-uravnenij-v-scilab/ee2ppp/risunok-12-grafiki-dvizheniya-gruza-na-pruzhine-dlya-komponent-z_1-i-z_2-sootvetstvenno.webp"/>
        <img class="image-in-container" src="http://inclab.ru/images/articles/reshenie-differencialnih-uravnenij-v-scilab/ee2ppp/risunok-12-grafiki-dvizheniya-gruza-na-pruzhine-dlya-komponent-z_1-i-z_2-sootvetstvenno.jpg" itemprop="contentUrl" alt="Рисунок 12. Графики движения груза на пружине для компонент \( z_1 и z_2 \)  соответственно." title="Рисунок 12. Графики движения груза на пружине для компонент \( z_1 и z_2 \)  соответственно."/>
    </picture>
    <span class="image-description text-italic" itemprop="description">Рисунок 12. Графики движения груза на пружине для компонент \( z_1 и z_2 \)  соответственно.</span>
</div>
   



<p>Оригинальный адрес статьи: <a href='http://inclab.ru/articles/reshenie-differencialnih-uravnenij-v-scilab'>http://inclab.ru/articles/reshenie-differencialnih-uravnenij-v-scilab</a><p>]]></description>
			<pubDate>Mon, 14 Nov 2022 01:01:02 +0400</pubDate>
		</item>
		<item>
			<title><![CDATA[Построение графиков в scilab]]></title>
			<link>http://inclab.ru/articles/postroenie-grafikov-v-scilab</link>
			<guid>http://inclab.ru/articles/postroenie-grafikov-v-scilab</guid>
			<description><![CDATA[<img src="http://inclab.ru" />Математический пакет Scilab располагает широким и гибко настраиваемым аппаратом для построения двумерных графиков и трёхмерных изображений. <p>Математический пакет Scilab располагает широким и гибко настраиваемым аппаратом для построения двумерных графиков и трёхмерных изображений. </p>
<p><b>Данная статья получила продолжение: <a href="http://inclab.ru/beginner/kak-zadat-tolschinu-linii-na-grafike">Как настраивать толщину и начертание графиков в Scilab</a></b> и дополнительный разбор <a href="https://inclab.ru/beginner/nastroyka-grafikov-v-scilab-polnyy-gayd">Настройки графиков: свойства осей и сетки</a>.</p>
<p>Перечислим основные функции для  оформления графика:</p>

<p><em>xgrid()</em> - добавление сетки на график;<br/>
<em>xtitle("Название графика", "Название оси абсцисс", "Название оси ординат")</em> - добавление подписей;<br/>
<em>legend(..,  , .. )</em> - создание легенды с перечнем всех отображенных графиков в системе координат;<br/>
<em>subplot(mnk)</em> - функция разделения окна на матрицу, содержащую  \( m \)  строк, \(n столбцов\), а \(k \)- это номер ячейки, в которой будет отображен график.</p>

<p>Например, subplot(312) разобъёт графичекое окно на 3 строки, 1 столбец и нарисует график во второй ячейке:</p>
<div class="image-container" itemscope itemtype="http://schema.org/ImageObject">
    <picture>
        <source type="image/webp" srcset="/images/articles/postroenie-grafikov-v-scilab/60k5nf/raspolozhenie-grafika-v-graficheskom-okne-subplot-312.webp"/>
        <img class="image-in-container" src="http://inclab.ru/images/articles/postroenie-grafikov-v-scilab/60k5nf/raspolozhenie-grafika-v-graficheskom-okne-subplot-312.jpg" itemprop="contentUrl" alt="Расположение графика в графическом окне subplot(312)." title="Расположение графика в графическом окне subplot(312)."/>
    </picture>
    <span class="image-description text-italic" itemprop="description">Расположение графика в графическом окне subplot(312).</span>
</div>
<p>Например, subplot(234) разобъёт графичекое окно на 2 строки, 3 столбца и нарисует график в четвёртой ячейке:</p>
<div class="image-container" itemscope itemtype="http://schema.org/ImageObject">
    <picture>
        <source type="image/webp" srcset="/images/articles/postroenie-grafikov-v-scilab/us79cf/raspolozhenie-grafika-v-graficheskom-okne-subplot-234.webp"/>
        <img class="image-in-container" src="http://inclab.ru/images/articles/postroenie-grafikov-v-scilab/us79cf/raspolozhenie-grafika-v-graficheskom-okne-subplot-234.jpg" itemprop="contentUrl" alt="Расположение графика в графическом окне subplot(234)." title="Расположение графика в графическом окне subplot(234)."/>
    </picture>
    <span class="image-description text-italic" itemprop="description">Расположение графика в графическом окне subplot(234).</span>
</div>
  


<h2>5.1 Двумерные графики</h2>

<p><em>Для построения графиков</em>, в которых положение точки задаётся двумя величинами, в Scilab <em>нужно воспользоваться функцией plot(x, y , s)</em>. Здесь первая переменная \( х \) - массив абсцисс, \( у \) - массив ординат, \( s \) - необязательный параметр, отвечающий за цвет графика, толщину и начертание линии.</p>

<p>Установить желаемый вид и цвет графика можно, указав строковый параметр \( s \), который может состоять из одного, двух или трёх символов, определяющие соответственно: <em>цвет линии, тип маркера, тип линии графика</em>. Возможные значения перечислены в таблицах 2-4.</p>

 
<div class="image-container" itemscope itemtype="http://schema.org/ImageObject">
    <picture>
        <source type="image/webp" srcset="/images/articles/postroenie-grafikov-v-scilab/el3mbm/tablica-2-simvoly-opredelyayuschie-cvet-linii-grafika.webp"/>
        <img class="image-in-container" src="http://inclab.ru/images/articles/postroenie-grafikov-v-scilab/el3mbm/tablica-2-simvoly-opredelyayuschie-cvet-linii-grafika.jpg" itemprop="contentUrl" alt="Таблица 2. Символы, определяющие цвет линии графика." title="Таблица 2. Символы, определяющие цвет линии графика."/>
    </picture>
    <span class="image-description text-italic" itemprop="description">Таблица 2. Символы, определяющие цвет линии графика.</span>
</div>

<div class="image-container" itemscope itemtype="http://schema.org/ImageObject">
    <picture>
        <source type="image/webp" srcset="/images/articles/postroenie-grafikov-v-scilab/bnfhgd/tablica-3-simvoly-opredelyayuschie-tip-linii-grafika.webp"/>
        <img class="image-in-container" src="http://inclab.ru/images/articles/postroenie-grafikov-v-scilab/bnfhgd/tablica-3-simvoly-opredelyayuschie-tip-linii-grafika.jpg" itemprop="contentUrl" alt="Таблица 3. Символы, определяющие тип линии графика." title="Таблица 3. Символы, определяющие тип линии графика."/>
    </picture>
    <span class="image-description text-italic" itemprop="description">Таблица 3. Символы, определяющие тип линии графика.</span>
</div>

<div class="image-container" itemscope itemtype="http://schema.org/ImageObject">
    <picture>
        <source type="image/webp" srcset="/images/articles/postroenie-grafikov-v-scilab/1ic0afh/tablica-4-simvoly-opredelyayuschie-tip-markera.webp"/>
        <img class="image-in-container" src="http://inclab.ru/images/articles/postroenie-grafikov-v-scilab/1ic0afh/tablica-4-simvoly-opredelyayuschie-tip-markera.jpg" itemprop="contentUrl" alt="Таблица 4. Символы, определяющие тип маркера" title="Таблица 4. Символы, определяющие тип маркера"/>
    </picture>
    <span class="image-description text-italic" itemprop="description">Таблица 4. Символы, определяющие тип маркера</span>
</div>

<h3>Построение графика по точкам</h3>
<p>Для построения графика по точкам необходимо задать два массива: абсцисс и ординат, после чего воспользоваться функцией \( plot(x, y)\). Для демонстрации используем пример, любезно предоставленнный miklev:</p>

<div class="image-container">
<p><b>На этом месте располагается листинг, который не может быть правильно отображен в rss-ленте. Перейдите к оригинальной статье: <a href='http://inclab.ru/articles/postroenie-grafikov-v-scilab'>http://inclab.ru/articles/postroenie-grafikov-v-scilab</a></b></p>
<span class="image-description text-italic">Программа построения графиков по точкам в scilab</span>
</div>	

<div class="image-container" itemscope itemtype="http://schema.org/ImageObject">
    <picture>
        <source type="image/webp" srcset="/images/articles/postroenie-grafikov-v-scilab/19c4qtq/postroenie-grafikov-v-scilab.webp"/>
        <img class="image-in-container" src="http://inclab.ru/images/articles/postroenie-grafikov-v-scilab/19c4qtq/postroenie-grafikov-v-scilab.jpg" itemprop="contentUrl" alt="Построение графиков в scilab" title="Построение графиков в scilab"/>
    </picture>
    <span class="image-description text-italic" itemprop="description">Построение графиков в scilab</span>
</div>


<h3>Построение графика по заданному уравнению</h3>
<p>Для демонстрации работы функции <em>plot()</em> построим <em>графики траектории движения точки</em> по заданным уравнениям \( x(t), y(t) \) на плоскости и в заданном диапазоне времени T (таблица 5). Определим внешний вид каждого из графиков, а также оформим систему координат со всеми необходимыми подписями (листинг 13). Результат работы программы представлен на рис. 7.</p>

<div class="image-container" itemscope itemtype="http://schema.org/ImageObject">
    <picture>
        <source type="image/webp" srcset="/images/articles/postroenie-grafikov-v-scilab/tmiwz8/tablica-5-uravneniya-dvizheniya-materialnoy-tochki-i-promezhutok-vremeni.webp"/>
        <img class="image-in-container" src="http://inclab.ru/images/articles/postroenie-grafikov-v-scilab/tmiwz8/tablica-5-uravneniya-dvizheniya-materialnoy-tochki-i-promezhutok-vremeni.jpg" itemprop="contentUrl" alt="Таблица 5. Уравнения движения материальной точки и промежуток времени." title="Таблица 5. Уравнения движения материальной точки и промежуток времени."/>
    </picture>
    <span class="image-description text-italic" itemprop="description">Таблица 5. Уравнения движения материальной точки и промежуток времени.</span>
</div>
	
<div class="image-container" itemscope itemtype="http://schema.org/ImageObject">
    <picture>
        <source type="image/webp" srcset="/images/articles/postroenie-grafikov-v-scilab/dghvyp/risunok-7-postroenie-grafikov-dvizheniya-materialnoy-tochki.webp"/>
        <img class="image-in-container" src="http://inclab.ru/images/articles/postroenie-grafikov-v-scilab/dghvyp/risunok-7-postroenie-grafikov-dvizheniya-materialnoy-tochki.jpg" itemprop="contentUrl" alt="Рисунок 7. Построение графиков движения материальной точки." title="Рисунок 7. Построение графиков движения материальной точки."/>
    </picture>
    <span class="image-description text-italic" itemprop="description">Рисунок 7. Построение графиков движения материальной точки.</span>
</div>
	

<div class="image-container">
<p><b>На этом месте располагается листинг, который не может быть правильно отображен в rss-ленте. Перейдите к оригинальной статье: <a href='http://inclab.ru/articles/postroenie-grafikov-v-scilab'>http://inclab.ru/articles/postroenie-grafikov-v-scilab</a></b></p>
<span class="image-description text-italic">Листинг 13. Программа построения графиков движения материальной точки.</span>
</div>	

 
<h2>5.2 Построение трёхмерных изображений</h2>
 
<p>Для <em>построения поверхности</em> в Scilab используются функции <em>plot3d( plot3d1) и plot3d2(plot3d3)</em>. Их отличие состоит в том, что первая пара функций plot3d( plot3d1) строит поверхность из отдельно стоящих друг от друга грани (залитую одним цветом и залитую различными цветами соответсвенно), а вторая пара plot3d2(plot3d3) - цельное геометрическое тело.</p>

<p>Процесс построения графика функции вида \( Z(x,y) \) можно разделить на 3 этапа:<br/>
1.      Создание прямоугольной сетки с помощью  функции <em>linspace();</em><br/>
2.      Вычисление значений функции \( Z(x,y) \) в узлах сетки;<br/>
3.      Вызов функции <em>plot3d() или plot3d2()</em>.</p>

<p>В качестве примера, <em>построим сферу в трехмерной системе координат</em> с помощью функций <em>plot3d1 и plot3d2</em>.</p>

<div class="image-container" itemscope itemtype="http://schema.org/ImageObject">
    <picture>
        <source type="image/webp" srcset="/images/articles/postroenie-grafikov-v-scilab/1w6gla6/risunok-8-sfera-zadannaya-parametricheski-postroennaya-s-pomoschyu-funkcii-plot3d1-sleva-i-plot3d2-s.webp"/>
        <img class="image-in-container" src="http://inclab.ru/images/articles/postroenie-grafikov-v-scilab/1w6gla6/risunok-8-sfera-zadannaya-parametricheski-postroennaya-s-pomoschyu-funkcii-plot3d1-sleva-i-plot3d2-s.jpg" itemprop="contentUrl" alt="Рисунок 8. Сфера, заданная параметрически, построенная с помощью функции plot3d1 (слева) и plot3d2 (справа)." title="Рисунок 8. Сфера, заданная параметрически, построенная с помощью функции plot3d1 (слева) и plot3d2 (справа)."/>
    </picture>
    <span class="image-description text-italic" itemprop="description">Рисунок 8. Сфера, заданная параметрически, построенная с помощью функции plot3d1 (слева) и plot3d2 (справа).</span>
</div>


<p>Поверхность сферы в декартовых координатах \( (x,y,z) \) параметрически задаётся системой уравнений:   \( f(n) = \begin{cases}
x(u,v)=cos(u)cos(v) \\ y(u,v)=cos(u)sin(v) \\ z(u,v)=sin(u) \end{cases} \),<br/>  независимые переменные \( u и v \)  изменяются на промежутке \(  [-\pi; \pi] \). Результат работы программы представлен на рис.8, исходный код на листинге 14.</p>

 

<div class="image-container">
<p><b>На этом месте располагается листинг, который не может быть правильно отображен в rss-ленте. Перейдите к оригинальной статье: <a href='http://inclab.ru/articles/postroenie-grafikov-v-scilab'>http://inclab.ru/articles/postroenie-grafikov-v-scilab</a></b></p>
<span class="image-description text-italic">Листинг 14. Программа, реализующая построения трехмерного изображения сферы с помощью функции plot3d1  и plot3d2.</span>
</div>		

<p><em>Обратите внимание</em>, что при построении графиков поверхностей заданных параметрически , \(x(u,v), y(u,v) и z(u,v) \), необходимо сформировать матрицы \( X, Y и Z\)  одинакового размера.  Для этого <em>массивы</em> \( u и v \) <em>должны иметь одинаковый размер</em>.</p>

<p>Кроме того, если какая-либо функция из  \( X, Y или Z\)  зависит только от одного параметра \(  u или v \), необходимо провести <em>векторное умножение</em> на <em>единичный вектор ones()</em> размерности, равной размерности параметра, от которого эта функция не зависит (см. строку 10 листинга 14).</p>


<p><b>Данная статья получила продолжение: <a href="http://inclab.ru/beginner/kak-zadat-tolschinu-linii-na-grafike">Как настраивать толщину и начертание графиков в Scilab</a></b></p>

<p>Оригинальный адрес статьи: <a href='http://inclab.ru/articles/postroenie-grafikov-v-scilab'>http://inclab.ru/articles/postroenie-grafikov-v-scilab</a><p>]]></description>
			<pubDate>Fri, 24 Mar 2023 08:18:39 +0400</pubDate>
		</item>
		<item>
			<title><![CDATA[Использование циклов в scilab]]></title>
			<link>http://inclab.ru/articles/ispolzovanie-ciklov-v-scilab</link>
			<guid>http://inclab.ru/articles/ispolzovanie-ciklov-v-scilab</guid>
			<description><![CDATA[<img src="http://inclab.ru" />Часто в процессе решения инженерных или физических задача, а также задач по математическому моделированию, возникает необходимость проверять корректность полученных данных, выполнять разные вычисления, в зависимости от полученных результатов, перебирать значения и т.д. <p>Часто в процессе решения инженерных или физических задача, а также задач по математическому моделированию, возникает необходимость проверять корректность полученных данных, выполнять разные вычисления, в зависимости от полученных результатов, перебирать значения и т.д. Для этих нужд в Scilab существуют операторы цикла, присваивания, условные операторы, как и в других языках программирования.</p>
<p>Рассмотрим основные операторы, которые используются в процессе программирования в математическом пакете Scilab.</p>

<h2>4.1 Операторы цикла <em>for</em> и <em>while</em></h2>

<h3>Оператор цикла for</h3>
<p>Оператор цикла <em>for</em> состоит из заголовка, содержащего условия его выполнения, исполняемого тела цикла. Форма записи представлена ниже:</p>
<p><em>for</em><em>&nbsp; </em><em>j</em><em> = </em><em>jo</em><em>:</em><em>d</em><em>:</em><em>jmax</em><em><br /> &nbsp;&nbsp;&nbsp;&nbsp; операторы </em><br/>
<em>end</em><em>;</em></p>
<p>Здесь \( jo \) &ndash; это стартовое значение параметра,<br/>
  \( d \) &ndash; значение, на которое увеличивается параметр \( j \) на каждом шаге \( j = j+d \),<br/>
  \( jmax \) &ndash; конечное значение параметра \( j \).</p>
<p>Выполнение цикла начинается с присвоения&nbsp; параметру \( j \) начального значения \( jo \). Если параметр удовлетворяет условию \( j \le jmax \),то выполняются операторы тела цикла. Затем параметр \( j \) увеличивается на величину \( d \), и снова происходит проверка на выполнение условия \( j \le jmax \).</p>
<p>Оператор заканчивает свою работу, как только значение \( j \) превышает \( jmax \), а управление передаётся следующим за телом цикла операторам.</p>
<p>В качестве примера использования оператора <em>for</em> , рассмотрим метод Рунге-Кутты численного интегрирования обыкновенного дифференциального уравнения.</p>
<p>Рассмотри дифференциальное уравнение</p>

<p class="text-center"> \( y'=f(x,y) \)</p>
<p>с начальным условием \( y(x_0)=y_0 \). Положим \(  f(x,y)=sin(x)\).</p>
<p>Классический метод Рунге-Кутты 4-го порядка описывается следующей системой</p>
  <p>\( y_{i+1} = y_i + {h\over6}(k_1 + 2k_2 + 2k_3+k_4) \)<br/>
  где <br/>
  \( k_1 = f(x_i, y_i) \)<br/>
  \( k_2 = f(x_i+ {h\over2}, y_i+ {h\over2}k_1) \)<br/>
  \( k_3 = f(x_i+ {h\over2}, y_i+ {h\over2}k_2) \)<br/>  
  \( k_4 = f(x_i+ h, y_i+ hk_3) \)<br/>
  </p>
<p>Таким образом, для нахождения численного решения дифференциального уравнения \( y' = sin(x) \) с иcпользованием метода Рунге-Кутты 4-го порядка, нам потребуется написать пользовательскую функцию (<em>Листинг 10, строки 2-5</em>), описывающую правую часть ОДУ.</p>
<p>Далее, задать отрезок интегрирования с некоторым шагом <em>h</em>, что соответствует <em>строкам</em> <em>7-10 Листинга 10. </em>Заострим <strong>внимание</strong> читателя на том, что на строке <em>10 Листинга 10</em> мы сформировали <u>строку</u> из 101 элемента, а на строке <em>13 Листинга 10</em>&nbsp; -- <u>вектор</u> той же размерности. Обратите внимание, как задаются начальные условия (<em>Листинг 10, строка 16</em>).</p>
<p>Строки <em>19 &ndash; 27 Листинга 10</em> соответствуют реализации метода Рунге-Кутта, описанного выше. Результатом работы приложения будут графики решений ОДУ , полученных численно и аналитически (см. рис. 6).</p>

<div class="image-container" itemscope itemtype="http://schema.org/ImageObject">
    <picture>
        <source type="image/webp" srcset="/images/articles/ispolzovanie-ciklov-v-scilab/1a1n6u7/listing-10-realizaciya-chislennogo-integrirovaniya-odu-s-pomoschyu-metoda-runge-kutty.webp"/>
        <img class="image-in-container" src="http://inclab.ru/images/articles/ispolzovanie-ciklov-v-scilab/1a1n6u7/listing-10-realizaciya-chislennogo-integrirovaniya-odu-s-pomoschyu-metoda-runge-kutty.jpg" itemprop="contentUrl" alt="Листинг 10. Реализация численного интегрирования ОДУ с помощью метода Рунге-Кутты." title="Листинг 10. Реализация численного интегрирования ОДУ с помощью метода Рунге-Кутты."/>
    </picture>
    <span class="image-description text-italic" itemprop="description">Листинг 10. Реализация численного интегрирования ОДУ с помощью метода Рунге-Кутты.</span>
</div>
<p><b>На этом месте располагается листинг, который не может быть правильно отображен в rss-ленте. Перейдите к оригинальной статье: <a href='http://inclab.ru/articles/ispolzovanie-ciklov-v-scilab'>http://inclab.ru/articles/ispolzovanie-ciklov-v-scilab</a></b></p>



<div class="image-container" itemscope itemtype="http://schema.org/ImageObject">
    <picture>
        <source type="image/webp" srcset="/images/articles/ispolzovanie-ciklov-v-scilab/xlqb0k/risunok-6-sravnenie-analiticheskogo-i-chislennogo-resheniy-odu.webp"/>
        <img class="image-in-container" src="http://inclab.ru/images/articles/ispolzovanie-ciklov-v-scilab/xlqb0k/risunok-6-sravnenie-analiticheskogo-i-chislennogo-resheniy-odu.jpg" itemprop="contentUrl" alt="Рисунок 6. Сравнение аналитического и численного решений ОДУ." title="Рисунок 6. Сравнение аналитического и численного решений ОДУ."/>
    </picture>
    <span class="image-description text-italic" itemprop="description">Рисунок 6. Сравнение аналитического и численного решений ОДУ.</span>
</div>

<h3>Оператор цикла while</h3>

<p>Оператор цикла <em>while</em> состоит из заголовка, содержащего условия его выполнения, исполняемого тела цикла. Форма записи представлена ниже:</p>

<p><em>while  условие<br/>
&nbsp;&nbsp;&nbsp;операторы<br/>
end;</em></p>

<p>Выполнение цикла начинается с проверки условия на истинность. Если условие истинно, то выполняются операторы тела цикла. Затем снова происходит проверка на истинность условия.</p>

<p>Оператор заканчивает свою работу, как только значение условие нарушается, а управление передаётся следующим за телом цикла операторам.</p>

<p>Приведём пример использования данного оператора. Попросим пользователя ввести радиус \( R=5\). При этом, если пользователь введёт число, не превосходящее 5, условие прекращения цикла не будет выполнено и запрос на ввод радиуса повторится. При вводе корректного значения в консоли, мы выводим его в командном окне (строка 8) и присваиваем переменной R введённое пользователем значение (см. листинг 11).</p>

 
<div class="image-container">
<p><b>На этом месте располагается листинг, который не может быть правильно отображен в rss-ленте. Перейдите к оригинальной статье: <a href='http://inclab.ru/articles/ispolzovanie-ciklov-v-scilab'>http://inclab.ru/articles/ispolzovanie-ciklov-v-scilab</a></b></p>
<span class="image-description text-italic">Листинг 11. Демонстрация работы цикла while, оператора присваивания и ввода данных в командном окне Scilab..</span>
</div>
  
  
  
<h2>4.2 Условный оператор if</h2>

<p>Для проверки выполнения каких-либо условий в программе используется условный оператор if. Это один из основных операторов языка, и он имеет две формы записи: обычную и расширенную.</p>

<p>Обычная форма записи позволяет выбрать одно из двух условий и выполнить соответствующие действия.</p>

<p><em>if условие then<br/>
&nbsp;&nbsp;&nbsp;операторы 1<br/>
else<br/>
&nbsp;&nbsp;&nbsp;операторы 2<br/>
end;</em></p>

<p>Расширенная форма записи позволяет работать с конечным числом условий и выполнять соответствующие корректному условию операторы. В данном случае, поочередно проверяются все условия от 1 до n-го. Если ни одно из условий не выполнилось, выполняются операторы по ветке else.</p>

<p><em>if условие1 then<br/>
&nbsp;&nbsp;&nbsp;операторы 1<br/>
elseif условие2<br/>
&nbsp;&nbsp;&nbsp;операторы 2<br/>
elseif условие3<br/>
&nbsp;&nbsp;&nbsp;операторы 3<br/>
&nbsp;&nbsp;&nbsp;<br/>
else<br/>
&nbsp;&nbsp;&nbsp;операторы<br/>
end;</em></p>

<p>В качестве примера, напишем пользовательскую функцию, которая будет вычислять значения функции  \( f(x) = \begin{cases}
2x,  & x>0 \\ -x^2, & \text{иначе} \end{cases} \) на промежутке \( [-2; 2] \)  с шагом \( d=0.1 \)  (листинг 12). В данном случае в функцию <em>myfunc()</em> передаются два входных параметра: массив точек абсцисс \( Х \) и шаг \( d \).</p>

<p>В <em>теле пользовательской функции на строке 2</em> вычисляется <em>длина массива</em>, а на следующей строке, <em>функцией zeros(), создаётся массив нулевых элементов</em> совместного размера для записи значений функции.<br/> Далее, <em>внутри цикла for</em> производится <em>перебор всех элементов входного массива \(х\)</em>, а <em>условный оператор if</em>  передаёт управление операторам вычисления <em>значения функции в точке \( x(j) \) </em>, в зависимости от выполнения условия положительности или неотрицательности \(j-го \) элемента.</p>

 
<div class="image-container">
<p><b>На этом месте располагается листинг, который не может быть правильно отображен в rss-ленте. Перейдите к оригинальной статье: <a href='http://inclab.ru/articles/ispolzovanie-ciklov-v-scilab'>http://inclab.ru/articles/ispolzovanie-ciklov-v-scilab</a></b></p>
  <span class="image-description text-italic">Листинг 12. Задание функции \( f(x) = \begin{cases}
2x,  & x>0 \\ -x^2, & \text{иначе} \end{cases} \) при помощи пользовательской функции, использования оператора цикла и условного оператора.</span>
</div>

  
  
<div class="image-container" itemscope itemtype="http://schema.org/ImageObject">
    <picture>
        <source type="image/webp" srcset="/images/articles/ispolzovanie-ciklov-v-scilab/cvg3ps/risunok-6a-grafik-funkcii-f-x.webp"/>
        <img class="image-in-container" src="http://inclab.ru/images/articles/ispolzovanie-ciklov-v-scilab/cvg3ps/risunok-6a-grafik-funkcii-f-x.jpg" itemprop="contentUrl" alt="Рисунок 6a. График функции \( f(x) \)." title="Рисунок 6a. График функции \( f(x) \)."/>
    </picture>
    <span class="image-description text-italic" itemprop="description">Рисунок 6a. График функции \( f(x) \).</span>
</div>





<p>Оригинальный адрес статьи: <a href='http://inclab.ru/articles/ispolzovanie-ciklov-v-scilab'>http://inclab.ru/articles/ispolzovanie-ciklov-v-scilab</a><p>]]></description>
			<pubDate>Thu, 04 Nov 2021 21:05:02 +0400</pubDate>
		</item>
		<item>
			<title><![CDATA[Элементы программирования в Scilab 6]]></title>
			<link>http://inclab.ru/articles/ehlementy-programmirovaniya-v-scilab-6</link>
			<guid>http://inclab.ru/articles/ehlementy-programmirovaniya-v-scilab-6</guid>
			<description><![CDATA[<img src="http://inclab.ru" />Перейдем к созданию рабочей программы на языке Scilab. Мы будем создавать скрипт-файлы с расширением .sce во встроенном редакторе SciNotes, о котором говорилось выше. <p>Перейдем к созданию рабочей программы на языке Scilab. Мы будем создавать скрипт-файлы с расширением .sce во встроенном редакторе <em>SciNotes</em>, о котором говорилось выше.</p>
<p>Чаще всего пользователю необходимо создавать собственные функции на языке Scilab, которые необходимы для решения текущих задач.</p>
<p>Для создания собственной подпрограммы-функции нужно использовать конструкцию:</p>
<p><em>function [v1, v2, &hellip; , vn] = f_name(w1, w2, &hellip; wm) <br/>
&nbsp;&nbsp;&nbsp;&nbsp;операторы (тело функции) <br/>
endfunction</em>;</p>

<p>Итак, у функции есть: <br/>
  <em>f_name</em> - имя функции, по которому происходит её вызов,<br/>
  <em>v1, v2, &hellip; ,vn</em> - выходные параметры - то, что функция возвращает,<br/>
  <em>w1, w2, &hellip; ,wm</em> - входные параметры - то, что функция принимает.</p>
<p>В качестве примера напишем подпрограмму, вычисляющую значения функции   \( z= \sqrt{ | cos({2y\over x}) | }e^{y+x} \) на промежутках \( 1 \le y \le 2 \), с шагом <em>d=1</em>(листинг 9).</p>

<div class="image-container" itemscope itemtype="http://schema.org/ImageObject">
    <picture>
        <source type="image/webp" srcset="/images/articles/ehlementy-programmirovaniya-v-scilab-6/bm367g/listing-9-sozdanie-polzovatelskoy-podprogrammy-funkcii-v-redaktore-scinotes.webp"/>
        <img class="image-in-container" src="http://inclab.ru/images/articles/ehlementy-programmirovaniya-v-scilab-6/bm367g/listing-9-sozdanie-polzovatelskoy-podprogrammy-funkcii-v-redaktore-scinotes.jpg" itemprop="contentUrl" alt="Листинг 9. Создание пользовательской подпрограммы-функции в редакторе SciNotes." title="Листинг 9. Создание пользовательской подпрограммы-функции в редакторе SciNotes."/>
    </picture>
    <span class="image-description text-italic" itemprop="description">Листинг 9. Создание пользовательской подпрограммы-функции в редакторе SciNotes.</span>
</div>

<p><b>На этом месте располагается листинг, который не может быть правильно отображен в rss-ленте. Перейдите к оригинальной статье: <a href='http://inclab.ru/articles/ehlementy-programmirovaniya-v-scilab-6'>http://inclab.ru/articles/ehlementy-programmirovaniya-v-scilab-6</a></b></p>
<p>Мы создали собственную функцию с именем <em>myfunc</em>, по которому и происходит вызов данной&nbsp; функции далее в программе на строке 11. В круглых скобках у имени функции перечислены <em>входные переменные</em>, разделённые запятой. Тело функции состоит из одной строки -&nbsp; присвоения значения функции в выходную локальную&nbsp; переменную <em>z</em>.</p>
<p>Отметим, что в строке 11 скрипт-файла происходит вызов функции с параметрами <em>X</em><em>,</em><em>Y</em>, являющимися массивами из 11 точек на заданных промежутках, а результат записывается в переменную <em>Z</em>, которая представляет собой массив, содержащий 11 значений функции <em>myfunc</em><em>. </em></p>
<p>Создание собственных функций удобно тем, что поддерживает многократный вызов с различными параметрами. Например, для вычисления значения функции&nbsp; <em>myfunc</em> в точках <em>x</em><em>=1, </em><em>y</em><em>=0,3</em>, достаточно воспользоваться записью <em>Z</em><em> = </em><em>myfunc</em><em>(1, 0.3).</em> При этом, в переменную Z будет записана всего одна точка <em>3.333482</em>.</p>
<p>Предлагаем читателю сравнить данный результат с представленным на листинге 3 и самостоятельно убедиться в удобстве использования встроенного текстового редактора и пользовательских функций.</p>

<p>Оригинальный адрес статьи: <a href='http://inclab.ru/articles/ehlementy-programmirovaniya-v-scilab-6'>http://inclab.ru/articles/ehlementy-programmirovaniya-v-scilab-6</a><p>]]></description>
			<pubDate>Thu, 04 Nov 2021 21:04:44 +0400</pubDate>
		</item>
		<item>
			<title><![CDATA[Одномерные и многомерные массивы в скилабе]]></title>
			<link>http://inclab.ru/articles/odnomernye-i-mnogomernye-massivy-v-skilabe</link>
			<guid>http://inclab.ru/articles/odnomernye-i-mnogomernye-massivy-v-skilabe</guid>
			<description><![CDATA[<img src="http://inclab.ru" />Scilab - матрично-ориентированный язык. Под массивами в данном мат. пакете понимаются конструкции, используемые в линейной алгебре:&nbsp; матрицы, векторы-строки и векторы-столбцы.<p>Под массивами в данном случае понимаются конструкции, используемые в линейной алгебре:&nbsp; матрицы, векторы-строки и векторы-столбцы.</p>
<p class="highlight"><strong>Важно! Нумерация элементов массива в </strong><strong>Scilab</strong><strong> начинается с 1.</strong></p>

<p>&nbsp;</p>
<h2>2.1 Одномерные массивы (столбцы и строки)</h2>
<p>Задать одномерный массив в Scilab можно следующим образом:</p>
<p class="text-center" ><em>MAS</em><em> = </em><em>v</em><em>1:</em><em>d</em><em>:</em><em>vmax</em></p>
<p>Здесь <em>MAS</em> &ndash; имя переменной, куда будет записан сформированный массив, <em>v</em><em>1</em> &ndash; значение первого элемента массива, <em>vmax</em> &ndash; значение последнего элемента массива, <em>d</em> &ndash; шаг, с которым будет происходить формирование элементов.</p>


<p>Например, сформируем массив с элементами от 1 до 2 с шагом 0.1 (листинг 4).</p>

<div class="image-container">
<p><b>На этом месте располагается листинг, который не может быть правильно отображен в rss-ленте. Перейдите к оригинальной статье: <a href='http://inclab.ru/articles/odnomernye-i-mnogomernye-massivy-v-skilabe'>http://inclab.ru/articles/odnomernye-i-mnogomernye-massivy-v-skilabe</a></b></p>
  <span class="image-description text-italic">листинг 4. Вектор-строка в Scilab.  Задание одномерного массива из 11 элементов</span>
</div>	

<p class="text-center"> 
\(  
  M = \begin{pmatrix}
  1. &  1.1 &  1.2 &  1.3 &  1.4  & 1.5 &  1.6 &  1.7 &  1.8 &  1.9 &  2. 
   \end{pmatrix}
   \)  
 </p>

<!--
<div class="image-container" itemscope itemtype="http://schema.org/ImageObject">
    <picture>
        <source type="image/webp" srcset="/images/articles/odnomernye-i-mnogomernye-massivy-v-skilabe/1d71h47/listing-4-zadanie-odnomernogo-massiva-iz-41-ehlementa.webp"/>
        <img class="image-in-container" src="http://inclab.ru/images/articles/odnomernye-i-mnogomernye-massivy-v-skilabe/1d71h47/listing-4-zadanie-odnomernogo-massiva-iz-41-ehlementa.jpg" itemprop="contentUrl" alt=" Листинг 4. Задание одномерного массива из 41 элемента." title=" Листинг 4. Задание одномерного массива из 41 элемента."/>
    </picture>
    <span class="image-description text-italic" itemprop="description"> Листинг 4. Задание одномерного массива из 41 элемента.</span>
</div>
-->

<p>Сформировать одномерный массив можно и непосредственным перечислением всех его элементов через запятую или пробел:</p>

<p class="text-center"><em>MAS = [v1, v2, &hellip; , vmax] </em><em>или</em><em> MAS = [v1 v2 &hellip; vmax]</em></p>
<p>Отметим, что данные способы формируют вектор-строку в которую записаны всего <em>vmax</em> элементов.</p>
<p>Для поэлементного задания вектор-столбца нужно разделять элементы массива точкой с запятой &laquo;;&raquo;, то есть, воспользоваться записью:</p>
<p class="text-center"><em>MAS</em><em> = [</em><em>v</em><em>1; </em><em>v</em><em>2; &hellip; &nbsp;; </em><em>vmax</em><em>] </em></p>

<div class="image-container">
<p><b>На этом месте располагается листинг, который не может быть правильно отображен в rss-ленте. Перейдите к оригинальной статье: <a href='http://inclab.ru/articles/odnomernye-i-mnogomernye-massivy-v-skilabe'>http://inclab.ru/articles/odnomernye-i-mnogomernye-massivy-v-skilabe</a></b></p>
  <span class="image-description text-italic">поэлементное задание массива в Scilab</span>
</div>	

<p class="text-center"> 
\(  
  \begin{matrix}
  
  R = \begin{pmatrix}
  1 &  0 &  1 &  2 
   \end{pmatrix} &
  
  V = \begin{pmatrix}
  1 \\  0 \\  1 \\  2 
   \end{pmatrix}
  
   \end{matrix}
   \)  
 </p>

<p>Обращение к элементу массива происходит через указание номера элемента в круглых скобках у имени массива. Чтобы выбрать 2-й элемент одномерного массива <em>MAS</em>, необходимо ввести команду:</p>
<p class="text-center" ><em>x =MAS(2);<br /> disp(x); // </em><em>выведет</em><em> v2</em></p>
<p>Создадим вектор-строку <em>row</em> из 11 элементов, начиная с 0 с шагом 0.1. Это делается следующим образом:</p>
<p class="text-center" >
  <em>row=0:0.1:1;</em>
</p>   
<p>Сейчас <em>row</em> - это вектор-строка вида \( (0\; 0.1\; 0.2\; 0.3\; 0.4\; 0.5\; 0.6 \;0.7\; 0.8 \;0.9\; 1) \)</p>
<p>Получим 5-й эелемент вектор-строки <em>row</em> и выведем этот элемент:</p>
<p >
  <em>x=row(5); // </em>  присвоили переменной <em>х</em> значение, записанное в 5-й столбец строки <em>row</em> <br /> 
  <em>disp(x); // </em>  выведет <em> 0.4</em>
</p>


<div class="image-container">
<p><b>На этом месте располагается листинг, который не может быть правильно отображен в rss-ленте. Перейдите к оригинальной статье: <a href='http://inclab.ru/articles/odnomernye-i-mnogomernye-massivy-v-skilabe'>http://inclab.ru/articles/odnomernye-i-mnogomernye-massivy-v-skilabe</a></b></p>
  <span class="image-description text-italic">обращение к элементам массива в Scilab</span>
</div>	

<p class="text-center"> 
\(  
  \begin{matrix}
  
  R = \begin{pmatrix}
  0. &  0.1 &  0.2 &  0.3 &  0.4  & 0.5 &  0.6 &  0.7  & 0.8  & 0.9 &  1.
   \end{pmatrix} &
  
  r2 = 0.1 &
  r10 = 0.9 
  
   \end{matrix}
   \)  
 </p>


<h2>2.2 Двумерные массивы (матрицы)</h2>
<p>Двумерные массивы, или матрицы, также задаются при помощи квадратных скобок, при этом <em>строки</em> матрицы <em>разделяются точкой с запятой</em> &laquo;;&raquo;, а <em>столбцы</em> - &nbsp;<em>запятой или пробелом</em> (листинг 5).</p>

<div class="image-container" itemscope itemtype="http://schema.org/ImageObject">
    <picture>
        <source type="image/webp" srcset="/images/articles/odnomernye-i-mnogomernye-massivy-v-skilabe/zoj43b/listing-5-zadanie-matricy-poehlementno.webp"/>
        <img class="image-in-container" src="http://inclab.ru/images/articles/odnomernye-i-mnogomernye-massivy-v-skilabe/zoj43b/listing-5-zadanie-matricy-poehlementno.jpg" itemprop="contentUrl" alt="Листинг 5. Задание матрицы поэлементно." title="Листинг 5. Задание матрицы поэлементно."/>
    </picture>
    <span class="image-description text-italic" itemprop="description">Листинг 5. Задание матрицы поэлементно.</span>
</div>

<p>Кроме того, матрица может быть сформирована из векторов-строк или векторов-столбцов, заданных ранее (листинг 6).</p>
<div class="image-container" itemscope itemtype="http://schema.org/ImageObject">
    <picture>
        <source type="image/webp" srcset="/images/articles/odnomernye-i-mnogomernye-massivy-v-skilabe/1fcmo4/listing-6-zadanie-matricy-iz-sformirovannyh-strok-v1-v2-v3.webp"/>
        <img class="image-in-container" src="http://inclab.ru/images/articles/odnomernye-i-mnogomernye-massivy-v-skilabe/1fcmo4/listing-6-zadanie-matricy-iz-sformirovannyh-strok-v1-v2-v3.jpg" itemprop="contentUrl" alt="Листинг 6. Задание матрицы из сформированных строк V1, V2, V3." title="Листинг 6. Задание матрицы из сформированных строк V1, V2, V3."/>
    </picture>
    <span class="image-description text-italic" itemprop="description">Листинг 6. Задание матрицы из сформированных строк V1, V2, V3.</span>
</div>

<p>Обращение к элементу матрицы происходит через указание <em>номера строки и столбца</em> в круглых скобках у имени матрицы. Например, чтобы выбрать 3-й элемент из второй строки матрицы <em>M</em>, необходимо ввести команду:</p>
<p class="text-center"><em>M</em><em>(2,3)  // </em>  элемент из 2-й строки 3-го столбца <em> 1</em></p>
<p>Отметим, что значения элементов матрицы можно использовать, присвоив их значения некоторым переменным, например:</p>

<p class="text-center"><em>x = M(2,3); или y = M(2,1)*M(1,1);</em></p>

<p><em>Важную роль в работе с матрицами играет знак двоеточия &laquo;:&raquo;</em>. Указывая его, можно получить <em>целую строку</em> или <em>целый столбец</em>. Например, чтобы выбрать <em>третий столбец матрицы</em>, нужно записать <em>M(:,3)</em>. А чтобы получить <em>все элементы второй строки</em>,  нужно записать <em>M(2,:)</em>. Смотри (листинг 7).</p>

<div class="image-container" itemscope itemtype="http://schema.org/ImageObject">
    <picture>
        <source type="image/webp" srcset="/images/articles/odnomernye-i-mnogomernye-massivy-v-skilabe/1hmvuwc/listing-7-vybor-ehlementov-m23-m12-matricy-m-2-y-stroki-i-3-go-stolbca-matricy-m.webp"/>
        <img class="image-in-container" src="http://inclab.ru/images/articles/odnomernye-i-mnogomernye-massivy-v-skilabe/1hmvuwc/listing-7-vybor-ehlementov-m23-m12-matricy-m-2-y-stroki-i-3-go-stolbca-matricy-m.jpg" itemprop="contentUrl" alt="Листинг 7. Выбор элементов m23, m12 матрицы М; 2-й строки и 3-го столбца матрицы М." title="Листинг 7. Выбор элементов m23, m12 матрицы М; 2-й строки и 3-го столбца матрицы М."/>
    </picture>
    <span class="image-description text-italic" itemprop="description">Листинг 7. Выбор элементов m23, m12 матрицы М; 2-й строки и 3-го столбца матрицы М.</span>
</div>

<p>Отметим, что для работы с матрицами и векторами предусмотрены стандартные операции сложения &laquo;+&raquo;, матричного умножения и умножения на число&nbsp; &laquo;*&raquo;, вычитания &laquo;-&raquo;, возведения в степень &laquo;^&raquo;, деления &laquo; / &raquo;. <p><em>Отдельно стоит выделить операции транспонирования &laquo;&rsquo;&raquo; и поэлементного умножения &laquo; .* &raquo;</em>. </p>
<p>Результаты операций с матрицами продемонстрированы ниже на Листинге 8.</p>

<div class="image-container" itemscope itemtype="http://schema.org/ImageObject">
    <picture>
        <source type="image/webp" srcset="/images/articles/odnomernye-i-mnogomernye-massivy-v-skilabe/oxrpui/listing-8-operacii-matrichnogo-umnozheniya-poehlementnogo-umnozheniya-i-transponirovaniya.webp"/>
        <img class="image-in-container" src="http://inclab.ru/images/articles/odnomernye-i-mnogomernye-massivy-v-skilabe/oxrpui/listing-8-operacii-matrichnogo-umnozheniya-poehlementnogo-umnozheniya-i-transponirovaniya.jpg" itemprop="contentUrl" alt="Листинг 8. Операции матричного умножения, поэлементного умножения и транспонирования." title="Листинг 8. Операции матричного умножения, поэлементного умножения и транспонирования."/>
    </picture>
    <span class="image-description text-italic" itemprop="description">Листинг 8. Операции матричного умножения, поэлементного умножения и транспонирования.</span>
</div>


<h2>2.3 Специальные функции для векторов и матриц</h2>
<p>В Scilab предусмотрены специальные функции для работы с матрицами. Эти функции обеспечивают быстрое создание распространенных типов матриц. Такими функциями являются следующие:</p>
<p><em>ones</em><em>(</em><em>m</em><em>,</em><em>n</em><em>)</em> &ndash; создание матрицы единиц из <em>m</em> строк и <em>n</em> столбцов;</p>
<p><em>zeros</em><em>(</em><em>m</em><em>,</em><em>n</em><em>)</em> &ndash; создание нулевой матрицы из <em>m</em> строк и <em>n</em> столбцов;</p>
<p><em>eye</em><em>(</em><em>m</em><em>,</em><em>n</em><em>) </em>- создание единичной матрицы из <em>m</em> строк и <em>n</em> столбцов.</p>
<p>Подробнее про них написано в статье <a href="https://inclab.ru/beginner/specialnye-matrichnye-funkcii">Специальные матричные функции в Scilab</a></p>

<p>Кроме того, в мат. пакете есть ряд функций, полезных для решения задач линейной алгебры и устойчивости систем линейных дифференциальных уравнений.</p>
<p><em>det</em><em>(</em><em>M</em><em>)</em> &ndash; вычисление определителя квадратной матрицы;</p>
<p><em>inv</em><em>(</em><em>M</em><em>)</em> &ndash; вычисление матрицы, обратной к <em>М</em>, такой что <em>M</em><em><sup>-1</sup></em><em>M</em><em>=</em><em>E</em>;</p>
<p><em>spec</em><em>(</em><em>M</em><em>)</em> &ndash; находит собственные числа матрицы М;</p>
<p><em>linsolve</em><em>(</em><em>M</em><em>, </em><em>b</em><em>)</em> &ndash; решает систему линейных уравнений <em>Mx</em><em>-</em><em>b</em><em>=0.</em></p>
<p>Подробнее про них написано в статье <a href="https://inclab.ru/beginner/reshenie-slu-oslu-v-scilab">Функции для решения задач линейной алгебры в Scilab</a></p>




<p>Оригинальный адрес статьи: <a href='http://inclab.ru/articles/odnomernye-i-mnogomernye-massivy-v-skilabe'>http://inclab.ru/articles/odnomernye-i-mnogomernye-massivy-v-skilabe</a><p>]]></description>
			<pubDate>Mon, 27 Jun 2022 21:49:28 +0400</pubDate>
		</item>
		<item>
			<title><![CDATA[Особенности Scilab]]></title>
			<link>http://inclab.ru/articles/osobennosti-scilab</link>
			<guid>http://inclab.ru/articles/osobennosti-scilab</guid>
			<description><![CDATA[<img src="http://inclab.ru" />Разбираем зарезервированные константы, особенности записи вещественных чисел и чувствительность к регистру в Скилабе<h2>1.1 Зарезервированные константы</h2>
<p>В Scilab для обозначения распространенных математических констант используются следующие обозначения:</p>

<p><em>%i</em> - мнимая единица \( \sqrt{-1} \) .</p>
<p><em>%e</em> &ndash; число \( e \) (основание натурального логарифма);</p>
<p><em>%pi</em> &ndash; число \( \pi \) ;</p>
<p><em>%inf</em> &ndash; бесконечность \( \infty \);</p>
<p><em>%</em><em>nan</em> &ndash; не число (.not a number.);</p>
<p><em>%t</em> или <em>%T</em> &ndash; логическая единица, .истина. (.true.);</p>
<p><em>%f</em> или <em>%F</em> &ndash; логический нуль, .ложь. (.false.);</p>
<p><em>%z</em> &ndash; полином с единственным нулевым корнем и аргументом ;</p>
<p><em>%s</em> &ndash; полином с единственным нулевым корнем и аргументом .</p>
<p>&nbsp;</p>
<h2>1.2 Вещественные числа и особенности записи</h2>

<p>Прежде всего, отметим, что Scilab &ndash; <em>чувствителен к регистру</em>, то есть, запись&nbsp; &laquo;<em>t</em>&raquo; и &laquo;<em>T</em>&raquo; воспринимается в данном математическом пакете, как задание двух различных переменных. (листинг 1).</p>

<div class="image-container" itemscope itemtype="http://schema.org/ImageObject">
    <picture>
        <source type="image/webp" srcset="/images/articles/osobennosti-scilab/1whp2ye/listing-1-vychislenie-funkciy-sin-t-i-sin-t.webp"/>
        <img class="image-in-container" src="http://inclab.ru/images/articles/osobennosti-scilab/1whp2ye/listing-1-vychislenie-funkciy-sin-t-i-sin-t.jpg" itemprop="contentUrl" alt="Листинг 1. Вычисление функций \(sin(t)\) и \(sin(T)\)." title="Листинг 1. Вычисление функций \(sin(t)\) и \(sin(T)\)."/>
    </picture>
    <span class="image-description text-italic" itemprop="description">Листинг 1. Вычисление функций \(sin(t)\) и \(sin(T)\).</span>
</div>

<p>Важно, что в мат. пакете&nbsp; Scilab <em>нет различия между целыми и вещественными числами</em>. Разделителем дробной части, по традиции, служи точка &laquo;.&raquo;, то есть, для записи числа 4,5 в Scilab необходимо набрать 4.5, а&nbsp; для записи числа в экспоненциальной форме с плавающей точкой используется формула \( me \pm p \), где <em>m</em> &ndash; мантиса<em>, </em><em>p</em> &ndash; порядок. Так,&nbsp; для приведения&nbsp; числа \( 10^{-4} \) к экспоненциальному виду следует записать: <em>\( 10e-4 \)</em>.</p>
<p>&nbsp;</p>
<h2>1.3 Комментарии в Scilab</h2>
<p>Для лучшей читаемости кода, в Scilab как и в других языках, предусмотрены комментарии.</p>
<p>Для обозначения однострочного комментария используется двойной слэш  <em>//</em> и конструкция <em>/**/</em> - для многострочного (листинг 2).</p>

<div class="image-container" itemscope itemtype="http://schema.org/ImageObject">
    <picture>
        <source type="image/webp" srcset="/images/articles/osobennosti-scilab/iqjsq7/listing-2-ispolzovanie-kommentariev-v-scilab.webp"/>
        <img class="image-in-container" src="http://inclab.ru/images/articles/osobennosti-scilab/iqjsq7/listing-2-ispolzovanie-kommentariev-v-scilab.jpg" itemprop="contentUrl" alt="Листинг 2. Использование комментариев в Scilab." title="Листинг 2. Использование комментариев в Scilab."/>
    </picture>
    <span class="image-description text-italic" itemprop="description">Листинг 2. Использование комментариев в Scilab.</span>
</div>

<h3>Элементарные математические функции</h3>
<p>В таблице 1 приведены наиболее часто используемые математические функции.</p> 
<div class="image-container" itemscope itemtype="http://schema.org/ImageObject">
    <picture>
        <source type="image/webp" srcset="/images/articles/osobennosti-scilab/1idevdd/tablica-1-ehlementarnye-matematicheskie-funkcii.webp"/>
        <img class="image-in-container" src="http://inclab.ru/images/articles/osobennosti-scilab/1idevdd/tablica-1-ehlementarnye-matematicheskie-funkcii.jpg" itemprop="contentUrl" alt="Таблица 1. Элементарные математические функции." title="Таблица 1. Элементарные математические функции."/>
    </picture>
    <span class="image-description text-italic" itemprop="description">Таблица 1. Элементарные математические функции.</span>
</div>

<p>Для демонстрации синтаксиса языка, вычислим значение сложного математического выражения \( z= \sqrt{ | cos({2y\over x}) | }e^{y+x} \), содержащего радикал, модуль, экспоненциальную и периодическую функции (листинг 3)</p>

<div class="image-container" itemscope itemtype="http://schema.org/ImageObject">
    <picture>
        <source type="image/webp" srcset="/images/articles/osobennosti-scilab/1wnj6bg/listing-3-vychislenie-matematicheskogo-vyrazheniya-v-komandnom-okne-scilab.webp"/>
        <img class="image-in-container" src="http://inclab.ru/images/articles/osobennosti-scilab/1wnj6bg/listing-3-vychislenie-matematicheskogo-vyrazheniya-v-komandnom-okne-scilab.jpg" itemprop="contentUrl" alt="Листинг 3. Вычисление математического выражения в командном окне Scilab." title="Листинг 3. Вычисление математического выражения в командном окне Scilab."/>
    </picture>
    <span class="image-description text-italic" itemprop="description">Листинг 3. Вычисление математического выражения в командном окне Scilab.</span>
</div>

<p>Отметим, что на данном этапе все вычисления производятся в <em>командном окне</em>.</p>































<p>Оригинальный адрес статьи: <a href='http://inclab.ru/articles/osobennosti-scilab'>http://inclab.ru/articles/osobennosti-scilab</a><p>]]></description>
			<pubDate>Sun, 08 May 2022 20:57:34 +0400</pubDate>
		</item>
		<item>
			<title><![CDATA[Установка математического пакета scilab]]></title>
			<link>http://inclab.ru/articles/nachalo-raboty</link>
			<guid>http://inclab.ru/articles/nachalo-raboty</guid>
			<description><![CDATA[<img src="http://inclab.ru" />Scilab  это свободно распространяемое программное обеспечение, поэтому для установки данного математического пакета на ПК достаточно зайти на официальный сайт.<p>Scilab  это свободно распространяемое программное обеспечение, поэтому для установки данного математического пакета на ПК достаточно зайти на официальный сайт <a href="www.scilab.org" target="_blank">www.scilab.org</a>, зайти в пункт меню Download (рис. 1)  </p>

<div class="image-container" itemscope itemtype="http://schema.org/ImageObject">
    <picture>
        <source type="image/webp" srcset="/images/articles/nachalo-raboty/r4ys4a/risunok-1-glavnaya-stranica-sayta-www-scilab-org-s-vydelennym-punktom-menyu-noindex.webp"/>
        <img class="image-in-container" src="http://inclab.ru/images/articles/nachalo-raboty/r4ys4a/risunok-1-glavnaya-stranica-sayta-www-scilab-org-s-vydelennym-punktom-menyu-noindex.jpg" itemprop="contentUrl" alt="Рисунок 1. Главная страница сайта www.scilab.org, с выделенным пунктом меню." title="Рисунок 1. Главная страница сайта www.scilab.org, с выделенным пунктом меню."/>
    </picture>
    <span class="image-description text-italic" itemprop="description">Рисунок 1. Главная страница сайта www.scilab.org, с выделенным пунктом меню.</span>
</div>

<p>и выбрать нужный установочный файл, согласно установленной на вашем компьютере ОС (рис. 2).</p>

<div class="image-container" itemscope itemtype="http://schema.org/ImageObject">
    <picture>
        <source type="image/webp" srcset="/images/articles/nachalo-raboty/1igwwri/risunok-2-stranica-sayta-www-scilab-org-dlya-skachivaniya-mat-paketa.webp"/>
        <img class="image-in-container" src="http://inclab.ru/images/articles/nachalo-raboty/1igwwri/risunok-2-stranica-sayta-www-scilab-org-dlya-skachivaniya-mat-paketa.jpg" itemprop="contentUrl" alt="Рисунок 2. Страница сайта www.scilab.org, для скачивания мат. пакета." title="Рисунок 2. Страница сайта www.scilab.org, для скачивания мат. пакета."/>
    </picture>
    <span class="image-description text-italic" itemprop="description">Рисунок 2. Страница сайта www.scilab.org, для скачивания мат. пакета.</span>
</div>

<h2>Командное окно и редактор SciNotes в Scilab</h2>
<p>После запуска программы на экране появится основное окно приложения, на котором представлены следующие элементы: меню, панель инструментов и область консоли.</p>
<p>Для дальнейшей работы в математическом пакете может использоваться как <em>консоль командного окна</em>, так и специальный <em>редактор команд </em><em>SciNotes</em>.</p>

<div class="image-container" itemscope itemtype="http://schema.org/ImageObject">
    <picture>
        <source type="image/webp" srcset="/images/articles/nachalo-raboty/nxslul/risunok-3-komandnoe-okno-scilab-o-gotovnosti-sistemy-k-vypolneniyu-komandy-svidetelstvuet-znak----po.webp"/>
        <img class="image-in-container" src="http://inclab.ru/images/articles/nachalo-raboty/nxslul/risunok-3-komandnoe-okno-scilab-o-gotovnosti-sistemy-k-vypolneniyu-komandy-svidetelstvuet-znak----po.jpg" itemprop="contentUrl" alt="Рисунок 3. Командное окно Scilab. О готовности системы к выполнению команды свидетельствует знак -->, после которого расположен активный мигающий курсор." title="Рисунок 3. Командное окно Scilab. О готовности системы к выполнению команды свидетельствует знак -->, после которого расположен активный мигающий курсор."/>
    </picture>
    <span class="image-description text-italic" itemprop="description">Рисунок 3. Командное окно Scilab. О готовности системы к выполнению команды свидетельствует знак -->, после которого расположен активный мигающий курсор.</span>
</div>

<p>Основное отличие данных способов взаимодействия со средой разработки состоит в том, что работа в <em>консоли</em> схожа с работой в <em>командной строке </em><em>Windows</em> и позволяет выполнить <em>одну команду</em> пользователя <em>за раз</em>, кроме того, она не поддерживает редактирование кода и его удаление. Однако, <em>консоль </em>(рис. 3) может быть <em>успешно использована</em> для взаимодействия с пользователем <em>для ввода каких-либо параметров</em> уравнений, фигурирующих в решаемых задачах механики или математического моделирования.</p>
<p>Для перехода в <em>редактор команд </em><em>SciNotes</em>, на панели меню необходимо выбрать пункт &laquo;Инструменты&raquo; и в выпадающем окне выбрать &laquo;<em>редактор команд </em><em>SciNotes</em>&raquo; (рис. 4).</p>

<div class="image-container" itemscope itemtype="http://schema.org/ImageObject">
    <picture>
        <source type="image/webp" srcset="/images/articles/nachalo-raboty/1g03970/risunok-4-vybor-tekstovogo-redaktora-na-paneli-menyu.webp"/>
        <img class="image-in-container" src="http://inclab.ru/images/articles/nachalo-raboty/1g03970/risunok-4-vybor-tekstovogo-redaktora-na-paneli-menyu.jpg" itemprop="contentUrl" alt="Рисунок 4. Выбор текстового редактора на панели меню." title="Рисунок 4. Выбор текстового редактора на панели меню."/>
    </picture>
    <span class="image-description text-italic" itemprop="description">Рисунок 4. Выбор текстового редактора на панели меню.</span>
</div>

<p>При написании кода в текстовом редакторе <em>SciNotes</em><em>, </em>создается<em> файл-сценарий, </em>который сохраняется на диске пользователя. Данный файл представляет из себя список команд с расширением <em>.</em><em>sce</em> и может быть запущен на любом ПК, где установлен математический пакет совместимой версии.</p>
<p>Для запуска файла сценария необходимо нажать <em>F</em><em>5</em> на клавиатуре или соответствующий значок на панели инструментов (рис. 5).</p>

<div class="image-container" itemscope itemtype="http://schema.org/ImageObject">
    <picture>
        <source type="image/webp" srcset="/images/articles/nachalo-raboty/1pu1fwc/risunok-5-zapusk-fayla-scenariya.webp"/>
        <img class="image-in-container" src="http://inclab.ru/images/articles/nachalo-raboty/1pu1fwc/risunok-5-zapusk-fayla-scenariya.jpg" itemprop="contentUrl" alt="Рисунок 5. Запуск файла-сценария." title="Рисунок 5. Запуск файла-сценария."/>
    </picture>
    <span class="image-description text-italic" itemprop="description">Рисунок 5. Запуск файла-сценария.</span>
</div>


<p>Оригинальный адрес статьи: <a href='http://inclab.ru/articles/nachalo-raboty'>http://inclab.ru/articles/nachalo-raboty</a><p>]]></description>
			<pubDate>Thu, 04 Nov 2021 21:03:01 +0400</pubDate>
		</item>
	</channel>
</rss>
