Как сделать экспоненту в матлабе

Добавил пользователь Владимир З.
Обновлено: 05.10.2024

Создание символьного выражения в Matlab

Иногда символьные выражения крайне необходимы, именно поэтому важно уметь их объявлять в Matlab. Обычно используют два способа. Первый — использование оператора syms.

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

Второй способ — использование команды sym.

При ее использовании, можно сразу задать функцию, полином или выражение:

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

Преобразования символьных выражений в Matlab

Возможны несколько типов преобразований:

Для примера зададим символьное выражение и попробуем раскрыть скобки:

Данная функция помогает упростить символьное выражение в Matlab. Возьмем для примера такое выражение.

Данная функция помогает преобразовать символьное выражение, например, в полином в Matlab. Иногда, это бывает очень важно и необходимо.

Вычисление значения символьных выражений в Matlab

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

Для этого можно воспользоваться несколькими функциями. Сначала нужно заменить все переменные на число с помощью оператора subs. Затем перевести полученное выражение в числовое с помощью оператора double. Разберем пример:

Стоит отметить, что после выполнения оператора subs, выражение все еще остается символьным. Поэтому далее выполняется оператор double.

Если же у функции несколько переменных, то придется использовать subs несколько раз.

Символьное дифференцирование в Matlab

На нашем сайте уже были статьи по численному дифференцированию в среде Matlab, но любой численный метод может давать погрешности. А вычисление в символьном виде может быть очень полезным и точным.

Итак, символьное дифференцирование осуществляется оператором diff. При вызове функции следует указать переменную, по которой будет производиться дифференцирование.

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

Теперь посмотрим на функцию от нескольких переменных:

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

Символьное интегрирование в Matlab

Наряду с дифференцированием, в Matlab можно выполнять символьное интегрирование. Иногда это бывает удобнее, чем численное интегрирование. Символьное интегрирование в Matlab выполняется оператором int.

Оператор выполняется практически также, как и оператор дифференцирования.

Также, возможен расчет определенного интеграла:

Другие функции

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

  • ezplot(f) — построение графика функции
  • solve(f) — решение символьных уравнений и систем
  • taylor(f) — разложение символьной функции в ряд тейлора
  • limit(f) — вычисление предела

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

Заключение

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

Все примеры очень просты и в исходниках не нуждаются. На этом все, встретимся в следующей статье.

Основным является сессионный cookie, обычно называемый MoodleSession. Вы должны разрешить использование этого файла cookie в своем браузере, чтобы обеспечить непрерывность и оставаться в системе при просмотре сайта. Когда вы выходите из системы или закрываете браузер, этот файл cookie уничтожается (в вашем браузере и на сервере).

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

2 -е занятие по MATLAB

ЛАБОРАТОРНАЯ РАБОТА №2

Создание М-файлов в виде М-функций.

Элементы программирования в MATLAB .

1. По определению файлы, которые содержат в себе языковые коды системы MATLAB , называются М-файлами. М-файлы могут быть функциональными (М-функциями), если они содержат аргументы (входные переменные) и создают выходные данные. М-файлы обеспечивают расширяемость среды MATLAB , позволяют добавлять новые функции (встроенные функции) к уже существующим функциям MATLAB . М - файлы типа М-функций представляют собой как и М-сценарии обычные текстовые файлы, которые создаются с помощью редактора файлов. Написание М-функции начинается с кючевого слов function .

1. Формат заголовка М - функции:

function [список выходных переменных] = ( ); % список выходных переменных может быть условным, т.е просто символ.

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

Пример 1 на создание М-функции. Создать М-файл для вычисления следующего выражения: , где — числа или матрицы одинаковой размерности.

В текстовом редакторе MATLAB создаем следующий М-файл в виде М-функции:

% Применение точки означает массивное озведение в квадрат.

% Созданную М-функцию сохраним под именем , которому редактор MATLAB добавит расширение " .m " .

% Обращение к функции fun 1 может быть выполнено или в командном окне или в М-сценарии.

Для примера 1 сначала в командном окне выполним следующие действия:

Ø fun 1(3,4) % в качестве аргументов выбраны значения a =3, b =4

5 % результат выполнения М-функции fun 1 с входными аргументами 3 и 4

Ø % другой способ использования созданной функции fun 1:

Ø % с присвоением результата, например, через z 1

Ø z1=fun1(a,b)

Пример 2. Вычисление факториалов: , где — количество сомножителей.

Создадим следующую М-функцию под именем fact 1. m :

% Вычисление n -факториал:

function f 1= fact 1( n )

f 1= prod (1: n );

% максимальное число n =170

% функция prod в свою очередь является встроенной функцией MATLAB .

Для примера вычислим :

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

function s 1= sum 1( n , k ) % n — количество членов ряда, k —любое число, большее или % меньшее нуля, n , k — входные аргументы

Для проверки примера 3 в командном окне следует набрать sum 1 с конкретными n и k , например, n =5, k =1.333 и для отрицательной суммы n =5, k =-6.78.

Пример 4. Закодируем функцию в виде М-функции, где — действительное число.

Создадим следующую М-функцию под именем graf1.m:

function y = zet1(t,k)

% t — входной аргумент , который должен быть определен как вектор чисел

% Созданную М - функцию следует сохранить под именем zet1 .

% Для проверки примера 3 в командном окне MATLAB набрать:

Ø k=3; % число k можно задавать произвольно

Ø z1=graf1(t,k);

Ø polar(t,z1,'r*'),grid

Ø % Должен получиться график в полярной системе координат.

z1 будет означать y1 = 3 + 3(1+sint) . Если клавишей Enter запустить на выполнение, то будут выводиться все значения функции z1. Если же в конце строки стояла точка с запятой, то результат выводится не будет.

Построить график z1 в декартовой системе координат. Для этого в командной строке набрать plot(t,z1),grid . Откроется окно с графиком синусоиды по оси ординат от +3 до + 9 и по оси абсцисс от 0 до 10.

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

Пример 5. Контроль количества входных аргументов.

function y=test1(a,b)

if (nargin==1) % nargin — ключевое слово для проверки количества входных аргументов

elseif (nargin==2) % Двойное равенство"= MsoNormal"> % отношения

% Операторы условия if, elseif (ранее встречалось else) имеют следующие форматы записи:

Кто-нибудь знает, как сделать так, чтобы следующий код Matlab более точно аппроксимировал экспоненциальную функцию при работе с большими и отрицательными действительными числами?

Например, когда x = 1, код работает хорошо, когда x = -100, он возвращает ответ 8.7364e+31, когда он должен быть ближе к 3.7201e-44.

Код выглядит следующим образом:

Любая помощь приветствуется, ура.

Итак, вопрос в следующем:

Какую математическую функцию аппроксимирует этот код? (Я говорю экспоненциальная функция.) Работает ли она, когда x = 1? (Да.) К сожалению, использование этого, когда x = -100 дает ответ s = 8.7364e+31. Ваш коллега считает, что в программе есть глупая ошибка, и просит вашей помощи. Тщательно объясните поведение и дайте простое исправление, которое даст лучший результат. [Вы должны предложить модификацию вышеприведенного кода или его использование. Вы также должны проверить свои простые исправления.]

Поэтому я в некоторой степени понимаю, что проблема связана с большими числами, когда между терминами 16 (или более) порядков, точность теряется, но решение ускользает от меня.

Итак, в конце концов я пошел с этим:

Не уверен, что это полностью правильно, но возвращает хорошие приближения.

exp (-100) = 3,720075976020836e-044
s = 3,722053303838800e-044

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

Читайте также: