Как протабулировать функцию matlab

от admin

MATLAB для студента, специалиста.

Цель данной статьи — познакомить читателя с одной из наиболее популярных систем компьютерного моделирования. Автор надеется, что после изучения этого материала читатели проявят интерес к MATLAB, а, возможно, попробуют реализовать примеры, приведенные ниже. Не исключено, что в результате на свет появятся новые приверженцы этой системы, которые с успехом запишут на месте многоточия, оставленного в заголовке статьи, свою профессию или занятие. Все-таки недаром пользователи MATLAB отмечают его безграничность.

Итак, что же умеет MATLAB? Во-первых, для неискушенного пользователя он может стать просто удобным калькулятором. Наберите в командной строке 2+2, нажмите Enter, получите ответ. 🙂 Такой калькулятор считает точно, знает все необходимые математические функции и константы, легко справляется с комплексными числами.

Следующим этапом знакомства с программой станет так называемый диалоговый режим. MATLAB запоминает все результаты вычислений и введенные ранее команды, поэтому решать с его помощью самые разные классы задач очень удобно: ввел оператор, посмотрел результат, выполнил следующее действие и т.д., до получения конечного результата. При необходимости весь ход расчетов можно сохранить и позже вернуться к нему. Уже здесь пользователю начнут открываться замечательные особенности системы MATLAB. Ведь даже название программы далеко не случайно — слова «Матричная Лаборатория» указывают, что базовой структурой, с которой работает MATLAB, является матрица. Это действительно удобно, ведь чаще всего работа ведется с набором значений каких-либо функций или переменных. Рассмотрим реализованный средствами MATLAB классический пример табулирования функции. Здесь он займет всего две строки:

В первой определяется матрица значений аргумента функции x от 0 до 10 с шагом 0.1, во второй строке вычисляется матрица значений функции y=sin x. Все просто! Отметим, что поскольку такие вычисления в программе являются естественными, то и выполняются они с потрясающей скоростью. Если теперь ввести еще одну команду, получим график синусоиды.

Надо сказать, что практически все задачи, решаемые в MATLAB, выполняются именно так — легко, изящно, не производя никаких лишних действий. Во всем чувствуется забота разработчиков о пользователях.

Есть у авторов MATLAB еще один конек — скорость. Если решение какой-либо задачи можно ускорить, используя новые алгоритмы или методы, — будьте уверены, MATLAB уже умеет это делать. Чтобы расставить все точки над i, проведем небольшой тест по сравнению производительности наиболее популярных среди пользователей систем символьной и компьютерной математики. Классическую задачу обращения квадратной матрицы большого размера выполнят MATLAB, MathCad и Mathematica. Испытания проводились на одном компьютере, учитывалось лишь время выполнения оператора B=inv(A), B:=A^(-1), B=Inverse[A] для каждой программы соответственно. Результаты действительно потрясают: MATLAB выполнил расчет быстрее, чем MathCad и Mathematica, вместе взятые. Сравните сами: 2 секунды против 23 и 26 секунд! Можно проводить и другие тесты, но вряд ли картина сильно изменится.

Как всем прекрасно известно, хорошего всегда не хватает. Поэтому рано или поздно у пользователей системы возникает ощущение, когда при всем богатстве встроенных функций хочется чего-то большего. Это значит, что настало время открыть для себя богатство и гибкость m-файлов. MATLAB позволяет разрабатывать собственные программы, придумывать новые алгоритмы и нестандартные приемы. Программировать будет несложно, ведь все операторы уже встречались при работе в диалоговом режиме. Просто теперь они записаны последовательно в одном файле! (Те, кто пытается программировать в MathCad, уже могут завидовать.) Также появляется возможность реализовывать циклы, условия и прочие радости настоящих программистов. При необходимости разработанный проект можно будет скомпилировать в исполняемый exe-файл.

Такая свобода маневра для пользователя может быть полезна в случае оптимизации времени выполнения сложных алгоритмов. В качестве примера можно привести процесс решения дифференциальных уравнений. Разумеется, MATLAB умеет решать такие уравнения, однако если вас не устраивает реализованный программистами метод Рунге-Кутты, можно написать свой. Подобная открытость программы будет весьма кстати и при решении нестандартных задач. Так, например, любители решать дифференциальные уравнения в частных производных по достоинству оценят как встроенные решатели, так и функции по работе со специальными видами матриц, позволяющие реализовать свои собственные алгоритмы. Следующие две строки кода показывают, как в MATLAB легко получается тридиагональная разреженная матрица для представления второй производной для n точек в классическом методе конечных разностей:

