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.

类别

Help CenterFile Exchange 中查找有关 Number Theory 的更多信息

标签

Community Treasure Hunt

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

Start Hunting!

Translated by