How can I force simplify function I want?

6 vues (au cours des 30 derniers jours)
Ismail Taygun Bulmus
Ismail Taygun Bulmus le 16 Déc 2020
Commenté : Star Strider le 18 Déc 2020
I have a problem about both simplify and subs functions.
  1. Simplify function is not working in the following example.
syms mu B cc M M_bar E V_N sigma_1;
sigma_1 = sqrt((M+M_bar-4*E*V_N)^2+(2*mu*B)^2);
cantSimplified_Var = simplify(sqrt(4*B^2*mu^sym(2) + 16*E^sym(2)*V_N^2 - 8*E*M*V_N - 8*E*M_bar*V_N + M^2 + 2*M*M_bar + M_bar^2));
isequal(expand(sigma_1),cantSimplified_Var)
ans =
logical
1
isequal(sigma_1,cantSimplified_Var)
ans =
logical
0
2. I want to continue with my new defined function. For example,
syms A B C
A = B^2;
C = A + B^2
C =
2*B^2
Here, I want to see equation like "C = 2*A". Is it possible?
It is related to my first question, because if I can see the expression like "C = 2*A", I will continue my calculation whether MATLAB simplify it correctly or not.

Réponse acceptée

Star Strider
Star Strider le 16 Déc 2020
Tell MATLAB to keep slimplfying until it cannot simplify it further (or reaches the iteration limit), then test equality with the isAlways function:
syms mu B cc M M_bar E V_N sigma_1;
sigma_1 = sqrt((M+M_bar-4*E*V_N)^2+(2*mu*B)^2);
cantSimplified_Var = simplify(sqrt(4*B^2*mu^sym(2) + 16*E^sym(2)*V_N^2 - 8*E*M*V_N - 8*E*M_bar*V_N + M^2 + 2*M*M_bar + M_bar^2), 'Steps',500);
Test = isAlways(sigma_1 == cantSimplified_Var)
producing:
Test =
logical
1
.
  4 commentaires
Ismail Taygun Bulmus
Ismail Taygun Bulmus le 18 Déc 2020
Okay, thank you again.
Star Strider
Star Strider le 18 Déc 2020
As always, my pleasure!

Connectez-vous pour commenter.

Plus de réponses (0)

Community Treasure Hunt

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

Start Hunting!

Translated by