Loading AI tools
пакет прикладных программ для решения задач технических вычислений Из Википедии, свободной энциклопедии
MATLAB (сокращение от англ. «Matrix Laboratory», в русском языке произносится как Матла́б) — язык программирования и пакет прикладных программ для решения задач технических вычислений. Пакет используют более миллиона инженерных и научных работников, он работает на большинстве современных операционных систем, включая Linux, macOS, Solaris (начиная с версии R2010b поддержка Solaris прекращена[8][9]) и Windows[10].
MATLAB как язык программирования был разработан Кливом Моулером (англ. Cleve Moler) в конце 1970-х годов, когда он был деканом факультета компьютерных наук в Университете Нью-Мексико. Целью разработки служила задача дать студентам факультета возможность использования программных библиотек Linpack и EISPACK без необходимости изучения Фортрана. Вскоре новый язык распространился среди других университетов и был с большим интересом встречен учёными, работающими в области прикладной математики. До сих пор в Интернете можно найти версию 1982 года, написанную на Фортране, распространяемую с открытым исходным кодом. Инженер Джон Литтл (англ. John N. (Jack) Little) познакомился с этим языком во время визита Клива Моулера в Стэнфордский университет в 1983 году. Поняв, что новый язык обладает большим коммерческим потенциалом, он объединился с Кливом Моулером и Стивом Бангертом (англ. Steve Bangert)[11]. Совместными усилиями они переписали MATLAB на C[12] и основали в 1984 компанию The MathWorks для дальнейшего развития. Эти переписанные на С библиотеки долгое время были известны под именем JACKPAC. Первоначально MATLAB предназначался для проектирования систем управления (основная специальность Джона Литтла), но быстро завоевал популярность во многих других научных и инженерных областях. Он также широко использовался и в образовании, в частности, для преподавания линейной алгебры и численных методов.
Язык MATLAB является высокоуровневым интерпретируемым языком программирования, включающим основанные на матрицах структуры данных, широкий спектр функций, интегрированную среду разработки, объектно-ориентированные возможности и интерфейсы к программам, написанным на других языках программирования.
Программы, написанные на MATLAB, бывают двух типов — функции и скрипты. Функции имеют входные и выходные аргументы, а также собственное рабочее пространство для хранения промежуточных результатов вычислений и переменных. Скрипты же используют общее рабочее пространство. Как скрипты, так и функции сохраняются в виде текстовых файлов и компилируются в машинный код динамически. Существует также возможность сохранять так называемые pre-parsed программы — функции и скрипты, обработанные в вид, удобный для машинного исполнения. В общем случае такие программы выполняются быстрее обычных, особенно если функция содержит команды построения графиков.
Основной особенностью языка MATLAB являются его широкие возможности по работе с матрицами, которые создатели языка выразили в лозунге «думай векторно» (англ. Think vectorized).
Пример кода, являющегося частью функции magic.m, генерирующего магический квадрат M для нечётных значений размера стороны n:
[J,I] = meshgrid(1:n);
A = mod(I+J-(n+3)/2,n);
B = mod(I+2*J-2,n);
M = n*A + B + 1;
Пример кода, загружающего одномерный массив A значениями массива B в обратном порядке (только если вектор A определён, и число его элементов совпадает с числом элементов вектора B):
A(1:end) = B(end:-1:1);
Программа MATLAB может создавать трехмерную графику с помощью функций surf, plot3 или mesh.
[X,Y] = meshgrid(-8:.5:8);
R = sqrt(X.^2 + Y.^2);
Z = sin(R)./R;
Z(R==0) = 1;
mesh(X,Y,Z);
Этот код создаст каркасный 3D график sinc-функции . |
![]() |
Деление графического окна осуществляется командой subplot (количество строк, количество столбцов, текущий элемент) (представим что как бы матрицу создаем). Построение Полиномиальной регрессии для табличных данных возможно через команду Tools > Basic Fitting графического окна вывода.[13]
Вычисление площади ограниченной двумя линиями возможно с помощью команды quad (площадь определенного интеграла, код см. ниже). Аргументами quad являются точки пересечения линий (находятся с помощью команды fzero(первый аргумент разница между функциями, второй аргумент отрезок или точка где разница между фунуциями равна нулю).
clear all
clc
close all
f=@(x) 0.5*x.^2+sin(5*x)-5*x+1
g=@(x) sqrt(x.^2+5.5)
X=-2:0.01:14;
subplot(2,1,1)
plot(X,f(X),'m','LineWidth',2)
hold on
plot(X,g(X),'g','LineWidth',2)
grid
xlabel('x')
ylabel('f,g')
legend('f','g','Location','best')
F=@(x) g(x)-f(x)
subplot(2,1,2)
plot(X,F(X),'b','LineWidth',2)
hold on
plot([-2 14],[0 0],'k','LineWidth',2)
grid
xlabel('x')
ylabel('f,g')
x1=fzero(F,0)
x2=fzero(F,[10,14])
S=quad(F,x1,x2)
В случае длинных формул, когда выражение не влезает в строку в программе предусмотрена функция переноса в командном окне осуществляется тремя точками "...". Точки становятся синего цвета, курсор на следующей строке мигает но нет знака двойного неравенства >> (знак начала командной строки). Например,
t=sqrt(abs(sin(1.3*pi)/cos(4.6)*tan(0.7*pi)/acot(0.3)))-...
(exp(-0.2)*log(3.8)^1.2)^(1/3)
равносильно
t=sqrt(abs(sin(1.3*pi)/cos(4.6)*tan(0.7*pi)/acot(0.3)))-(exp(-0.2)*log(3.8)^1.2)^(1/3)
Функция plot() позволяет менять цвет и тип отображаемой линии, в т. ч. логарифмической шкале[14]. Для этого, используются дополнительные параметры, которые записываются следующим образом: plot(<x>, <y>, <’цвет линии, тип линии, маркер точек’>);[15] Например,
plot(X,Y,'r--','LineWidth',2, 'Marker','o','MarkerFaceColor','k')
построит график красного цвета (r), штрихпунктирный(--), с толщиной линии 2 ('LineWidth',2), с маркером в виде круга ('Marker','o'), закрашенного в черный цвет ('MarkerFaceColor','k').
grid
xlabel('x')
ylabel('y')
title('Lomanaya liniya')
grid создает сетку, xlabel('x') и ylabel('y') подписывает оси координат, title('Lomanaya linia') дает заголовок графику.
В квадратных скобках перечисляем элементы вектора через пробел (можно разделять запятой) и элементы выложатся в строчку. Например,
X=[2 3 4 3 5 1]
Если потребуется выложить элементы в столбец то элементы нужно разделять точкой с запятой ";" (в принципе всегда можно применить процедуру транспонирования).
Очень часто нужно задать вектор, элементы которого отличаются на одинаковую величину - шаг. Особенно это актуально когда строим графики функций (область построения этой функции разделяем точками с каким-то шагом). Для этой задачи используется символ индексации двоеточие ":". Например, от 0 до 10 для шага 2:
Y=[0:2:10]
(если шаг равен 1 то его не пишем, единицу MATLAB поставит по умолчанию). Вектор может быть аргументом функции, например
F=sin(Y)
Есть такие вещи, которые в математике определенной операцией не описаны. Например работа поэлементно с элементами массива. В математике мы можем поэлементно работать с элементами массива, но нет определенного обозначения для этого. В Matlabe есть. В случае, если нужно применить действие к каждому элементу массива то нужно ставить точку ".". Например, есть вектор F
F=[0 3 4 3 5 1]
мы спокойно его можем поделить на два:
F/2
Далее получим (каждый элемент вектора будет поделен на 2):
0 1.5000 2.0000 1.5000 2.5000 0.5000
Однако, если написать
2/F
Matlab выдаст ошибку:
Error using /
Matrix dimensions must agree.
Как только в голове возникает мысль, что действие нужно применить к каждому элементу вектора в Matlabe на это нужно указать проставлением точки перед действием:
2./F
. Далее получим:
Inf 0.6667 0.5000 0.6667 0.4000 2.0000
.
Inf обозначает что было произведено деление на ноль.
В случае если есть два графика функции и нужно определить их пересечение, далее посчитать площадь которая ограничивается в результате пересечения. В Matlabe пользовательскую функцию можно создать добавлением знака "@" (в круглых скобках пишем то, от чего эта функция зависит):
f=@(x)0.5*x^2+sin(5*x)-5*x+1
что соотвтетствует функции . Точка стоит только перед степенью (.^), это говорит о том, что функция будет вектором. Перед суммой, разностью точки не ставятся так как векторы складывать, вычитать можно по обычным правилам.
MATLAB выведет:
f =
function_handle with value:
@(x)0.5*x.^2+sin(5*x)-5*x+1
function_handle говорит о том что функция ручной работы, пользовательская.
Пример кода для вывода диапазона построения от -2 до 12 с шагом 0.01 (можно вводить как 0.01 так и .01):
X=-2:.01:12;
Точка с запятой ";"в конце команды обозначает, что результат не будет выведен на экран. Для вывода функций вместе в одном окне можно использовать команду hold on:
plot(X,f(X))
hold on
plot(X,g(X))
grid
legend('f','g','Location','best')
legend('f','g','Location','best') говорит о том что подписи функций на совместном графике будут расположены в наиболее свободном месте.
MATLAB предоставляет пользователю большое количество (несколько сотен) функций для анализа данных, покрывающие практически все области математики, в частности:
MATLAB предоставляет удобные средства для разработки алгоритмов, включая высокоуровневые с использованием концепций объектно-ориентированного программирования. В нём имеются все необходимые средства интегрированной среды разработки, включая отладчик и профайлер. Функции для работы с целыми типами данных облегчают создание алгоритмов для микроконтроллеров и других приложений, где это необходимо.
В составе пакета MATLAB имеется большое количество функций для построения графиков, в том числе трёхмерных, визуального анализа данных и создания анимированных роликов.
Встроенная среда разработки позволяет создавать графические интерфейсы пользователя с различными элементами управления, такими как кнопки, поля ввода и другими.
Программы MATLAB, как консольные, так и с графическим интерфейсом пользователя, могут быть собраны с помощью модуля MATLAB Compiler в независимые от MATLAB исполняемые приложения или динамические библиотеки, для запуска которых на других компьютерах, однако, требуется установка свободно распространяемой среды MATLAB Runtime[17] (ранее называлась MATLAB Compiler Runtime MCR)[18].
Пакет MATLAB включает различные интерфейсы для получения доступа к внешним подпрограммам, написанным на других языках программирования, данным, клиентам и серверам, общающимся через технологии Component Object Model или Dynamic Data Exchange, а также периферийным устройствам, которые взаимодействуют напрямую с MATLAB. Многие из этих возможностей известны под названием MATLAB API.
Пакет MATLAB предоставляет доступ к функциям, позволяющим создавать, манипулировать и удалять COM-объекты (как клиенты, так и серверы). Поддерживается также технология ActiveX. Все COM-объекты принадлежат к специальному COM-классу пакета MATLAB. Все программы, имеющие функции контроллера автоматизации (англ. Automation controller), могут иметь доступ к MATLAB как к серверу автоматизации (англ. Automation server).
Пакет MATLAB в Microsoft Windows предоставляет доступ к программной платформе .NET Framework. Имеется возможность загружать .NET сборки (Assemblies) и работать с объектами .NET классов из среды MATLAB. В версии MATLAB 7.11 (R2010b) поддерживается .NET Framework версий 2.0, 3.0, 3.5 и 4.0.
Пакет MATLAB содержит функции, которые позволяют ему получать доступ к другим приложениям среды Windows, равно как и этим приложениям получать доступ к данным MATLAB, посредством технологии динамического обмена данными (DDE). Каждое приложение, которое может быть DDE-сервером, имеет своё уникальное идентификационное имя. Для MATLAB это имя — Matlab.
В MATLAB существует возможность использовать веб-сервисы. Специальная функция создаёт класс, содержащий методы API веб-сервиса, что позволяет обращаться к веб сервису, через вызовы методов класса.
MATLAB взаимодействует с клиентом веб-сервиса с помощью получения от него данных, их обработки и отправки результата. Поддерживаются следующие технологии: Simple Object Access Protocol (SOAP) и Web Services Description Language (WSDL).
Интерфейс для последовательного порта пакета MATLAB обеспечивает прямой доступ к периферийным устройствам, таким как модемы, принтеры и научное оборудование, подключающееся к компьютеру через последовательный порт (COM-порт). Интерфейс работает путём создания объекта специального класса для последовательного порта. Имеющиеся методы этого класса позволяют считывать и записывать данные в последовательный порт, использовать события и обработчики событий, а также записывать информацию на диск компьютера в режиме реального времени. Это бывает необходимо при проведении экспериментов, симуляции систем реального времени и для других приложений.
Пакет MATLAB включает интерфейс взаимодействия с внешними приложениями, написанными на языках C и Фортран. Осуществляется это взаимодействие через MEX-файлы. Существует возможность вызова подпрограмм, написанных на C или Фортране из MATLAB, как будто это встроенные функции пакета. MEX-файлы представляют собой динамически подключаемые библиотеки, которые могут быть загружены и исполнены интерпретатором, встроенным в MATLAB. MEX-процедуры имеют также возможность вызывать встроенные команды MATLAB.
Интерфейс MATLAB, относящийся к общим DLL, позволяет вызывать функции, находящиеся в обычных динамически подключаемых библиотеках, прямо из MATLAB. Эти функции должны иметь C-интерфейс.
Кроме того, в MATLAB имеется возможность получить доступ к его встроенным функциям через C-интерфейс, что позволяет использовать функции пакета во внешних приложениях, написанных на C. Эта технология в MATLAB называется C Engine.
Для MATLAB имеется возможность создавать специальные наборы инструментов (англ. toolbox), расширяющие его функциональность. Наборы инструментов представляют собой коллекции функций и объектов, написанных на языке MATLAB для решения определённого класса задач. Компания Mathworks поставляет наборы инструментов, которые используются во многих областях, включая следующие:
Помимо вышеперечисленных, существуют тысячи других наборов инструментов для MATLAB, написанных другими компаниями и энтузиастами.
Существует большое количество программных пакетов для решения задач численного анализа. Многие из таких пакетов являются свободным программным обеспечением.
Seamless Wikipedia browsing. On steroids.
Every time you click a link to Wikipedia, Wiktionary or Wikiquote in your browser's search results, it will show the modern Wikiwand interface.
Wikiwand extension is a five stars, simple, with minimum permission required to keep your browsing private, safe and transparent.