Подставьте значения в символьную функцию Matlab

У меня есть следующее:

syms As(s) F0 alpha beta m1 m3
As(s) = ((F0*(alpha-beta)/(2*(s^2+(alpha-beta)^2)))-(F0*(alpha+beta)/(2*(s^2+(alpha+beta)^2))))/(m1+m3);
m1 = 1; % [kg]
m3 = 1; % [kg]
famp = 0.5; % [N]
scale = 0.01;
F0 = famp*scale; % [N]
alpha = 0.2;
beta = 0.15;
subs(As,{m1,m3,F0,alpha,beta},{m1,m3,F0,alpha,beta});

После замены скалярных значений в As(s), As(s) по-прежнему остается следующим:

Почему MATLAB не заменяет указанные мной значения в As(s)?

Когда вы делаете syms m1, вы создаете переменную m1, которая представляет символическую переменную. Когда вы затем делаете m1 = 1, вы перезаписываете эту переменную, теперь m1 — это числовой массив 1, он больше не является символьной переменной. Теперь subs(…, m1, … m1, …) заменяет 1 на 1. Потому что у вас больше нет ссылки на символьную переменную m1 в выражении. [Это просто для того, чтобы объяснить, почему ответ ниже работает: они не перезаписывают символическую переменную, а создают новую, другую переменную m1_val = 1.]

Cris Luengo 29.05.2024 21:09

Оххх ок. Я думал, что все будет в порядке, просто перезаписав представление sym двойным значением. Я понимаю. Надо заменять, а не заменять. @CrisLuengo

Jonathan Frutschy 29.05.2024 23:18
Что такое компоненты React? Введение в компоненты | Типы компонентов
Что такое компоненты React? Введение в компоненты | Типы компонентов
Компонент - это независимый, многократно используемый фрагмент кода, который делит пользовательский интерфейс на более мелкие части. Например, если мы...
0
2
76
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Определите свою символическую переменную, используя syms.

Функция syms в MATLAB используется для создания символьных переменных. Эти переменные используются для символьных математических операций.

syms s m c k m1 m3 F0 alpha beta

As = ((F0*(alpha-beta)/(2*(s^2+(alpha-beta)^2)))-(F0*(alpha+beta)/(2*(s^2+ 
(alpha+beta)^2))))/(m1+m3);

m_val = 1; % [kg]
c_val = 2; % [kg/s]
k_val = 2; % [N/m]
m1_val = 1; % [kg]
m3_val = 1; % [kg]
famp = 0.5; % [N]
scale = 0.01;
F0_val = famp * scale; % [N]
alpha_val = 0.2;
beta_val = 0.15;

As_subs = subs(As, {m, c, k, m1, m3, F0, alpha, beta}, {m_val, c_val, 
k_val, m1_val, m3_val, F0_val, alpha_val, beta_val});

As_simplified = simplify(As_subs);
disp(As_simplified);

Я понимаю. Надо заменять, а не заменять. @Ринкал Пармар.

Jonathan Frutschy 29.05.2024 23:19

Другие вопросы по теме