Help on simplifying trigonometric equations

6 visualizaciones (últimos 30 días)
Adithya Vimukthi
Adithya Vimukthi el 31 de En. de 2023
Comentada: Walter Roberson el 31 de En. de 2023
After certain operations, i end up with 2 equations,
k1*sin(c1)+k2*sin(c2-c1) = l1*cos(x1) - l2*cos(x1+x2)
k2*cos(c2-c1)-k1*cos(c1) = l1*sin(x1) - l2*sin(x1+x2)
I need to get eqations for x1 and x2 , is there a way to get this simplified using MATLAB?

Respuesta aceptada

Walter Roberson
Walter Roberson el 31 de En. de 2023
syms c1 c2 k1 k2 l1 l2 x1 x2
eqns = [k1*sin(c1)+k2*sin(c2-c1) == l1*cos(x1) - l2*cos(x1+x2)
k2*cos(c2-c1)-k1*cos(c1) == l1*sin(x1) - l2*sin(x1+x2)]
sol = solve(eqns, [x1 x2])
This may take some time when it is first done -- about 90 seconds.
The result sol.x1 is two atan() expressions that differ in sign at a single location about 1600 characters into the 4000-ish character expression.
The result sol.x2 is two atan() expression that differ in leading sign (that is, one is the negative of the other)
In the form of solve() above you will get a warning
Warning: Solutions are only valid under certain conditions. To include parameters and conditions in the solution, specify the 'ReturnConditions' value as 'true'
In practice, if you ask for return conditions, it will think for a fair while... and then tell you that it was not able to come up with any solutions at all.
That should be taken as a hint to verify the results numerically a couple of times before relying on the solution; it might be the case that these are false roots.
  2 comentarios
