How to write as symbolic piecewise function with conditions on a symbolic vector
1 vue (au cours des 30 derniers jours)
Afficher commentaires plus anciens
David Gillcrist
le 24 Fév 2023
Modifié(e) : Torsten
le 24 Fév 2023
I have a symbolic vector, and I want to define a function that is an parabola if the vector is inside a hyper cube of length 2 centered at the origin, and otherwise it's infinity. This is what I've written
syms Xi [1 n]
ff = piecewise(all(abs(Xi)<=1),sum(Xi.^2),Inf);
This function however produces the error
Error using symengine
Unable to prove 'abs(Xi1) <= 1' literally. Use 'isAlways' to test the statement mathematically.
Error in sym>logicalNaNIsTrue (line 2054)
X = mupadmex('symobj::logicalNaNIsTrue',A.s,9);
Error in sym/all (line 623)
X = all(logicalNaNIsTrue(A));
0 commentaires
Réponse acceptée
Walter Roberson
le 24 Fév 2023
n = 4
syms Xi [1 n]
condition = fold(@and, abs(Xi)<=1)
ff = piecewise(condition, sum(Xi.^2), Inf)
0 commentaires
Voir également
Catégories
En savoir plus sur Assumptions dans Help Center et File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!