Octave команды. Моделирование динамических систем: введение в GNU Octave. Операции с матрицами

ГОСТ 34.603-92

Информационная технология. Виды испытаний автоматизированных систем

действующий Настоящий стандарт распространяется на автоматизированные системы (АС), используемые в различных видах деятельности (исследование, проектирование, управление и т. п.), включая их сочетания, создаваемые в организациях, объединениях и на предприятиях.
Стандарт устанавливает виды испытаний АС и общие требования к их проведению

Текст ГОСТ 34.603-92



Другие ГОСТы

ГОСТ Р ИСО/МЭК 10165-4-2001 Информационная технология. Взаимосвязь открытых систем. Структура информации административного управления. Часть 4. Руководство по определению управляемых объектов
ГОСТ Р ИСО/МЭК 10165-5-2003 Информационная технология. Взаимосвязь открытых систем. Структура информации административного управления. Часть 5. Общая информация административного управления
ГОСТ Р ИСО/МЭК 10165-6-2003 Информационная технология. Взаимосвязь открытых систем. Структура информации административного управления. Часть 6. Требования и руководство по формам заявки о соответствии реализации, относящейся к административному управлению ВОС
ГОСТ Р ИСО/МЭК 10165-7-2003 Информационная технология. Взаимосвязь открытых систем. Структура информации административного управления. Часть 7. Общая модель взаимосвязи
ГОСТ Р ИСО/МЭК 10746-2-2000 Информационная технология. Взаимосвязь открытых систем. Управление данными и открытая распределенная обработка. Часть 2. Базовая модель
ГОСТ Р ИСО/МЭК 10746-3-2001 Информационная технология. Взаимосвязь открытых систем. Управление данными и открытая распределенная обработка. Часть 3. Архитектура
ГОСТ Р 34.951-92 Информационная технология. Взаимосвязь открытых систем. Услуги сетевого уровня
ГОСТ 33249-2015 Информационная технология. Индивидуализированные адаптируемость и доступность в обучении, образовании и подготовке. Часть 3. Описание электронных ресурсов по системе доступ для всех
ГОСТ 33248-2015 Информационная технология. Индивидуализированные адаптируемость и доступность в обучении, образовании и подготовке. Часть 2. Индивидуальные потребности и предпочтения при цифровой доставке по системе доступ для всех
ГОСТ Р ИСО/МЭК 24703-2011 Информационная технология. Идентификаторы участников
ГОСТ Р 53113.2-2009 Информационная технология. Защита информационных технологий и автоматизированных систем от угроз информационной безопасности, реализуемых с использованием скрытых каналов. Часть 2. Рекомендации по организации защиты информации, информационных технологий и автоматизированных систем от атак с использованием скрытых каналов

МЕЖГОСУДАРСТВЕННЫЙ СТАНДАРТ

Стандарт устанавливает виды испытаний АС и общие требования к их проведению.

Термины, применяемые в настоящем стандарте, и их определения - по ГОСТ 34.003.

Требования настоящего стандарта, кроме пп. 2.2.4, 4.4, 4.5, являются обязательными, требования пп. 2.2.4, 4.4, 4.5 - рекомендуемые.

1. ОБЩИЕ ПОЛОЖЕНИЯ

1.1. Испытания АС проводят на стадии «Ввода в действие» по ГОСТ 34.601 с целью проверки соответствия создаваемой АС требованиям технического задания (ТЗ).

1.2. Испытания АС представляют собой процесс проверки выполнения заданных функций системы, определения и проверки соответствия требованиям ТЗ количественных и (или) качественных характеристик системы, выявления и устранения недостатков в действиях системы, в разработанной документации.


1. Допускается дополнительно проведение других видов испытаний АС их частей.

2. Допускается классификация приемочных испытаний в зависимости от статуса приемочной комиссии (состав членов комиссии и уровень его утверждения).

3. Виды испытаний и статус приемочной комиссии устанавливают в договоре и (или) ТЗ.

1.4. В зависимости от взаимосвязей испытываемых в АС объектов испытания могут быть автономные или комплексные.

Автономные испытания охватывают части АС. Их проводят по мере готовности частей АС к сдаче в опытную эксплуатацию.


Комплексные испытания проводят для групп взаимосвязанных частей АС или для АС в целом.

1.5. Для планирования проведения всех видов испытаний разрабатывают документ «Программа и методика испытаний». Разработчик документа устанавливается в договоре или ТЗ.

1.6. Программа и методика испытаний должны устанавливать необходимый и достаточный объем испытаний, обеспечивающий заданную достоверность получаемых результатов.

1.7. Программа и методика испытаний может разрабатываться на АС в целом, на части АС. В качестве приложения могут включаться тесты (контрольные примеры).

