Как упростить выражение в matlab

REDMOND

Основы работы в символьных переменных в системе MATLAB

Цель работы:изучить систему команд расширения MATLAB (Toolbox) для работы с символьными переменными Symbolic Math.

Теоретические данные:

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

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

1. Общие операции:

syms – создает символьные переменные упрощенным способом. Формат команды: syms vol1 vol2 …, где vol1, vol2 и т.д. – имена создаваемых символьных переменных. Для создания символьных переменных может также применяться команда sym, которая применяется в следующем формате: vol1 = sym(‘vol1’). Таким образом, в скобках, заключенное в апострофы, задается имя создаваемой переменной. Такая запись является чересчур громоздкой, поэтому рекомендуется применять упрощенную команду syms, при этом, создаваемые переменные просто перечисляются через пробел после самой команды. Ставить знак «;» после команды syms не требуется;

pretty – выдает символьное выражение в многоуровневом представлении (в привычном нам виде). Формат записи команды: pretty(vol), где vol – имя переменной, в которой хранится символьное выражение. Например, символьное выражение:
A = (2*x+y*x*2+y^2)/(2*a+3*b) в линейной форме записи, будет преобразовано командой pretty в:

2. Решение уравнений:

solve – решение алгебраических уравнений, в том числе их систем. Формат записи:

solve (‘eqn1′,’eqn2’. ‘eqnN’,’var1,var2. varN’), где eqn1, eqn2 и т.д. – уравнения, решения которых нужно найти.

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

dsolve – решение дифференциальных уравнений. Формат записи:

simplify – упрощение выражения;

expand – раскрывает все скобки в выражении;

collect – выносит общий множитель за скобки;

subs – подстановка числовых значений вместо символьных.

Формат записи для всех команд одинаков:

vol2 = command(vol1), где vol1 – преобразуемая переменная, vol2 – переменная, в которую будет записан результат преобразования, command – одна из указанных выше команд.

diff – дифференцирование выражения. Формат записи:
diff(vol1, n), где n – порядок дифференцирования;

int – интегрирование выражения. Формат записи: int(vol1,a,b), где a и b – верхний и нижний пределы интегрирования, в случае нахождения определенного интеграла;

limit – нахождение предела выражения. Формат записи:
limit(vol1,x,a,’ident’), где x – имя переменной которая стремится к пределу, a – численное значение, к которому стремится переменная x, ident – может принимать значения left и right, т.е. это указание, в какую сторону стремится величина x – направление для односторонних пределов.

Практическое применение:

Пример №1: Необходимо задать выражение A = (x*2+y^3-3*z)*3*x+4*y^3, упростить его и определить значение A в точке (1,2,1).

Выполняется следующим образом:

% после выполнения этой команды в рабочей области (workspace появятся три символьные переменные x, y и z

% результат выполнения команды:

% показывает как выражение было занесено в переменную А. В отдельных случаях, когда возможно упростить вводимое выражение, оно будет упрощено и выдано на экран уже в упрощенном виде. Как видно из результата применения команды, все составляющие в скобке были помножены на 3.

% для дополнительного контроля можно применить команду

% результат ее применения:

% (6 x + 3 y — 9 z) x + 4 y

% раскрываем скобки, запоминаем результат в переменной А1

% результат: A1 = 6*x^2+3*x*y^3-9*x*z+4*y^3

% группируем переменные в выражении А1 и выносим общие множители за скобки. Результат: A2 = 6*x^2+(3*y^3-9*z)*x+4*y^3

REDMOND

% задаем значения переменных x, y и z соответственно заданной точке (1,2,1). при этом в рабочей области появятся уже числовые переменные с соответствующими значениями.

% подставляем численные значения в наше выражение, получаем результат:

% Возможно присваивание численных значений только части символьных переменных выражения. Для иллюстрации этого вернем переменные x, y и z в символьный вид:

% результат в этом случае: A3 = 62-9*z

Пример №2: Необходимо решить независимые уравнения
x+20=10, 3*x^2+2*x-10=0 и 4*x+5*x^3=-12.

Выполняется следующим образом:

1 уравнение:

2 уравнение:

% MATLAB выдал два корня уравнения в неупрощенном виде, для их упрощения необходимо повторить ответ в командном окне (скопировать его и заново ввести в командное окно)

3 уравнение:

Пример №3: Необходимо решить независимые уравнения
x+y=35, 3*x^2+2*y=0 и 4*x+5*y^3=-12 относительно переменной x.

Выполняется следующим образом:

1 уравнение:

2 уравнение:

3 уравнение:

Пример №4: Необходимо найти неопределенный интеграл и дифференциал выражения 3*a^5*sin(a).

Выполняется следующим образом:

Пример №5: Необходимо найти определенный интеграл выражения 3*a^5*sin(a), для пределов от -10 до 100.

Выполняется следующим образом:

Пример №6: Необходимо продифференцировать выражение 3*a^5*sin(a) четыре раза.

Выполняется следующим образом:

Пример №7: Необходимо получить передаточную функцию трех последовательно соединенных звеньев: , и . А также определить передаточную функцию замкнутой системы, состоящей из звеньев W1, W2 и W3 – в прямой ветви, и звена – в обратной связи, при условии отрицательной обратной связи.

Как упростить выражение

Упростить символьное выражение
Есть выражение: Wv = (41640000*s^3 + 69400000*s^2 + 31230000*s + 3470000)/(10920000000*s^5 +.

Упростить символьное выражение
Здравствуйте. После применения команды eval к символьному выражению, получаю запись вида — p^3 -.

Посоветуйте программу, где можно было бы посчитать дроби, упростить выражение
Привет! Может кто-нибудь подскажет программу, вот чтобы можно было бы ввести начальное задание.

Как упростить выражение
Как упростить выражение C/(1+i) + C/(1+i)^2 + . + C/(1+i)^n

matlab: упрощение выражений

Подскажите пожалуйста, почему Matlab упорно не хочет упросить выражение:

т.е. вообще не упростилось, хотя должен был бы две экспоненты объединить в одну и логарифм экспоненты схлопнуть

в чем может быть проблема?

Проблема в том, что логарифм от экспоненты не равен, вообще говоря, исходному числу, если оно комплексное. Например, log(exp(2*pi*i+1))=1 . Поэтому MATLAB не упрощает такие выражения. Если какая-то переменная, например x , в выражении всегда вещественная, то надо сообщить об этом матлабу с помощью вызова assume(x,’real’) . Тогда он сможет упростить всё так, как нужно:

(У меня 2015b и str2sym у меня нет, поэтому я немного изменил код)

Всё ещё ищете ответ? Посмотрите другие вопросы с метками математика matlab expressions formula или задайте свой вопрос.

дизайн сайта / логотип © 2021 Stack Exchange Inc; материалы пользователей предоставляются на условиях лицензии cc by-sa. rev 2021.11.24.40828

Нажимая «Принять все файлы cookie» вы соглашаетесь, что Stack Exchange может хранить файлы cookie на вашем устройстве и раскрывать информацию в соответствии с нашей Политикой в отношении файлов cookie.

REDMOND

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *