Sims requires symbolic math toolbox ошибка

Русские Блоги

Как добавить Toolbox в Matlab (подробное объяснение со скриншотами) (R2019b)

Каталог статей

1. Подготовьте набор инструментов.

Давайте рассмотрим добавление набора инструментов fecgsyn-master в качестве примера, чтобы объяснить метод добавления набора инструментов в Matlab.

Сайт загрузки наборов инструментов Matlab: http://fernandoandreotti.github.io/fecgsyn/

2. Разархивируйте и скопируйте в папку

Разархивируйте загруженный файл и скопируйте папку в каталог Toolbox Matlab, например: D: Program Files MATLAB R2019b toolbox.

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

3. Задайте путь

Откройте Matlab, нажмите «Файл-> Установить путь-> Добавить папку» (в китайской версии путь настройки указан прямо на панели, или вы можете найти его в справке) и добавьте папку, только что разархивированную и скопированную. Помните, что если в папке, которую вы хотите добавить, есть подпапки, вы должны нажать «Добавить с подпапками», выбрать папку только сейчас и добавить все подпапки папки.

4. Обновите кеш пути к панели инструментов.

Затем в «Файл-> Настройки-> Общие» обновите кэш пути к панели инструментов.

How to use the Symbolic Math Toolbox in MATLAB to analyze the Fourier series

Symbolic Math Toolbox provides an easy, intuitive and complete environment to interactively learn and apply math operations such as calculus, algebra, and differential equations.

It can perform common analytical computations such as differentiation and integration to get close form results.

It simplifies and manipulates expression for great insights and solves algebraic and differential equations.

In this tutorial, the Fourier series (Trigonometric and Exponential) is implemented and simulated using MATLAB’s Symbolic Math Toolbox.

The proposed programs are versatile and can receive any function of time(t). It means that the function is dependent on time.

Moreover, the program gives plots of harmonics, original and approximated functions, magnitude spectrum, and phase spectrum.

This toolbox is already available in MATLAB. Therefore, you do not need to retrieve it from an external source. For example, to understand more about the Fourier series, you can read here.

Prerequisites

To follow along with this tutorial, you will need:

    installed.

  1. A proper understanding of MATLAB basics.

Symbolic Math Toolbox

This toolbox has a wide range of applications:

To visualize analytical expressions in 2D and 3D and animate plots to create videos.

Symbolic Math Toolbox in the live editor (mode in MATLAB) lets you interactively update and display Symbolic math computations.

Besides, MATLAB code, formatted text, equations, and images can be published as executable live scripts, PDFs, or HTML documents.

While working with analytical problems, you can receive suggestions and tips. These suggestions help one insert and execute function calls or tasks directly into live scripts.

The Symbolic Math Toolbox also provides precision for higher or lower positions. It allows algorithms to run better than MATLAB’s in-built double. Furthermore, it has units for working with physical quantities and performing dimensional analysis.

Units for working with physical quantities

This is an example of how this toolbox adds units for physical quantities

Symbolic Math Toolbox is widely applied in many engineering and scientific applications. Symbolic expressions of exact gradient and Hessians improve accuracy and optimization speed.

In non-linear control design, the Symbolic Math Toolbox improves recalculation speed at any operating point during execution. Furthermore, you can integrate symbolic results with MATLAB and Simulink applications. It is done by converting symbolic expressions into numeric MATLAB functions, Simulink, and Simscape blocks.

converting functions to Simulink

Sample of function converted to Simulink

Now, all these applications discussed above were to give you an insight into the wide application of this toolbox. However, not all of them are discussed here. Here, we will only major in using the toolbox to solve Fourier series problems.

How to use the Symbolic Math Toolbox

This toolbox is enabled in MATLAB using the function syms . However, you get an error message if you have the expression x=2*a+b and try to execute it in Matlab. The error message is undefined function or variable ‘a’ as shown below:

When using the syms function, the variable x is saved without the error message. When using the Symbolic Math Toolbox, the idea here is that you first define the symbolic variables. Symbolic variables are the undefined variables in an equation. For example, our symbols are a and b for our expression above. We first define these variables using the symbolic function syms .

After defining the symbols and rerunning the code above, our workspace stored our variables. We will then have:

Solving Fourier series using the Symbolic Math Toolbox

Let’s say we have a Fourier transform shown below:

The symbolic variables are t , w , T , and W , which we define by executing the command below:

w is the angle theta, T is the time function, and W is used to express the angular radians in the Fourier transform.

After the declaration of the symbolic variables, you can write the Fourier transform as shown below:

In MATLAB, int means integration. In the MATLAB expression above: exp(-t/2) is our equation which we are finding its Fourier transform. exp(-j*w*t) is the basic function of the Fourier transform. t shows that we are differentiating with respect to time. [0, inf] shows the integration limits from 0 to infinity .

