Нахождение корней многочлена с символическими коэффициентами

В рамках задания мне нужно было вывести уравнения движения для системы подвески автомобиля. По сути, это проблема с демпфером пружинной массы. Значения массы автомобиля M1, массы колеса M2, жесткости пружины k1 и k2 и постоянной демпфирования c не приводятся. Я вывел уравнения движения и вывел передаточную функцию, связывающую поверхность дороги (входные данные) с результирующим смещением кузова (выходными данными). Я должен определить полюсы этой передаточной функции, следовательно, мне нужно найти корни характеристического уравнения (знаменатель). Проблема в том, что у меня нет значений для вышеупомянутых переменных, и я пытаюсь либо факторизовать свой полином 4-го порядка в MATLAB символически, либо сразу же вычислить корни. Я не могу принимать никаких значений, и это должно быть решено символически, однако я не знаю, возможно ли это в MATLAB.

У меня нет большого опыта работы с MATLAB, поэтому я не знаю всех его возможностей.

Характерное уравнение, которое я пытаюсь решить:

(M1*M2)*s^4 + c*(M1+M2)*s^3 + ((M1*k1)+(M1*k2)+c^2+(M2*k2)-c)*s^2 + k1*c*s + ((k1*k2)-(k2^2))

Заранее спасибо.


person SimStil    schedule 03.11.2014    source источник
comment
Возможно, я смогу вам помочь, но я думаю, что уравнение не очень хорошо описано. Сначала вам нужно хорошо записать уравнение. И тогда мы увидим, как применить.   -  person arodrisa    schedule 03.11.2014
comment
Я исправил свои ошибки в уравнении, теперь оно должно быть правильным.   -  person SimStil    schedule 03.11.2014


Ответы (2)


В вашем уравнении есть ошибки;

 c(M1+M2)*s^3 -> c*(M1+M2)*s^3
 + +k1*c*s -> + k1*c*s

Но если вы хотите решить многомерные уравнения, вы можете сделать это следующим образом;

syms M1 M2 c k1 k2 s
eqn = (your equation) == 0;
roots = solve(eqn, s);

Дополнительная информация здесь: solve

person 0xMB    schedule 03.11.2014
comment
Вы пробовали запустить этот код? Возвращенное решение особенно полезно для OP. - person horchler; 03.11.2014

Теперь вам нужно выполнить эти шаги только в том случае, если вы хотите вычислить только корни уравнения, которые аналогичны предыдущему комментарию:

1. syms c s
2. roots=solve((M1*M2)*s^4 + c*(M1+M2)*s^3 + ((M1*k1)+(M1*k2)+c^2+(M2*k2)-c)*s^2 + k1*c*s + ((k1*k2)-(k2^2)),s)
or
roots=solve((M1*M2)*s^4 + c*(M1+M2)*s^3 + ((M1*k1)+(M1*k2)+c^2+(M2*k2)-c)*s^2 + k1*c*s +((k1*k2)-(k2^2)),c)
or 
roots=solve((M1*M2)*s^4 + c*(M1+M2)*s^3 + ((M1*k1)+(M1*k2)+c^2+(M2*k2)-c)*s^2 + k1*c*s + ((k1*k2)-(k2^2)),s,c)

в зависимости от желаемого решения

person arodrisa    schedule 03.11.2014
comment
Корни характеристического уравнения выражаются в s, что соответствует ОП, поэтому ваше первое уравнение - это все, что вам нужно. Вам следует объявить другую символьную переменную. Затем, если вы запустите это, вы увидите, что оно само по себе не является полезным решением. - person horchler; 03.11.2014
comment
Если у вас есть нули и полюсы в зависимости от значения c, вы действительно можете их перемещать. Что, я думаю, ему нужно, вот почему он не ценит это. С другой стороны, есть другой способ вычислить это уравнение: G = A s + B s ^ 2 + C s ^ 3 + D с ^ 4. Тогда G = minreal (tf (G)); [R, p] = вычет (G.num {1}, G.den {1}); Поскольку у вас нет знаменателя, он должен ответить 1. - person arodrisa; 03.11.2014