Unable to isolate variable from expression using 'solve'.
Mostrar comentarios más antiguos
Hello, I am trying to reproduce all steps to create a transfer function from the beginning.
As seen on the code bellow, I managed to get to the equation F(s), then I isolated Xo using solve.
syms xi(t) xo(t) t B M K s Xo Xi;
xo2 = diff(xo(t),2);
xo1 = diff(xo(t),1);
xi2 = diff(xi(t),2);
xi1 = diff(xi(t),1);
f = xo2 + (B/M)*xo1 + (K/M)*xo -((B/M)*xi1 + (K/M)*xi);
F = laplace(f,t,s);
F = subs(F,{'xo(0)','D(xo)(0)','xi(0)','laplace(xo(t),t,s)','laplace(xi(t),t,s)'},{0,0,0,Xo,Xi})==0;
FXo = solve(F,Xo)==Xo;
pretty(FXo)
Which results in:
K Xi + B Xi s
-------------- == Xo
2
M s + B s + K
In order to create a transfer function I need Xo/Xi , so I used solve again, but this time I used:
solve(FXo,Xo/Xi)
This code results in:
ans =
Xi: [0x1 sym]
s: [0x1 sym]
Then I modified the 2 last lines of the code to:
FXo = solve(F,Xo)==1
pretty(FXo)
solve(FXo,1/Xi)
But it resulted the same. I also tried to use only one solve with Xo/Xi as parameter but it didn't work. Thanks in advance!
2 comentarios
Walter Roberson
el 19 de Jun. de 2015
In your
f = xo2 + (B/M)*xo1 + (K/M)*xo -((B/M)*xi1 + (K/M)*xi);
it is better to use
f = xo2 + (B/M)*xo1 + (K/M)*xo(t) -((B/M)*xi1 + (K/M)*xi(t));
Saves problems when trying to cross-verify with other packages.
Pedro Ricardo Garcia de Oliveira
el 19 de Jun. de 2015
Respuesta aceptada
Más respuestas (0)
Categorías
Más información sobre Calculus en Centro de ayuda y File Exchange.
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!