1.8. Предварительные испытания АС проводят для определения ее работоспособности и решения вопроса о возможности приемки АС в опытную эксплуатацию.


1.9. Предварительные испытания следует выполнять после проведения разработчиком отладки и тестирования поставляемых программных н технических средств системы и представления им соответствующих документов о их готовности к испытаниям, а также после ознакомления персонала АС с эксплуатационной документацией.

1.10. Опытную эксплуатацию АС проводят с целью определения фактических значений количественных и качественных характеристик АС и готовности персонала к работе в условиях функционирования АС, определения фактической эффективности АС, корректировке (при необходимости) документации.

1.11. Приемочные испытания АС проводят для определения соответствия АС техническому заданию, оценки качества опытной эксплуатации и решения вопроса о возможности приемки АС в постоянную эксплуатацию.

1.12. Приемочным испытаниям АС должна предшествовать ее опытная эксплуатация на объекте.

1.13. В зависимости от вида требований, предъявляемых к АС на испытаниях, проверке или аттестации в ней подвергают:


1) качество выполнения комплексом программных и технических средств автоматических функций во всех режимах функционирования АС согласно ТЗ на создание АС;

2) знание персоналом эксплуатационной документации и наличие у него навыков, необходимых для выполнения установленных функций во всех режимах функционирования АС, согласно ТЗ на создание АС;

3) полноту содержащихся в эксплуатационной документации указаний персоналу по выполнению им функций во всех режимах функционирования АС согласно ТЗ на создание АС;

4) количественные и (или) качественные характеристики выполнения автоматических и автоматизированных функций АС в соответствии с ТЗ:

5) другие свойства АС, которым она должна соответствовать по ТЗ.

1.15. Испытания АС следует проводить на объекте заказчика. По согласованию между заказчиком н разработчиком предварительные испытания и приемку программных средств АС допускается проводить на технических средствах разработчика при создании условий получения достоверных результатов испытаний.

1.16. Допускается последовательное проведение испытаний и сдача частей АС в опытную и постоянную эксплуатацию при соблюдении установленной в ТЗ очередности ввода АС в действие.

2. ПРЕДВАРИТЕЛЬНЫЕ ИСПЫТАНИЯ

2.1. Предварительные испытания АС могут быть:

1) автономные;

2) комплексные.

2.2. Автономные испытания

2.2.1. Автономные испытания АС следует проводить в соответствии с программой и методикой автономных испытаний, разрабатываемых для каждой части АС.

2.2.2. В программе автономных испытаний указывают:

1) перечень функции, подлежащих испытаниям;

2) описание взаимосвязей объекта испытаний с другими частями АС;

3) условия, порядок и методы проведения испытаний и обработки результатов;

4) критерии приемки частей по результатам испытаний.

К программе автономных испытаний следует прилагать график проведения автономных испытаний.

2.2.3. Подготовленные и согласованные тесты (контрольные примеры) на этапе автономных испытаний должны обеспечить:

1) полную проверку функций и процедур по перечню, согласованному с заказчиком;

2) необходимую точность вычислений, установленную в ТЗ;

3) проверку основных временных характеристик функционирования программных средств (в тех случаях, когда это является существенным);

4) проверку надежности и устойчивости функционирования программных и технических средств.

2.2.4. В качестве исходной информации для теста рекомендуется использовать фрагмент реальной информации организации-заказчика в объеме, достаточном для обеспечения необходимой достоверности испытаний.

2.2.5. Результаты автономных испытаний частей АС следует фиксировать в протоколах испытаний. Протокол должен содержать заключение о возможности (невозможности) допуска части АС к комплексным испытаниям.

2.2.6. В случае, если проведенные автономные испытания будут признаны недостаточными, либо будет выявлено нарушение требований регламентирующих документов по составу или содержанию документации, указанная часть АС может быть возвращена на доработку и назначен новый срок испытаний.

2.3. Комплексные испытания

2.3.1. Комплексные испытания АС проводят путем выполнения комплексных тестов. Результаты испытаний отражают в протоколе. Работу завершают оформлением акта приемки в опытную эксплуатацию.

2.3.2. В программе комплексных испытаний АС или частей АС указывают:

1) перечень объектов испытания;

2) состав предъявляемой документации;

3) описание проверяемых взаимосвязей между объектами испытаний;

4) очередность испытаний частей АС;

5) порядок и методы испытаний, в том числе состав программных средств и оборудования, необходимых для проведения испытаний, включая специальные стенды и полигоны.

2.3.3. Для проведения комплексных испытаний должны быть представлены:

1) программа комплексных испытаний;

2) заключение по автономным испытаниям соответствующих частей АС и устранение ошибок и замечаний, выявленных при автономных испытаниях;