Note that we don’t write f(t) when writing our equation in MATLAB. It is because we already know that our function is a time function. Also, t is a symbol variable, so we do not write it in our expression.

When the above program is executed, we get the output below:

To format this output in a user-friendly manner, we use the function pretty() . pretty(f) prints the symbolic expression f in a format that resembles type-set mathematical equations. When you execute this function in the command window, we have:

Now, we need to get the values of w since we use them to plot the Fourier transform. To do that, execute the code below:

subs mean symbolic substitution. This function replaces the symbolic variable in f with the values of w . The values range from -pi to pi . When we do this, we get the values below:

We now plot these values using the plot() function.

plot(angle(double(data_value))) gives the phase spectrum plot. The function subplot() is used to create a subplot. title() gives the plot a title.

phase spectrum

Phase spectrum plot

Now, let us plot the magnitude response using the same values of w .

The code plot(abs(double(data_values))) gives the magnitude spectrum. This plot uses the absolute values of the data, thus abs() .

magnitude spectrum

Magnitude spectrum plot

Example 2

Let’s look at another example:

example 2

The output here is:

To find the values of w , we use the subs() function.

After that, we plot the absolute values of the variable f-sub .

Range of -pi to pi

Plot for the range -pi to pi

Range of -2pi to 2pi

Plot for the range -2pi to 2pi

Range of -4pi to 4pi

Plot for the range -4pi to 4pi

Range of -8pi to 8pi

Plot for the range -8pi to 8pi

While making the plots, we used the ezplot function. ezplot(FUN) is used to plot a function x over the default domain, -2*pi<x<2*pi . As we have seen, the Symbolic Math Toolbox makes it easy to analyze the Fourier series. Moreover, it makes it easy since you do not have to write long codes.

Conclusion

Symbolic Math Toolbox is an important toolbox for solving differential and integration operations. As we have seen in solving the Fourier series above, it is easy to use. This toolbox also helps find the Laplace transform of various equations. Generally, this toolbox has a wide application in science and engineering.

Цель работы:изучить систему команд расширения 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

% задаем значения переменных 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 – в прямой ветви, и звена – в обратной связи, при условии отрицательной обратной связи.

0 / 0 / 0

Регистрация: 16.12.2013

Сообщений: 48

1

11.05.2015, 19:01. Показов 14837. Ответов 11


Студворк — интернет-сервис помощи студентам

В 2008b матлабе при использовании syms пишет: ??? Undefined function or variable ‘syms’.
Что можно сделать? может быть подгрузить какие-то модули?



0



Northfolk

0 / 0 / 0

Регистрация: 11.05.2015

Сообщений: 3

11.05.2015, 19:08

2

Пробовали записать так?

Matlab M
1
x = sym('x');



0



0 / 0 / 0

Регистрация: 16.12.2013

Сообщений: 48

11.05.2015, 19:10

 [ТС]

3

Все равно ругается



0



Northfolk

0 / 0 / 0

Регистрация: 11.05.2015

Сообщений: 3

11.05.2015, 19:20

4

К сожалению, я новичок в работе с Matlab’ом и многим не помогу, но попробуйте прописать

Matlab M
1
ver

И посмотреть установлен ли у вас Symbolic Math Toolbox.



0



0 / 0 / 0

Регистрация: 16.12.2013

Сообщений: 48

11.05.2015, 21:59

 [ТС]

5

Не установлено, к сожалению. Вы не знаете, откуда можно это скачать? В гугле пока не нашел



0



Krasme

6687 / 4779 / 1998

Регистрация: 02.02.2014

Сообщений: 12,798

11.05.2015, 22:22

6

ничего не подключала специально…
такое работает

Matlab M
1
2
3
syms a b
f=(a+b)/(a*b);
disp(f);

Добавлено через 26 секунд
plif, вы бы свой текст показали..



0



0 / 0 / 0

Регистрация: 16.12.2013

Сообщений: 48

11.05.2015, 22:27

 [ТС]

7

syms a b не работает, как только появляется это слово, начинает ругаться.
А откуда вы скачивали матлаб?, может у меня неполная версия



0



6687 / 4779 / 1998

Регистрация: 02.02.2014

Сообщений: 12,798

11.05.2015, 22:32

8

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



0



0 / 0 / 0

Регистрация: 16.12.2013

Сообщений: 48

11.05.2015, 22:34

 [ТС]

9

а я файл не создавал… Просто пишу команды в Command Window



0



6687 / 4779 / 1998

Регистрация: 02.02.2014

Сообщений: 12,798

11.05.2015, 22:42

10

Лучший ответ Сообщение было отмечено plif как решение

Решение

тут обсуждается ваша проблема…



1



0 / 0 / 0

Регистрация: 16.12.2013

