Evaluating a symbolic heaviside function using subs at points where disconuities are located
1 visualizzazione (ultimi 30 giorni)
Mostra commenti meno recenti
Aleem Andrew
il 26 Ott 2020
Commentato: Aleem Andrew
il 30 Ott 2020
When trying to evaluate a symbolic function, Matlab outputs 'Nan' when it encounters discontinuities.
syms x
f = 22*heaviside(x - 5)*(x - 5) - 20*heaviside(x - 2)*(x - 2) - 20*heaviside(x - 3)*(x - 3) - 10*heaviside(x - 1)*(x - 1) + 28*x*heaviside(x)
fplot(diff(f,1),[-2 6])
x = [1 2 3 4]
subs(diff(f,1))
The output is
ans =
[ NaN, NaN, NaN, -22]
However, I would like to know the value at 1+,2+,3+ and so on so the desired output is [18 -2 -22 -22]. Is there a way to deal with disconituities by outputting the function value as x approaches a particular value from the left or right without typing for example subs(diff(f,1.0001)) or subs(diff(f,1+eps))?
0 Commenti
Risposta accettata
Shubham Rawat
il 30 Ott 2020
Hi Aleem,
You may use limit function for the discontinuities:
syms x
f = 22*heaviside(x - 5)*(x - 5) - 20*heaviside(x - 2)*(x - 2) - 20*heaviside(x - 3)*(x - 3) - 10*heaviside(x - 1)*(x - 1) + 28*x*heaviside(x)
g = diff(f,1); % g is differentiation of f
limit(g,x,1,'right') % this gives the right limit of function g at x = 1
You may refer to the limit documentation page for further reference:
https://www.mathworks.com/help/symbolic/limit.html
Più risposte (0)
Vedere anche
Categorie
Scopri di più su Assumptions in Help Center e File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!