3) комплексные тесты;

4) программные и технические средства и соответствующая им эксплуатационная документация.

2.3.4. При комплексных испытаниях допускается использовать в качестве исходной информацию, полученную на автономных испытаниях частей АС.

2.3.5. Комплексный тест должен:

1) быть логически увязанным;

2) обеспечивать проверку выполнения функций частей АС во всех режимах функционирования, установленных в ТЗ на АС, в том числе всех связей между ними;

3) обеспечивать проверку реакции системы на некорректную информацию и аварийные ситуации.

2.3.6. Протокол комплексных испытаний должен содержать заключение о возможности (невозможности) приемки АС в опытную эксплуатацию, а также перечень необходимых доработок и рекомендуемые сроки их выполнения.

После устранения недостатков проводят повторные комплексные испытания в необходимом объеме.

3. ОПЫТНАЯ ЭКСПЛУАТАЦИЯ

3.1. Опытную эксплуатацию проводят в соответствии с программой, в которой указывают:

1) условия и порядок функционирования частей АС и АС в целом;

2) продолжительность опытной эксплуатации, достаточную для проверки правильности функционирования АС при выполнении каждой функции системы и готовности персонала к работе в. условиях функционирования АС;

3) порядок устранения недостатков, выявленных в процессе опытной эксплуатации.

3.2. Во время опытной эксплуатации АС ведут рабочий журнал, в который заносят сведения о продолжительности функционирования АС, отказах, сбоях, аварийных ситуациях, изменениях параметров объекта автоматизации, проводимых корректировках документации и программных средств, наладке технических средств. Сведения фиксируют в журнале с указанием даты и ответственного лица. В журнал могут быть занесены замечания персонала по удобству эксплуатации АС.

3.3. По результатам опытной эксплуатации принимают решение о возможности (или невозможности) предъявления частей АС и системы в целом на приемочные испытания.

Работа завершается оформлением акта о завершении опытной эксплуатации и допуске системы к приемочным испытаниям.

4. ПРИЕМОЧНЫЕ ИСПЫТАНИЯ

4.1. Приемочные испытания проводят в соответствии с программой, в которой указывают:

1) перечень объектов, выделенных в системе для испытаний и перечень требований, которым должны соответствовать объекты (со ссылкой на пункты ТЗ);

2) критерии приемки системы и ее частей;

3) условия и сроки проведения испытаний;

4) средства для проведения испытаний;

5) фамилии лиц, ответственных за проведение испытаний;

6) методику испытаний и обработки их результатов;

7) перечень оформляемой документации.

4.2. Для проведения приемочных испытаний должна быть предъявлена следующая документация:

1) техническое задание на создание АС;

2) акт приемки в опытную эксплуатацию;

3) рабочие журналы опытной эксплуатации;

4) акт завершения опытной эксплуатации и допуска АС к приемочным испытаниям;

5) программа и методика испытаний.

Приемочные испытания следует проводить на функционирующем объекте.

4.3. Приемочные испытания в первую очередь должны включать проверку:

1) полноты и качества реализации функций при штатных, предельных, критических значениях параметров объекта автоматизации и в других условиях функционирования АС, указанных в ТЗ;

2) выполнения каждого требования, относящегося к интерфейсу системы;

3) работы персонала в диалоговом режиме;

4) средств и методов восстановления работоспособности АС после отказов;

5) комплектности и качества эксплуатационной документации.

4.4. Проверку полноты и качества выполнения функций АС рекомендуется проводить в два этапа. На первом этапе проводят испытания отдельных функций (задач, комплексов задач). При этом проверяют выполнение требований ТЗ к функциям (задачам, комплексам задач). На втором этапе проводят проверку взаимодействия задач в системе и выполнение требований ТЗ к системе в целом.

4.5. По согласованию с заказчиком проверка задач в зависимости от их специфики может проводиться автономно или в составе комплекса. Объединение задач при проверке в комплексах целесообразно проводить с учетом общности используемой информации и внутренних связей.

4.6. Проверку работы персонала в диалоговом режиме проводят с учетом полноты и качества выполнения функций системы в целом.

Проверке подлежит:

1) полнота сообщений, директив, запросов, доступных оператору и их достаточность для эксплуатации системы;

2) сложность процедур диалога, возможность работы персонала без специальной подготовки;

3) реакция системы и ее частей на ошибки оператора, средства сервиса.

4.7. Проверка средств восстановления работоспособности АС после отказов ЭВМ должна включать:

1) проверку наличия в эксплуатационной документации рекомендаций по восстановлению работоспособности и полноту их описания;

3) работоспособность средств автоматического восстановления функций (при их наличии).