Сообщений: 48

12.05.2015, 00:35

 [ТС]

11

спасибо получилось!, когда я переустановил 32-битный, заработало!
Еще поставил 2013b матлаб, там тоже все работает



0



Krasme

12.05.2015, 06:23


    Syms не работает — Undefined function or variable ‘syms’

Не по теме:

теперь, как заяц, между двумя версиями прыг-скок? :D



0



OPEX

Пользователь
Сообщения: 150
Зарегистрирован: Вт сен 20, 2011 3:08 pm

не работает встроенная функция!!!

доброго времени суток. возникла проблема. есть встроенное слово syms, но у меня оно не работает. выдает такую ошибку:

??? Undefined function or variable ‘syms’.

пробовал переустановить MATLAB, но это не помогло.

помогите исправить.


Grizzly

Пользователь
Сообщения: 843
Зарегистрирован: Сб май 28, 2011 2:00 am

Сообщение Grizzly » Сб окт 08, 2011 6:47 pm

Symbolic Math Toolbox установлен?


OPEX

Пользователь
Сообщения: 150
Зарегистрирован: Вт сен 20, 2011 3:08 pm

Сообщение OPEX » Сб окт 08, 2011 6:51 pm

да, установлен. система Win 7 x64. может в этом проблема?


Grizzly

Пользователь
Сообщения: 843
Зарегистрирован: Сб май 28, 2011 2:00 am

Сообщение Grizzly » Сб окт 08, 2011 6:53 pm

У меня тоже Windows 7 x64, syms работает.


Grizzly

Пользователь
Сообщения: 843
Зарегистрирован: Сб май 28, 2011 2:00 am

Сообщение Grizzly » Сб окт 08, 2011 6:57 pm

Остальные-то функции Symbolic Math Toolbox работают?


OPEX

Пользователь
Сообщения: 150
Зарегистрирован: Вт сен 20, 2011 3:08 pm

Сообщение OPEX » Сб окт 08, 2011 6:57 pm

а Symbolic Math Toolbox Вы отдельно устанавливали? просто с одного и того же установочника устанавливали на два компьютера с х32 и х64, где х32 работает, а у меня нет! может Symbolic Math Toolbox отдельно надо установить?


OPEX

Пользователь
Сообщения: 150
Зарегистрирован: Вт сен 20, 2011 3:08 pm

Сообщение OPEX » Сб окт 08, 2011 6:58 pm

другие не пробовал!


Grizzly

Пользователь
Сообщения: 843
Зарегистрирован: Сб май 28, 2011 2:00 am

Сообщение Grizzly » Сб окт 08, 2011 6:58 pm

Наберите в командной строке

Вы увидете все установленные тулбоксы.


Grizzly

Пользователь
Сообщения: 843
Зарегистрирован: Сб май 28, 2011 2:00 am

Сообщение Grizzly » Сб окт 08, 2011 7:01 pm

Я устанавливал сразу все тулбоксы. Вероятно, вы установили выборочно некоторые из них. Попробуйте с этого же установочника поставить Symbolic Math Toolbox.


OPEX

Пользователь
Сообщения: 150
Зарегистрирован: Вт сен 20, 2011 3:08 pm

Сообщение OPEX » Сб окт 08, 2011 7:17 pm

решил проблему путем установки MATLABA для х32 системы. вроде сейчас все работает. попробовал «ver» как Вы сказали Symbolic Math Toolbox присутствует. большое спасибо за помощь.


I am using Matlab to try and solve a system of three first-order ODEs, but the error message I get is ‘syms’ requires Symbolic Math Toolbox.
Error in spiders (line 1)
syms f(t) s(t) v(t) r W c h q a k b H K e

On a previous occasion, I received an error saying that this system of ODEs cannot be solved explicitly (i.e. in closed form). I think that numerical integration is the only way. The r,W,c,h, etc are parameters. Could someone please tell me how I can simulate/solve and plot the ODEs below?

syms f(t) s(t) v(t) r W c h q a k b H K e
r = 1;
W = 0.5;
c = 0.4;
h = 0.9;
q = 9;
a = 5;
k = 0.8;
b = 6;
H = 3;
K = 1.3;
e = 2;
ode1 = diff(f) == r*f*(1 - f/W) - c*s*f - h*(1 - q)*f;
ode2 = diff(s) == s*(-a + k*b*v/(H + v) + k*c*f) - h*K*q*s;
ode3 = diff(v) == v*(e - b*s/(H + v)) - h*q*v;
odes=[ode1;ode2;ode3]
S = dsolve(odes)
plot(S);

asked Feb 2, 2020 at 5:17

John Rambo's user avatar

Looks like you where previously using a different MATLAB license, which included the Symbolic Math Toolbox. I assume you no longer have it available and you are now looking for numeric alternatives.

