How to get simple answer using symbolic functions?

2 次查看(过去 30 天)
Hello, I am using syms for computing Lie derivative. My problem is that I have a robot model and when I take the 2nd lie derivative, the matrix appears like
state = [x1; x2 ;x3 ;x4];
fx = 4*1 sym function
hx = hx_new = [1 0 0 0;
0 0 0 0;
0 0 0 0;
0 0 0 0]*state;
Lf0_h_new = hx_new;
b1_new = jacobian(Lf0_h_new, state);
Lf1_h_new = simplify(b1_new*fx);
b2_new = jacobian(Lf1_h_new, state);
Lf2_h_new = simplify(b2_new*fx)
-(17932868243945039509054995298422620160000000000*x1 + 179328622760811041254165969937467169271875000*x2 - 9543444251212304856447901238125480501680537600*x1*cos(x3)^2 - 95434442512123048564479012381254805016805376*x2*cos(x3)^2 + 29067690344163397395312355854778368000000*x4^2*sin(x3) + 2340529702609818139925095463956512768000000*cos(x3)*sin(x3) - 24981799213169175398901578715708984375*x2*cos(x3))/(6773644423866147353395200*(1408908359226399653888*cos(x3)^2 - 2647447536626024609375))
0
0
0]
I dont know why it is appearing like this. Someone please help

采纳的回答

Walter Roberson
Walter Roberson 2017-2-4
Lf2_h_new = simplify(b2_new*fx, 'step', 20)
  2 个评论
Muhammad Zeeshan Babar
I have changed this but the answer is still the same. Lf2_h_new =
x1 + x2/100 + ((298393196769181919915233795161640625*x2)/33868222119330736766976 - (2197141822764470625*x4^2*sin(x3))/512 + cos(x3)*((37010072908398778368743079578828125*x2)/10035028776097996079104 - (5528556401604393125*sin(x3))/16))/(1408908359226399653888*cos(x3)^2 - 2647447536626024609375)
0
0
0
Walter Roberson
Walter Roberson 2017-2-5
That answer is different than the original Lf2_h_new.
It would help if you were to describe what you were expecting.

请先登录,再进行评论。

更多回答(1 个)

Steven Lord
Steven Lord 2017-2-5
Use vpa to approximate the numbers in the answer to a desired number of decimal places.

标签

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by