Adithya Vimukthi
Adithya Vimukthi el 31 de En. de 2023
I run this and got output as,
sol =
x1: [0x1 sym]
x2: [0x1 sym]
but i need simplifyed equantions for x1 and x2. Is there a way to get?
Walter Roberson
Walter Roberson el 31 de En. de 2023
Which release are you using? With R2022b I get
sol.x1(1) = str2sym(horzcat('-2*atan((((8*(k1*l1^2*l2 - k2*l1^2*l2 - 2*k2*l1^2*l2*tan(c1/2)^2 - k1*l1^2*l2*ta', ...
'n(c1/2)^4 - k2*l1^2*l2*tan(c1/2)^4 + 2*k1*l1^2*l2*tan(c1/2 - c2/2)^2 + k1*l1^2*l', ...
'2*tan(c1/2 - c2/2)^4 + k2*l1^2*l2*tan(c1/2 - c2/2)^4 - 2*k1*l1^2*l2*tan(c1/2)^4*', ...
'tan(c1/2 - c2/2)^2 + 2*k2*l1^2*l2*tan(c1/2)^2*tan(c1/2 - c2/2)^4 - k1*l1^2*l2*ta', ...
'n(c1/2)^4*tan(c1/2 - c2/2)^4 + k2*l1^2*l2*tan(c1/2)^4*tan(c1/2 - c2/2)^4))/((2*k', ...
'1*k2 + 2*l1*l2 - k1^2*tan(c1/2)^2 - k2^2*tan(c1/2)^2 + l1^2*tan(c1/2)^2 + l2^2*t', ...
'an(c1/2)^2 - k1^2 - k2^2 + l1^2 + l2^2 - k1^2*tan(c1/2 - c2/2)^2 - k2^2*tan(c1/2', ...
' - c2/2)^2 + l1^2*tan(c1/2 - c2/2)^2 + l2^2*tan(c1/2 - c2/2)^2 - k1^2*tan(c1/2)^', ...
'2*tan(c1/2 - c2/2)^2 - k2^2*tan(c1/2)^2*tan(c1/2 - c2/2)^2 + l1^2*tan(c1/2)^2*ta', ...
'n(c1/2 - c2/2)^2 + l2^2*tan(c1/2)^2*tan(c1/2 - c2/2)^2 - 2*k1*k2*tan(c1/2)^2 + 2', ...
'*l1*l2*tan(c1/2)^2 - 2*k1*k2*tan(c1/2 - c2/2)^2 + 2*l1*l2*tan(c1/2 - c2/2)^2 + 2', ...
'*k1*k2*tan(c1/2)^2*tan(c1/2 - c2/2)^2 + 2*l1*l2*tan(c1/2)^2*tan(c1/2 - c2/2)^2 +', ...
' 8*k1*k2*tan(c1/2)*tan(c1/2 - c2/2))*(k1^2*tan(c1/2)^2 - 2*k1*k2 + k2^2*tan(c1/2', ...
')^2 + l1^2*tan(c1/2)^2 - l2^2*tan(c1/2)^2 + k1^2 + k2^2 + l1^2 - l2^2 + k1^2*tan', ...
'(c1/2 - c2/2)^2 + k2^2*tan(c1/2 - c2/2)^2 + l1^2*tan(c1/2 - c2/2)^2 - l2^2*tan(c', ...
'1/2 - c2/2)^2 + 4*k1*l1*tan(c1/2) + k1^2*tan(c1/2)^2*tan(c1/2 - c2/2)^2 + k2^2*t', ...
'an(c1/2)^2*tan(c1/2 - c2/2)^2 + l1^2*tan(c1/2)^2*tan(c1/2 - c2/2)^2 - l2^2*tan(c', ...
'1/2)^2*tan(c1/2 - c2/2)^2 - 4*k2*l1*tan(c1/2 - c2/2) + 2*k1*k2*tan(c1/2)^2 + 2*k', ...
'1*k2*tan(c1/2 - c2/2)^2 + 4*k1*l1*tan(c1/2)*tan(c1/2 - c2/2)^2 - 4*k2*l1*tan(c1/', ...
'2)^2*tan(c1/2 - c2/2) - 2*k1*k2*tan(c1/2)^2*tan(c1/2 - c2/2)^2 - 8*k1*k2*tan(c1/', ...
'2)*tan(c1/2 - c2/2))) + (4*((2*l1*l2 - 2*k1*k2 + k1^2*tan(c1/2)^2 + k2^2*tan(c1/', ...
'2)^2 - l1^2*tan(c1/2)^2 - l2^2*tan(c1/2)^2 + k1^2 + k2^2 - l1^2 - l2^2 + k1^2*ta', ...
'n(c1/2 - c2/2)^2 + k2^2*tan(c1/2 - c2/2)^2 - l1^2*tan(c1/2 - c2/2)^2 - l2^2*tan(', ...
'c1/2 - c2/2)^2 + k1^2*tan(c1/2)^2*tan(c1/2 - c2/2)^2 + k2^2*tan(c1/2)^2*tan(c1/2', ...
' - c2/2)^2 - l1^2*tan(c1/2)^2*tan(c1/2 - c2/2)^2 - l2^2*tan(c1/2)^2*tan(c1/2 - c', ...
'2/2)^2 + 2*k1*k2*tan(c1/2)^2 + 2*l1*l2*tan(c1/2)^2 + 2*k1*k2*tan(c1/2 - c2/2)^2 ', ...
'+ 2*l1*l2*tan(c1/2 - c2/2)^2 - 2*k1*k2*tan(c1/2)^2*tan(c1/2 - c2/2)^2 + 2*l1*l2*', ...
'tan(c1/2)^2*tan(c1/2 - c2/2)^2 - 8*k1*k2*tan(c1/2)*tan(c1/2 - c2/2))*(2*k1*k2 + ', ...
'2*l1*l2 - k1^2*tan(c1/2)^2 - k2^2*tan(c1/2)^2 + l1^2*tan(c1/2)^2 + l2^2*tan(c1/2', ...
')^2 - k1^2 - k2^2 + l1^2 + l2^2 - k1^2*tan(c1/2 - c2/2)^2 - k2^2*tan(c1/2 - c2/2', ...
')^2 + l1^2*tan(c1/2 - c2/2)^2 + l2^2*tan(c1/2 - c2/2)^2 - k1^2*tan(c1/2)^2*tan(c', ...
'1/2 - c2/2)^2 - k2^2*tan(c1/2)^2*tan(c1/2 - c2/2)^2 + l1^2*tan(c1/2)^2*tan(c1/2 ', ...
'- c2/2)^2 + l2^2*tan(c1/2)^2*tan(c1/2 - c2/2)^2 - 2*k1*k2*tan(c1/2)^2 + 2*l1*l2*', ...
'tan(c1/2)^2 - 2*k1*k2*tan(c1/2 - c2/2)^2 + 2*l1*l2*tan(c1/2 - c2/2)^2 + 2*k1*k2*', ...
'tan(c1/2)^2*tan(c1/2 - c2/2)^2 + 2*l1*l2*tan(c1/2)^2*tan(c1/2 - c2/2)^2 + 8*k1*k', ...
'2*tan(c1/2)*tan(c1/2 - c2/2)))^(1/2)*(l1*l2 + l1*l2*tan(c1/2)^2 + l1*l2*tan(c1/2', ...
' - c2/2)^2 + l1*l2*tan(c1/2)^2*tan(c1/2 - c2/2)^2))/((2*k1*k2 + 2*l1*l2 - k1^2*t', ...
'an(c1/2)^2 - k2^2*tan(c1/2)^2 + l1^2*tan(c1/2)^2 + l2^2*tan(c1/2)^2 - k1^2 - k2^', ...
'2 + l1^2 + l2^2 - k1^2*tan(c1/2 - c2/2)^2 - k2^2*tan(c1/2 - c2/2)^2 + l1^2*tan(c', ...
'1/2 - c2/2)^2 + l2^2*tan(c1/2 - c2/2)^2 - k1^2*tan(c1/2)^2*tan(c1/2 - c2/2)^2 - ', ...
'k2^2*tan(c1/2)^2*tan(c1/2 - c2/2)^2 + l1^2*tan(c1/2)^2*tan(c1/2 - c2/2)^2 + l2^2', ...
'*tan(c1/2)^2*tan(c1/2 - c2/2)^2 - 2*k1*k2*tan(c1/2)^2 + 2*l1*l2*tan(c1/2)^2 - 2*', ...
'k1*k2*tan(c1/2 - c2/2)^2 + 2*l1*l2*tan(c1/2 - c2/2)^2 + 2*k1*k2*tan(c1/2)^2*tan(', ...
'c1/2 - c2/2)^2 + 2*l1*l2*tan(c1/2)^2*tan(c1/2 - c2/2)^2 + 8*k1*k2*tan(c1/2)*tan(', ...
'c1/2 - c2/2))*(k1^2*tan(c1/2)^2 - 2*k1*k2 + k2^2*tan(c1/2)^2 + l1^2*tan(c1/2)^2 ', ...
'- l2^2*tan(c1/2)^2 + k1^2 + k2^2 + l1^2 - l2^2 + k1^2*tan(c1/2 - c2/2)^2 + k2^2*', ...
'tan(c1/2 - c2/2)^2 + l1^2*tan(c1/2 - c2/2)^2 - l2^2*tan(c1/2 - c2/2)^2 + 4*k1*l1', ...
'*tan(c1/2) + k1^2*tan(c1/2)^2*tan(c1/2 - c2/2)^2 + k2^2*tan(c1/2)^2*tan(c1/2 - c', ...
'2/2)^2 + l1^2*tan(c1/2)^2*tan(c1/2 - c2/2)^2 - l2^2*tan(c1/2)^2*tan(c1/2 - c2/2)', ...
'^2 - 4*k2*l1*tan(c1/2 - c2/2) + 2*k1*k2*tan(c1/2)^2 + 2*k1*k2*tan(c1/2 - c2/2)^2', ...
' + 4*k1*l1*tan(c1/2)*tan(c1/2 - c2/2)^2 - 4*k2*l1*tan(c1/2)^2*tan(c1/2 - c2/2) -', ...
' 2*k1*k2*tan(c1/2)^2*tan(c1/2 - c2/2)^2 - 8*k1*k2*tan(c1/2)*tan(c1/2 - c2/2))))*', ...
'(2*k1*k2 + 2*l1*l2 - k1^2*tan(c1/2)^2 - k2^2*tan(c1/2)^2 + l1^2*tan(c1/2)^2 + l2', ...
'^2*tan(c1/2)^2 - k1^2 - k2^2 + l1^2 + l2^2 - k1^2*tan(c1/2 - c2/2)^2 - k2^2*tan(', ...
'c1/2 - c2/2)^2 + l1^2*tan(c1/2 - c2/2)^2 + l2^2*tan(c1/2 - c2/2)^2 - k1^2*tan(c1', ...
'/2)^2*tan(c1/2 - c2/2)^2 - k2^2*tan(c1/2)^2*tan(c1/2 - c2/2)^2 + l1^2*tan(c1/2)^', ...
'2*tan(c1/2 - c2/2)^2 + l2^2*tan(c1/2)^2*tan(c1/2 - c2/2)^2 - 2*k1*k2*tan(c1/2)^2', ...
' + 2*l1*l2*tan(c1/2)^2 - 2*k1*k2*tan(c1/2 - c2/2)^2 + 2*l1*l2*tan(c1/2 - c2/2)^2', ...
' + 2*k1*k2*tan(c1/2)^2*tan(c1/2 - c2/2)^2 + 2*l1*l2*tan(c1/2)^2*tan(c1/2 - c2/2)', ...
'^2 + 8*k1*k2*tan(c1/2)*tan(c1/2 - c2/2)))/(4*(l1*l2 + l1*l2*tan(c1/2)^2 + l1*l2*', ...
'tan(c1/2 - c2/2)^2 + l1*l2*tan(c1/2)^2*tan(c1/2 - c2/2)^2)))'));
sol.x2(1) = str2sym(horzcat( '-2*atan(((2*l1*l2 - 2*k1*k2 + k1^2*tan(c1/2)^2 + k2^2*tan(c1/2)^2 - l1^2*tan(c1/', ...
'2)^2 - l2^2*tan(c1/2)^2 + k1^2 + k2^2 - l1^2 - l2^2 + k1^2*tan(c1/2 - c2/2)^2 + ', ...
'k2^2*tan(c1/2 - c2/2)^2 - l1^2*tan(c1/2 - c2/2)^2 - l2^2*tan(c1/2 - c2/2)^2 + k1', ...
'^2*tan(c1/2)^2*tan(c1/2 - c2/2)^2 + k2^2*tan(c1/2)^2*tan(c1/2 - c2/2)^2 - l1^2*t', ...
'an(c1/2)^2*tan(c1/2 - c2/2)^2 - l2^2*tan(c1/2)^2*tan(c1/2 - c2/2)^2 + 2*k1*k2*ta', ...
'n(c1/2)^2 + 2*l1*l2*tan(c1/2)^2 + 2*k1*k2*tan(c1/2 - c2/2)^2 + 2*l1*l2*tan(c1/2 ', ...
'- c2/2)^2 - 2*k1*k2*tan(c1/2)^2*tan(c1/2 - c2/2)^2 + 2*l1*l2*tan(c1/2)^2*tan(c1/', ...
'2 - c2/2)^2 - 8*k1*k2*tan(c1/2)*tan(c1/2 - c2/2))*(2*k1*k2 + 2*l1*l2 - k1^2*tan(', ...
'c1/2)^2 - k2^2*tan(c1/2)^2 + l1^2*tan(c1/2)^2 + l2^2*tan(c1/2)^2 - k1^2 - k2^2 +', ...
' l1^2 + l2^2 - k1^2*tan(c1/2 - c2/2)^2 - k2^2*tan(c1/2 - c2/2)^2 + l1^2*tan(c1/2', ...
' - c2/2)^2 + l2^2*tan(c1/2 - c2/2)^2 - k1^2*tan(c1/2)^2*tan(c1/2 - c2/2)^2 - k2^', ...
'2*tan(c1/2)^2*tan(c1/2 - c2/2)^2 + l1^2*tan(c1/2)^2*tan(c1/2 - c2/2)^2 + l2^2*ta', ...
'n(c1/2)^2*tan(c1/2 - c2/2)^2 - 2*k1*k2*tan(c1/2)^2 + 2*l1*l2*tan(c1/2)^2 - 2*k1*', ...
'k2*tan(c1/2 - c2/2)^2 + 2*l1*l2*tan(c1/2 - c2/2)^2 + 2*k1*k2*tan(c1/2)^2*tan(c1/', ...
'2 - c2/2)^2 + 2*l1*l2*tan(c1/2)^2*tan(c1/2 - c2/2)^2 + 8*k1*k2*tan(c1/2)*tan(c1/', ...
'2 - c2/2)))^(1/2)/(2*k1*k2 + 2*l1*l2 - k1^2*tan(c1/2)^2 - k2^2*tan(c1/2)^2 + l1^', ...
'2*tan(c1/2)^2 + l2^2*tan(c1/2)^2 - k1^2 - k2^2 + l1^2 + l2^2 - k1^2*tan(c1/2 - c', ...
'2/2)^2 - k2^2*tan(c1/2 - c2/2)^2 + l1^2*tan(c1/2 - c2/2)^2 + l2^2*tan(c1/2 - c2/', ...
'2)^2 - k1^2*tan(c1/2)^2*tan(c1/2 - c2/2)^2 - k2^2*tan(c1/2)^2*tan(c1/2 - c2/2)^2', ...
' + l1^2*tan(c1/2)^2*tan(c1/2 - c2/2)^2 + l2^2*tan(c1/2)^2*tan(c1/2 - c2/2)^2 - 2', ...
'*k1*k2*tan(c1/2)^2 + 2*l1*l2*tan(c1/2)^2 - 2*k1*k2*tan(c1/2 - c2/2)^2 + 2*l1*l2*', ...
'tan(c1/2 - c2/2)^2 + 2*k1*k2*tan(c1/2)^2*tan(c1/2 - c2/2)^2 + 2*l1*l2*tan(c1/2)^', ...
'2*tan(c1/2 - c2/2)^2 + 8*k1*k2*tan(c1/2)*tan(c1/2 - c2/2)))' ));
sol
sol = struct with fields:
x1: -2*atan((((8*k1*l1^2*l2 - 8*k2*l1^2*l2 - 16*k2*l1^2*l2*tan(c1/2)^2 - 8*k1*l1^2*l2*tan(c1/2)^4 - 8*k2*l1^2*l2*tan(c1/2)^4 + 16*k1*l1^2*l2*tan(c1/2 - c2/2)^2 + 8*k1*l1^2*l2*tan(c1/2 - c2/2)^4 + 8*k2*l1^2*l2*tan(c1/2 - c2/2)^4 - 16*k1*l1^2*l2*tan… x2: -2*atan(((2*l1*l2 - 2*k1*k2 + k1^2*tan(c1/2)^2 + k2^2*tan(c1/2)^2 - l1^2*tan(c1/2)^2 - l2^2*tan(c1/2)^2 + k1^2 + k2^2 - l1^2 - l2^2 + k1^2*tan(c1/2 - c2/2)^2 + k2^2*tan(c1/2 - c2/2)^2 - l1^2*tan(c1/2 - c2/2)^2 - l2^2*tan(c1/2 - c2/2)^2 + k1^2*…
Ah, looks like you can potentially reduce sizes a fair bit
x1_better = simplify(sol.x1, 'steps', 50);
x2_better = simplify(sol.x2, 'steps', 50);
x1_better
x1_better = 
x2_better
x2_better = 

Iniciar sesión para comentar.

Más respuestas (0)

Categorías

Más información sobre Mathematics en Help Center y File Exchange.

Productos

Community Treasure Hunt

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

Start Hunting!

Translated by