How to write as symbolic piecewise function with conditions on a symbolic vector

1 visualizzazione (ultimi 30 giorni)
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));

Risposta accettata

Walter Roberson
Walter Roberson il 24 Feb 2023
n = 4
n = 4
syms Xi [1 n]
condition = fold(@and, abs(Xi)<=1)
condition = 
ff = piecewise(condition, sum(Xi.^2), Inf)
ff = 

Più risposte (1)

Torsten
Torsten il 24 Feb 2023
Modificato: Torsten il 24 Feb 2023
n = 2;
Xi = sym('Xi',[1 n]);
ff = piecewise(max(abs(Xi))<=1,sum(Xi.^2),Inf)
ff = 
fsurf(ff)

Tag

Prodotti


Release

R2022a

Community Treasure Hunt

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

Start Hunting!

Translated by