Symbolic sin(pi) in Matlab 2020 a not simplify
18 Ansichten (letzte 30 Tage)
Ältere Kommentare anzeigen
Jiefeng Sun
am 6 Okt. 2020
Beantwortet: Steven Lord
am 7 Jan. 2023
I am using symbolic toolbox, but it does not simplify.
But it works great for Matlab 2017 b.
>> syms pi
>> sin(pi)
ans =
sin(pi)
>> simplify(ans)
ans =
sin(pi)
0 Kommentare
Akzeptierte Antwort
Walter Roberson
am 6 Okt. 2020
R2020a changed sym so that now there are no special symbols. Before sym pi resulted in a symbolic version of the irrational constant π but now it is just another variable. Likewise Euler gamma constant and one other constant that is not coming to mind at the moment.
Now if you want the symbolic version of the irrational number you need to
sym(pi)
and count on sym being able to recognize the finite numeric approximation that is the function pi()
I personally do not think that this was the best way for Mathworks to have proceeded. I personally think that should be possible for a user to directly name symbolic version of the constant. I had filed an enhancement to have the special treatment documented so as to reduce problems for people who were not aware of it, and they choose to get rid of the special treatment instead.
2 Kommentare
Bjorn Gustavsson
am 6 Okt. 2020
Demonstrably it works - but there is something uncomfortable about counting on that level of cleverness. To me it feels way more robust to define pi as 4 (natural number, so no cleverness required there) times atan(1) (which by definition is the angle that is a quarter of pi)
Weitere Antworten (3)
Bjorn Gustavsson
am 6 Okt. 2020
That is because your definition of pi as a symbolic variable that hides the built-in pi. Try:
which pi -all
or:
sym x
pi = 4*atan(x/x);
sin(pi)
HTH
2 Kommentare
Bjorn Gustavsson
am 6 Okt. 2020
No it is not the built-in pi you see - it clearly states that the built-in is shadowed.
Steven Lord
am 7 Jan. 2023
Another possible solution if you're just trying to avoid the roundoff error involved in approximating π as pi is to use the sinpi function.
d1 = sin(pi)
d2 = sinpi(1)
p = sym(pi);
d3 = sin(p)
0 Kommentare
Siehe auch
Kategorien
Mehr zu Assumptions finden Sie in Help Center und File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!