Осталось добавить десяток-другой строк кода, и ваш собственный решатель готов!

Разработчики MATLAB в последнее время достаточно оперативно вносят в программу полезные изменения и новые возможности. Например, в версии 2007а впервые появилась поддержка распределения выполняемых задач на несколько процессорных ядер. При этом от пользователя не требуется внесение изменений в уже разработанные программы — параллельность реализуется на уровне вычислительного ядра MATLAB. В свете грядущей гегемонии двух-, четырех- и более ядерных процессоров, согласитесь, новшество весьма интересное. Первые оценки пользователей показали приблизительно тридцатипроцентный рост производительности на двухъядерных процессорах для различных классов задач.

Не забывают разработчики и об удобстве пользователей. В последних версиях программы серьезно изменился встроенный редактор для работы с m-файлами. В частности, появилась возможность выделять участки кода в ячейки (cells). Такой подход действительно помогает визуально отделить различные блоки, а при отладке еще и оперировать каждой ячейкой в отдельности.

Возможно, пользователи системы Mathematica сделают замечание, что они с понятием ячеек знакомы уже давным-давно. И, ко всему прочему, они могут в своих проектах сворачивать ячейки (аналог модного сейчас термина folding), а вот MATLAB этого делать не умеет. Да, это так. И здесь весьма четко просматривается приверженность создателей MATLAB к процедурному программированию. Зачем нам прятать куски кода, если можно легко оформить его в виде подключаемой функции? А позже использовать полученную функцию снова и снова для вновь создаваемых программ!

Также сравнительно недавно в системе MATLAB появилась одна из интересных новинок, серьезно ускоряющих построение и редактирование графиков. Речь идет о возможности вручную настроить внешний вид и параметры полученного двумерного или объемного изображения, а затем автоматически создать m-файл, в котором все заданные пользователем параметры будут сгенерированы в виде функции.

Теперь дальнейшая работа по построению остальных графиков сведется к передаче этой функции новых данных. Красота!

Надеюсь, все мои восторги были высказаны не зря, и читатели с удовольствием продолжат знакомство с MATLAB самостоятельно. Желаю удачи в изучении увлекательного мира систем компьютерной математики.

Табулирование функции в системе MATLAB

Математическая функция может быть представлена в виде формулы, таблицы или графика. В системе MATLAB табулирование функции осуществляется с помощью функции subs ().

Синтаксис функции subs(f, х, х1) выглядит следующим образом: f — функция, заданная аналитически; х — аргумент функции f; х1 — набор значений аргумента х, для которых определяется значение функции f.

Читать:
Что означает пресс f

Переменная х1 может быть представлена в виде вектора или ранжированной переменной хn, где хn начальное значение х1, Δх — шаг, хk — конечное значение х1.

Технология табулирования функции f(x) включает несколько шагов:

  1. Определение необходимых символьных переменных с помощью команды syms
  2. Задание значений переменной х1.
  3. Задание функции табулирования у =f(x).
  4. Вызов функции табулирования subs с соответствующим параметрами.
  1. аргумент лежит в диапазоне [0; 1] и меняется с постоянным шагом h=0.2;
  2. значения аргумента заданы вектором [0, 0.5, 1, 2, 5].

Функция subs позволяет табулировать одновременно несколько функций. Для этого необходимо параметр у представить в виде матрицы табулируемых функций.

Кроме того, MATLAB позволяет табулировать функции, используя матричные операции и не обращаясь к функции subs. Технология вычислений в этом случае состоит в выполнении следующих операций:

Раздел 2. Программирование в MatLab и табулирование функций

Создать 2 отдельных М-файла, содержащих каждый свою отдельную функцию. Каждый М-файл должен содержать задание области значений переменной при помощи условного оператора перехода – «if»; определять конкретное значение параметра(ов).

В отдельном М-файле написать программу обращения к созданным М-файлам, используя условный оператор перехода – «if». Точка перехода от одной функции к другой: х= последняя цифра студенческого.

Задать вектор независимых переменных. Задать необходимые параметры (если эти числа не были определены в М-файлах).

Используя арифметический оператор цикла задать шаг х и последовательно вычислить у.

Создать матрицу независимых переменных и соответствующих значений функции.

Построить график (х, у) с заданным цветом и типом линий.

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

Варианты заданий

Номер варианта соответствует порядковому номеру студента в списке студентов группы.

1.;

2.

3.

4.

5.

6.

7.

8.

9.

10.

11.

12.

13.

14.

15.

16.

17.

18.

19.

20.

21.

22.

23.

24.

25.

