Jacobian function and derivative that is a fraction
2 visualizaciones (últimos 30 días)
Mostrar comentarios más antiguos
Rick
el 26 de Sept. de 2015
Comentada: Walter Roberson
el 27 de Sept. de 2015
Hello,
I'm trying to use the Jacobian function to find the matrices to linearize my two equations
However, when I try and take the partial derivative with respect to (F/V) for matrix B, then I get an error.
syms CA CB F V CAi k1 k2 k3
f1 = (F/V)*(CAi-CA)-k1*CA-k3*CA^2;
f2 = -(F/V)*CB + k1*CA - k2*CB;
A = jacobian([f1; f2], [CA CB]);
B = jacobian([f1; f2], [F/V CAi])
Error using mupadmex
Error in MuPAD command: The variable is invalid. [stdlib::diff]
Error in sym/jacobian (line 34)
Jsym = mupadmex('symobj::jacobian',F.s,x.s);
I'm wondering what I can do to fix this. Thanks
0 comentarios
Respuesta aceptada
Matt J
el 26 de Sept. de 2015
Editada: Matt J
el 26 de Sept. de 2015
Although the documentation doesn't say so, I would guess that the Jacobian cannot be taken with respect to a symbolic expression like F/V. It has to be with respect to a named variable. So, replace F/V with its own variable like below,
syms CA CB Fv CAi k1 k2 k3
f1 = (Fv)*(CAi-CA)-k1*CA-k3*CA^2;
f2 = -(Fv)*CB + k1*CA - k2*CB;
A = jacobian([f1; f2], [CA CB]);
B = jacobian([f1; f2], [Fv CAi])
2 comentarios
Walter Roberson
el 27 de Sept. de 2015
Although that works in this case, in general you need to do the change of variables after you construct the expression. For example,
diff(sin(x)^2 + (1-y^2), sin(x))
would seem to have the obvious change
diff(sinx^2 + 5*(1-y^2), sinx)
but if y happens to be cos(x) then your original expression is
diff(sin(x)^2 + 5*(1-cos(x)^2), sin(x))
or
diff(sin(x)^2 + 5*sin(x)^2, sin(x))
or
diff(6*sin(x)^2, sin(x))
and then it is safe to do the change of variables.
Therefore if you have diff(f(x), v(x)) for some functions f(x) and v(x), you need to use something like
diff(subs(f(x), x, solve(Vx = v(x),x)), Vx)
Más respuestas (0)
Ver también
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!