4.8. Проверку комплектности и качества эксплуатационной документации следует проводить путем анализа документации на соответствие требованиям нормативно-технических документов и ТЗ.

4.9. Результаты испытаний объектов, предусмотренных программой, фиксируют в протоколах, содержащих следующие разделы:

1) назначение испытаний и номер раздела требований ТЗ на АС, по которому проводят испытание;

2) состав технических и программных средств, используемых при испытаниях;

3) указание методик, в соответствии с которыми проводились испытания, обработка и оценка результатов;

4) условия проведения испытаний и характеристики исходных данных;

5) средства хранения и условия доступа к конечной тестирующей программе;

6) обобщенные результаты испытаний;

7) выводы о результатах испытаний и соответствии созданной системы или ее частей определенному разделу требований ТЗ на АС.

4.10. Протоколы испытаний объектов по всей программе обобщают в едином протоколе, на основании которого делают заключение о соответствии системы требованиям ТЗ на АС и возможности оформления акта приемки АС в постоянную эксплуатацию.

Работу завершают оформлением акта о приемке АС в постоянную эксплуатацию.

ИНФОРМАЦИОННЫЕ ДАННЫЕ

1. РАЗРАБОТАН И ВНЕСЕН Техническим комитетом ТК 22 «Информационная технология», Подкомитетом ПК 052 «Автоматизированные системы»

  • Программирование
    • Tutorial

    # wget https://dl.fedoraproject.org/pub/epel/7/x86_64/ # yum localinstall epel-release-6-7.noarch.rpm

    И только после этого yum install octave сработает.
    Наконец, все готово и программа установлена.


    # octave GNU Octave, version 3.8.2 Copyright (C) 2014 John W. Eaton and others. This is free software; see the source code for copying conditions. There is ABSOLUTELY NO WARRANTY; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. For details, type "warranty". Octave was configured for "x86_64-redhat-linux-gnu". Additional information about Octave is available at http://www.octave.org. Please contribute if you find this software useful. For more information, visit http://www.octave.org/get-involved.html Read http://www.octave.org/bugs.html to learn how to submit bug reports. For information about changes from previous versions, type "news". octave:1>

    Операции с матрицами

    Не будем терять время и делать операции, которые можно повторить с помощью bc и awk , о ктоторых речь шла в прошлый раз. Поиграемся немного с матрицами.


    Сперва простое транспонирование матрицы:


    octave:1> A= A = 1 3 5 2 4 6 octave:2> A" ans = 1 2 3 4 5 6

    Попробуем решить систему линейных уравнений:


    x + y + z = 9 2x + 4y - 3z = 1 3x + 6y - 5z = 0

    Вбиваем матрицу A , вектор b и решаем уравнение Ax = b в матричном виде


    octave:1> A= A = 1 1 1 2 4 -3 3 6 -5 octave:2> b= b = 9 1 0 octave:3> x=A\b x = 7.00000 -1.00000 3.00000

    Находим детерминант и собственные значения матрицы.


    octave:4> det (A) ans = -1.00000 octave:5> eig (A) ans = -2.88897 2.76372 0.12525

    Комплексные числа тоже поддерживаются в вычислениях.


    octave:6> A=[-3 0 2; 1 -1 0; -2 -1 0] A = -3 0 2 1 -1 0 -2 -1 0 octave:7> x=det (A) x = -6 octave:8> y=eig(A) y = -1.00000 + 1.41421i -1.00000 - 1.41421i -2.00000 + 0.00000i

    Функции и переменные

    В Octave переменные и функции создавать гораздо проще, чем, к примеру, в Java или C. На примере матриц, мы уже видели как объявлять переменные. Создания новой функции имеет следующий синтаксис


    function = имя_функции (arg1, arg2, ..., argN) тело функции endfunction
    Как правило, новую функцию создают либо в отдельном файле, либо в скрипт-файле Octave
    до первого ее вызова. Если предполагается использовать пользовательскую функцию в разных скрипт-файлах, то, конечно, предпочтительно создать ее в отдельном файле. В GNU Octave файлы с функциями имеют расширение.m и загружаются автоматически. Имя файла должно строго совпадать с именем функции.

    Напишем функцию для решения квадратичного уравнения ax² + bx + c = 0


    octave:9> function = quadr(a, b, c) > D = sqrt(b^2-4*a*c); > x1 = (-b-D)/(2*a); > x2 = (-b+D)/(2*a); > endfunction octave:10> =quadr(a, b, c) y1 = 2 y2 = 3

    Графический интерфейс

    Вообще-то, мы тут за математику командной строки гутарим, но пока непонятно как вывести на экран график функции. Впрочем, никакого секрета тут нет - для этих целей используется Gnuplot . можно изобразить Аттрактор Лоренца , установив дополнительный пакет odepkg .


    function = froessler (vt, vx) vyd = [- (vx(2) + vx(3)); vx(1) + 0.2 * vx(2); 0.2 + vx(1) * vx(3) - 5.7 * vx(3)]; endfunction A = odeset ("MaxStep", 1e-1); = ode78 (@froessler, , , A); subplot (2, 2, 1); grid ("on"); plot (t, y(:,1), "-b;f_x(t);", t, y(:,2), "-g;f_y(t);", \ t, y(:,3), "-r;f_z(t);"); subplot (2, 2, 2); grid ("on"); plot (y(:,1), y(:,2), "-b;f_{xyz}(x, y);"); subplot (2, 2, 3); grid ("on"); plot (y(:,2), y(:,3), "-b;f_{xyz}(y, z);"); subplot (2, 2, 4); grid ("on"); plot3 (y(:,1), y(:,2), y(:,3), "-b;f_{xyz}(x, y, z);");


    Наиболее удобной графической оболочкой для работы с Octave является программа QtOctave . Последняя уже стабилизировалась и включена в состав пакета с момента выхода Octave 4.0 .

    Что-же дальше?

    Может возникнуть вопрос: а зачем вообще нужны открытые математические пакеты? Офисные приложения нужны всем, но ведь далеко не каждому необходимо сидя дома решать уравнения Пуассона, с помощью преобразования Лапласа. Для ВУЗ-ов MATLAB стоит значительно дешевле, нежели для физических лиц и коммерческих организаций. Коммерческие организации, если будет нужно, найдут денежные средства, а обычные люди пусть занимаются математикой в университетах или считают столбиком.


    Конечно же, это ошибочное мнение. Научные расчеты, выполненные с использованием открытого ПО имеют дополнительный «уровень защиты», ведь при желании любой может повторить прогнать те же самые расчеты и проверить валидность результатов . Те же самые вычисления, выполненные на дорогущем ПО, частично отсекают возможность проверки результатов . Проблема на самом деле гораздо шире (английский текст) и дело не только в открытых или проприетарных математических программах. Не секрет, что научные журналы как правило не требуют от авторов предоставить данные и методику, достаточные для гарантированного повтора результатов эксперимента, проверки модели. Особенно часто этим грешат экономисты и финансисты, попросту засекречивая свои данные. Проверка расчетов и выводов среди выборки из массива статей с «засекреченными» данными

  • математика
  • Добавить метки
    • Tutorial

    # wget https://dl.fedoraproject.org/pub/epel/7/x86_64/ # yum localinstall epel-release-6-7.noarch.rpm

    И только после этого yum install octave сработает.
    Наконец, все готово и программа установлена.


    # octave GNU Octave, version 3.8.2 Copyright (C) 2014 John W. Eaton and others. This is free software; see the source code for copying conditions. There is ABSOLUTELY NO WARRANTY; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. For details, type "warranty". Octave was configured for "x86_64-redhat-linux-gnu". Additional information about Octave is available at http://www.octave.org. Please contribute if you find this software useful. For more information, visit http://www.octave.org/get-involved.html Read http://www.octave.org/bugs.html to learn how to submit bug reports. For information about changes from previous versions, type "news". octave:1>

    Операции с матрицами

    Не будем терять время и делать операции, которые можно повторить с помощью bc и awk , о ктоторых речь шла в прошлый раз. Поиграемся немного с матрицами.


    Сперва простое транспонирование матрицы:


    octave:1> A= A = 1 3 5 2 4 6 octave:2> A" ans = 1 2 3 4 5 6

    Попробуем решить систему линейных уравнений:


    x + y + z = 9 2x + 4y - 3z = 1 3x + 6y - 5z = 0

    Вбиваем матрицу A , вектор b и решаем уравнение Ax = b в матричном виде


    octave:1> A= A = 1 1 1 2 4 -3 3 6 -5 octave:2> b= b = 9 1 0 octave:3> x=A\b x = 7.00000 -1.00000 3.00000

    Находим детерминант и собственные значения матрицы.


    octave:4> det (A) ans = -1.00000 octave:5> eig (A) ans = -2.88897 2.76372 0.12525

    Комплексные числа тоже поддерживаются в вычислениях.


    octave:6> A=[-3 0 2; 1 -1 0; -2 -1 0] A = -3 0 2 1 -1 0 -2 -1 0 octave:7> x=det (A) x = -6 octave:8> y=eig(A) y = -1.00000 + 1.41421i -1.00000 - 1.41421i -2.00000 + 0.00000i

    Функции и переменные

    В Octave переменные и функции создавать гораздо проще, чем, к примеру, в Java или C. На примере матриц, мы уже видели как объявлять переменные. Создания новой функции имеет следующий синтаксис


    function = имя_функции (arg1, arg2, ..., argN) тело функции endfunction
    Как правило, новую функцию создают либо в отдельном файле, либо в скрипт-файле Octave
    до первого ее вызова. Если предполагается использовать пользовательскую функцию в разных скрипт-файлах, то, конечно, предпочтительно создать ее в отдельном файле. В GNU Octave файлы с функциями имеют расширение.m и загружаются автоматически. Имя файла должно строго совпадать с именем функции.

    Напишем функцию для решения квадратичного уравнения ax² + bx + c = 0


    octave:9> function = quadr(a, b, c) > D = sqrt(b^2-4*a*c); > x1 = (-b-D)/(2*a); > x2 = (-b+D)/(2*a); > endfunction octave:10> =quadr(a, b, c) y1 = 2 y2 = 3

    Графический интерфейс

    Вообще-то, мы тут за математику командной строки гутарим, но пока непонятно как вывести на экран график функции. Впрочем, никакого секрета тут нет - для этих целей используется Gnuplot . можно изобразить Аттрактор Лоренца , установив дополнительный пакет odepkg .


    function = froessler (vt, vx) vyd = [- (vx(2) + vx(3)); vx(1) + 0.2 * vx(2); 0.2 + vx(1) * vx(3) - 5.7 * vx(3)]; endfunction A = odeset ("MaxStep", 1e-1); = ode78 (@froessler, , , A); subplot (2, 2, 1); grid ("on"); plot (t, y(:,1), "-b;f_x(t);", t, y(:,2), "-g;f_y(t);", \ t, y(:,3), "-r;f_z(t);"); subplot (2, 2, 2); grid ("on"); plot (y(:,1), y(:,2), "-b;f_{xyz}(x, y);"); subplot (2, 2, 3); grid ("on"); plot (y(:,2), y(:,3), "-b;f_{xyz}(y, z);"); subplot (2, 2, 4); grid ("on"); plot3 (y(:,1), y(:,2), y(:,3), "-b;f_{xyz}(x, y, z);");


    Наиболее удобной графической оболочкой для работы с Octave является программа QtOctave . Последняя уже стабилизировалась и включена в состав пакета с момента выхода Octave 4.0 .

    Что-же дальше?

    Может возникнуть вопрос: а зачем вообще нужны открытые математические пакеты? Офисные приложения нужны всем, но ведь далеко не каждому необходимо сидя дома решать уравнения Пуассона, с помощью преобразования Лапласа. Для ВУЗ-ов MATLAB стоит значительно дешевле, нежели для физических лиц и коммерческих организаций. Коммерческие организации, если будет нужно, найдут денежные средства, а обычные люди пусть занимаются математикой в университетах или считают столбиком.


    Конечно же, это ошибочное мнение. Научные расчеты, выполненные с использованием открытого ПО имеют дополнительный «уровень защиты», ведь при желании любой может повторить прогнать те же самые расчеты и проверить валидность результатов . Те же самые вычисления, выполненные на дорогущем ПО, частично отсекают возможность проверки результатов . Проблема на самом деле гораздо шире (английский текст) и дело не только в открытых или проприетарных математических программах. Не секрет, что научные журналы как правило не требуют от авторов предоставить данные и методику, достаточные для гарантированного повтора результатов эксперимента, проверки модели. Особенно часто этим грешат экономисты и финансисты, попросту засекречивая свои данные. Проверка расчетов и выводов среди выборки из массива статей с «засекреченными» данными Добавить метки

    • Tutorial
    Жили-были умные, но очень жадные люди, которые написали замечательную программу Matlab. Умные они были потому, что программа вышла хорошей, а жадными, потому что очень любили деньги. Так любили, что брали их за свой Matlab не только с дядек серьезных, матлабом деньги зарабатывающих, а и с бедных студентов тоже, которым порой и сухую корочку хлеба купить не за что было. И кончилась бы сказочка скоро и невесело, если бы мир был не без добрых и умных людей, написавших похожие на матлаб программы, хоть худо-бедно работающие, да для всех желающих бесплатные. И с открытыми исходными текстами. Так что сами бедные студенты стали те программы дописывать, и работать они лучше и лучше стали с каждым годом. И стали тогда все жить-поживать, да добра наживать...

    Введение

    Большинство научных работников не ломают голову над тем, как устроены численные методы внутри. Они просто используют их, применяя в своей работе специализированные пакеты численных расчетов. Это совершенно не означает, что не нужно разбираться с тем, как эти методы устроены. Программу пишет человек, а ему свойственно ошибаться. И ошибки сквозят даже в самых дорогих и навороченных системах численной математики сплошь и рядом. К тому же есть задачи, где применение стандартных систем невозможно.

    Вместе с тем, умение использовать универсальный математический софт это must have для современного ученого, потому что изобретая велосипед можно никогда не добраться до решения своей основной задачи. Сегодня мы рассмотрим обещанный Octave, попытавшись решить с его помощью очередную детскую задачу, сделав при этом недетские выводы.

    1. Что такое Octave и где его взять

    GNU Octave - свободный математический пакет численной математики, основанный на концепциях своего проприетарного собрата Matlab. Он доступен для всех популярных на сегодняшний день десктопных платформ, и получить его можно, зайдя в раздел загрузки на официальном сайте.

    Большую часть экрана занимает так называемое командное окно, с приглашием командной строки вида ">>". Введем туда что нибудь и нажмем Enter

    >> 2 + 2 ans = 4
    шикарно, переменная ans содержит результат последней операции, если вы явно не завели переменную под результат, например так

    >> x = 3 + 2 x = 5
    переменные вводятся «на ходу», как это принято в интерпретируемых языках. Да собственно m-язык октава и есть язык интерпретатора, очень напоминающий аналогичный язык матлаба. Один раз заведенная переменная сохраняет свое значение и тип до следующего присваивания, либо до полной очистки памяти командной оболочки

    >> x + ans ans = 9
    С левой стороны окна есть область, в которой расположены (сверху вниз): файловый менеджер, список глобальных переменных с их значениями, а также история введенных команд

    Стоит обратить внимание на то, что для переменных указана размерность (Dimention) 1х1. Основным типом данных в Octave, как и в Matlab является матрица. Так вот наши числа это на самом деле матрицы размером 1 на 1 элемент.

    Очистить все глобальные переменные можно выбрав в меню Edit -> Clear Workspace, а очистить командное окно - щелкнуть по нему правой кнопкой, выбрав Clear Window. Выполним очистку переменных и введя x получим

    >> x error: "x" undefined near line 1 column 1 >> x = 3 x = 3 >> x x = 3
    видно, что переменная x стала недоступна, до тех пока мы явно не присвоили ей значение снова.

    Скажу честно, что с Ocatve я никогда не работал и разбираюсь вместе с читателем. Поэтому, предположим, что мы уже знаем достаточно, чтобы решить какую нибудь задачу. Например ту, которую решали в . Но сначала…

    2. Нормальная форма Коши

    Помните, я говорил о том, что большинство, за исключением некоторого узкого класса, численных методов «заточены» под уравнения 1-го порядка? И что прежде чем применить эти методы к решению уравнения, то надо понизить его порядок? Беда в том, что не все уравнения допускают понижение порядка. Однако, любое уравнение n-го порядка можно превратить в n уравнений 1-го порядка. Это называется преобразованием уравнения к нормальной форме Коши . Возьмем прошлое уравнение

    Вспоминаем, что

    тогда

    и получаем вместо одного уравнения 2-го порядка два уравнения 1-го порядка, которые нужно решать вместе, одновременно

    Это уже не одно уравнение, а система дифференциальных уравнений, содержащая две неизвестные зависимости и .

    Как решать систему уравнений численно? Да так же, как и одно уравнение. Соберем все наши переменные в вектор-столбец (или массив, или матрицу-столбец, кому как удобно выражаться это не важно)

    И правые части тоже соберем в вектор-столбец

    Тогда рекуррентная формула метода Эйлера будет справедлива для каждого элемента этих столбцов

    Где n - число уравнений, в нашем случае их два.

    К чему я всё это? А к тому, что Octave требует представлять дифференциальные уравнения именно в нормальной форме Коши.

    С точки зрения механики вектор-столбец y называется вектором состояния системы или вектором фазовых координат . Тогда наша система уравнений превращается в одно векторное уравнение

    Теперь возьмем, и в командном окне Octave наберем

    >> function dydt = F(y, t)
    Таким образом мы определяем функцию, которая на вход принимает текущее значение фазовых координат y и текущее время t, а на выходе возвращает значение производных от фазовых координат. Видим, что приглашение командной строки ">>" пропало, система ждет что мы закончим ввод тела функции ключевым словом endfunction. Продолжим набирать функцию

    >> function dydt = F(y, t) g = 10 dydt(1) = y(2) dydt(2) = -g endfunction
    Итак, в теле функции мы определили g = 10 - принятое нами значение ускорения свободного падения. Мы видим, что же не появилось в списке переменных слева - эта переменная является локальной, и существует лишь в пределах функции. Переменная y это матрица-столбец, первый элемент y(1) которой это координата z, второй y(2) - проекция вектора скорости v z . Соответственно, dydt - это то значение, которое возвращает наша функция, это тоже матрица-столбец первый элемент которой это производная от z по времени, а второй - производная от v z по времени. То есть мы записали нашу систему дифференциальных уравнений в терминах Octave.

    Теперь определимся с диапазоном времени, для которого нам надо получить результат. Пусть это будет десять точек от 0 до 1 секунды, с шагом 0.1 - сравним результат с ручным примером

    >> t0 = 0 t0 = 0 >> tend = 1 tend = 1 >> deltaT = 0.1 deltaT = 0.10000 >> t = t = 0.00000 0.10000 0.20000 0.30000 0.40000 0.50000 0.60000 0.70000 0.80000 0.90000 1.00000
    Тут всё очевидно: t0 - начальный момент времени, tend - конечный момент времени. А вот deltaT = 0.1 секунда - это не шаг интегрирования ! Это интервал, с которым Ocatve будет отображать для нас численное решение уравнения. Последняя команда формирует массив моментов времени для которых мы хотим получить решение.

    Как вы знаете из , для решения уравнения численно необходимо знать начальные значения скорости и координаты. Необходимо задать их для Octave

    >> y0 = y0 = 100 0
    тем самым мы определили матрицу-столбец, содержащую начальную координату и начальное значение вертикальной проекции скорости. А теперь решаем уравнение

    >> y = lsode("F", y0, t)
    Функция lsode решит для нас уравнение численно. Первый параметр - имя функции, которая вычисляет производные от фазовых координат. Это функция F, мы её задали. Второй параметр - начальные условия , то есть значения фазовых координат в момент времени t = t0. Последний параметр - массив моментов времени, для которых мы хотим рассчитать значения фазовых координат. Жмем Enter…

    В ответ вываливается гора требухи, оканчивающаяся предложением

    G = 10 dydt = -0.99690 dydt = -0.99690 -10.00000 g = 10 dydt = -0.99690 dydt = -0.99690 -10.00000 g = 10 dydt = -0.99690 dydt = -0.99690 -10.00000 g = 10 dydt = -1.9936 -- less -- (f)orward, (b)ack, (q)uit
    нам предлагают листать требуху дальше (f), вернуться назад (b), или выйти (q). Те, кто знает *nix-подобные системы, знают, что это консольный вывод под управлением юниксовой утилиты less. Мы притворимся что не знаем, выйдем отсюда, нажав на клавиатуре q.

    Наберем теперь в командной строке «y» и нажмем Enter

    >> y y = 100.00000 0.00000 99.95000 -1.00000 99.80000 -2.00000 99.55000 -3.00000 99.20000 -4.00000 98.75000 -5.00000 98.20000 -6.00000 97.55000 -7.00000 96.80000 -8.00000 95.95000 -9.00000 95.00000 -10.00000
    Ничего не напоминает? Ну конечно же это то самое решение, что мы получили для задачи из прошлой статьи. Только оно теперь удивительно точное - значения совпадают с аналитическим решением! Открою вам тайну - это точное решение нашей задачи. Связано это с тем, что функция lsode использует для решения задачи отнюдь не метод Эйлера, а нечто более продвинутое. Движение камня происходит с постоянным ускорением, и та формула численной аппроксимации, что применяется в данном методе, очевидно просто совпадает с аналитическим решением задачи. Хотя, если лезть в дебри представления машиной чисел с плавающей запятой, то… А ну да ладно, сейчас не об этом.

    3. Строим график

    Наберите теперь команду

    >> plot(t, y)
    Выскочит окошко с графическим представлением решения

    Синяя кривая сверху - координата камня. Оранжевая снизу - вертикальная проекция скорости. Введенная команда неудобна тем, что строит график для всех функций сразу. А если мы хотим, построить, зависимость скорости от высоты? Тогда поступим так

    >> plot(y(:,1), y(:,2))
    Будет построен график, где по оси абсцисс пойдет переменная y(1), а по оси ординат - y(2), что есть соответственно высота и вертикальная проекция скорости

    Такой график в механике называют фазовым портретом системы , то есть траекторией движения системы в пространстве фазовых координат. В данном случае фазовые координаты это высота камня над поверхностью Земли и его скорость. В механике часто нельзя получить точного решения в виде функций времени, но можно связать между собой координаты и скорости исходя из энергетических соображений. По полученным зависимостям можно найти фазовую траекторию системы и сделать много выводов о характере её движения не решая задачу до конца. Об этом мы тоже как-нибудь поговорим.

    А пока предлагаю выполнить самостоятельное задание - постройте график зависимости высоты от времени и скорости от времени в отдельных окнах. И старайтесь не смотреть под спойлер