Основы работы в MATLAB: учебное пособие/ М.В.Бураков.- ГУАП. СПб., 2006.-68с.;

Ануфриев И. MatLab 5.3/6.х – самоучитель, «ВВХВ-Петербург»,С-Пб 2003г. 722с.;

Дьяконов В.П. Справочник по применению системы MatLab – М., 1993г.,112с.

Кривилев А.В. Основы компьютерной математики с использованием системы MATLAB. М.:Лекс-Книга, 2005.-496 с.

Некоторые справочные сведения по применению системы MatLab

Формирование векторов и матриц.

i=[1 2 3 4 5] — создает вектор-строку из пяти элементов.

i=[1;2;3;4;5] — создает вектор-строку из пяти элементов.

i=1:0.5:20 — создает вектор-строку из равноотстоящих на величину 0.5 элементов в диапазоне от 1 до 20.

i=(1:0.5:20)’ — создает вектор-строку из равноотстоящих на величину 0.5 элементов в диапазоне от 1 до 20.

Символ «» обозначает эрмитово сопряжение – сочетание транспонирования и комплексного сопряжения. Так как элементы вектора вещественные, комплексное сопряжение ничего не меняет.

Для указания транспонирования без комплексного сопряжения необходимо добавить точку – «.’».

Команда L=length(x) возвращает длину вектора х.

Точка используется и для указания поэлементных операций умножения и деления матриц.

Y=A*B — умножение матриц A и B по правилам матричной алгебры.

Y=A.*B — перемножает одноименные элементы матриц А и В.

Самый простой способ формирования матриц заключается в непосредственном вводе их элементов (по строкам) с клавиатуры – например: А= [1 2 3; 4 5 6; 7 8 9], получается матрица А размером 3*3:

Введение

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

* анализ данных, исследования и визуализация;

* научная и инженерная графика;

* разработка приложений, включая создание графического интерфейса.

Слово MATLAB означает матричная лаборатория (matrixlaboratory). MATLAB был специально написан для обеспечения легкого доступа к LINPACK и EISPACK, которые представляют собой современные программные средства для матричных вычислений.

MATLAB развивался в течении нескольких лет, ориентируясь на различных пользователей. В университетской среде, он представлял собой стандартный инструмент для работы в различных областях математики, машиностроении и науки. В промышленности, MATLAB — это инструмент для высокопродуктивных исследований, разработок и анализа данных.

В MATLAB важная роль отводится специализированным группам программ, называемых toolboxes. Они очень важны для большинства пользователей MATLAB, так как позволяют изучать и применять специализированные методы. Toolboxes — это всесторонняя коллекция функций MATLAB (М-файлов), которые позволяют решать частные классы задач. Toolboxes применяются для обработки сигналов, систем контроля, нейронных сетей, нечеткой логики, вэйвлетов, моделирования и т.д.

Табулирование функций

1.1 Постановка задачи

Данная задача широко используется в экологии, теплофизике и других дисциплинах. Обычно функции, описывающие какой-либо процесс, весьма громоздки и создание таблиц их значений требует большого объема вычислений.

Рассмотрим два случая табулирования функции:

1. С постоянным шагом изменения аргументов.

2. С произвольным набором значений аргумента.

Алгоритм реализуется путем организации какого-либо цикла.

Пример 1. Вычислить

при R = 4.28 10 -2 ; = 2.87;

хi изменяется с шагом х = 2; хп = 2; хк = 10.

Введем обозначение la = 2.87.

R = 4.28е-02; la = 2.87;

% Задается начальное значение х, шаг dx и конечное значение х

% Для вывода значения у в конце строки символ ;не ставится!

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

Результаты вычислений: ans =

Решение системы линейных алгебраических уравнений (СЛАУ)методом исключения Гаусса

2.1 Постановка задачи

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

Пусть задана система п линейных алгебраических уравнений с п неизвестными:

Система уравнений (2.1) в матричной форме представляется следующим образом:

где А — квадратная матрица коэффициентов, размером п п строк и столбцов;

Х — вектор-столбец неизвестных;

В — вектор-столбец правых частей.

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

Недостатком метода является накапливание погрешностей в процессе округления, поэтому метод Гаусса без выбора главных элементов используется обычно для решения сравнительно небольших (п 100) систем уравнений с плотно заполненной матрицей и не близким к нулю определителем. Если матрица А сильно разрежена, а ее определитель не близок к нулю, то метод Гаусса пригоден для решения больших систем уравнений. В MATLAB имеется обширный арсенал методов решения систем уравнений (2.2) методом исключения Гаусса. Для этого применяются следующие операторы

Похожие статьи