You have to define functions for the equations you are trying to solve. Then you can call one of the ode solvers. An example from the documentation:

y0 = [1; 0; 0];
tspan = [0 4*logspace(-6,6)];
M = [1 0 0; 0 1 0; 0 0 0];
options = odeset('Mass',M,'RelTol',1e-4,'AbsTol',[1e-6 1e-10 1e-6]);
[t,y] = ode15s(@robertsdae,tspan,y0,options);

Where robertsdae is the equation to solve. The full example including further explanations is available here.

answered Feb 2, 2020 at 9:32

Daniel's user avatar

DanielDaniel

36.6k3 gold badges36 silver badges69 bronze badges

John

I have the symbolic math toolbox, but ‘syms’ isn’t working. How can I fix this?

VER info below:

«—————————————————————————————————-

MATLAB Version: 9.0.0.341360 (R2016a)

MATLAB License Number: xxxxxx

Operating System: Microsoft Windows 7 Professional Version 6.1 (Build 7601: Service Pack 1)

Java Version: Java 1.7.0_60-b19 with Oracle Corporation Java HotSpot™ 64-Bit Server VM mixed mode

—————————————————————————————————-

MATLAB Version 9.0 (R2016a)

Simulink Version 8.7 (R2016a)

Computer Vision System Toolbox Version 7.1 (R2016a)

Control System Toolbox Version 10.0 (R2016a)

Curve Fitting Toolbox Version 3.5.3 (R2016a)

Data Acquisition Toolbox Version 3.9 (R2016a)

Image Processing Toolbox Version 9.4 (R2016a)

MATLAB Coder Version 3.1 (R2016a)

Optimization Toolbox Version 7.4 (R2016a)

Signal Processing Toolbox Version 7.2 (R2016a)

Simulink Coder Version 8.10 (R2016a)

Simulink Control Design Version 4.3 (R2016a)

Simulink Design Optimization Version 3.0 (R2016a)

Simulink Desktop Real-Time Version 5.2 (R2016a)

Stateflow Version 8.7 (R2016a)

Statistics and Machine Learning Toolbox Version 10.2 (R2016a)

Symbolic Math Toolbox Version 7.0 (R2016a)

System Identification Toolbox Version 9.4 (R2016a)

*************************************

license(‘test’,’symbolic_toolbox’)

ans =


回答(2 个)

Om Yadav

One line solution: MATLAB —> HOME —> Set Path —> Default —> Save.


Hootan Manoochehri

I have the exact same problem, the symbolic math toolbox is installed, but whenever I use syms or sym() to define symbol, it doesn’t terminate it consumes all of my memory and then I can’t use my pc, and I should restart it or kill MATLAB before it gets all the memory.

CPU usage increase around 30% not that much, it seems it goes to a recursive function without termination !!!

>> ver

——————————————————————————————————

MATLAB Version: 9.4.0.813654 (R2018a)

MATLAB License Number: XXXXXXXX

Operating System: Microsoft Windows 10 Education Version 10.0 (Build 17134)

Java Version: Java 1.8.0_144-b01 with Oracle Corporation Java HotSpot(TM) 64-Bit Server VM mixed mode

——————————————————————————————————

MATLAB Version 9.4 (R2018a)

Simulink Version 9.1 (R2018a)

Control System Toolbox Version 10.4 (R2018a)

DSP System Toolbox Version 9.6 (R2018a)

Data Acquisition Toolbox Version 3.13 (R2018a)

Embedded Coder Version 7.0 (R2018a)

Fixed-Point Designer Version 6.1 (R2018a)

Fuzzy Logic Toolbox Version 2.3.1 (R2018a)

GPU Coder Version 1.1 (R2018a)

Image Processing Toolbox Version 10.2 (R2018a)

Instrument Control Toolbox Version 3.13 (R2018a)

MATLAB Coder Version 4.0 (R2018a)

MATLAB Compiler Version 6.6 (R2018a)

MATLAB Compiler SDK Version 6.5 (R2018a)

Neural Network Toolbox Version 11.1 (R2018a)

OPC Toolbox Version 4.0.5 (R2018a)

Optimization Toolbox Version 8.1 (R2018a)

Parallel Computing Toolbox Version 6.12 (R2018a)

Signal Processing Toolbox Version 8.0 (R2018a)

Simulink Control Design Version 5.1 (R2018a)

Statistics and Machine Learning Toolbox Version 11.3 (R2018a)

Symbolic Math Toolbox Version 8.1 (R2018a)

Понравилась статья? Поделить с друзьями:
  • Sims 4 ошибка сценария при установке дверей
  • Sims 3 launcher при запуске произошла ошибка
  • Sinamics v90 ошибка 7995
  • Sims medieval ошибка failed to initialize
  • Sinamics v70 ошибки