Finding zero without interp1.
Afficher commentaires plus anciens
a=[8000];
for x=2:25
a(x)=[(0.97*a(end))-((250*(x-1)/x))];
end
z=1:25;
plot(z,a)
table(z', a')
I have two questions
- How to find the value of z when a is zero? (Without using interp1) Can I use fzero? Or a For loop & If-Else?
- How do I end the table when Var2=0? (The last row in the table should end with 24.8579 and 0. I do not want to include negatives.)
3 commentaires
Walter Roberson
le 5 Juin 2022
or to decouple the storage location from the x value... like I show in my Answer
Matt J
le 5 Juin 2022
I would argue that that is a choice of interpoaltion...
Réponses (1)
Walter Roberson
le 4 Juin 2022
0 votes
You will need a loop, unless you can solve the recurrence relationship. (MATLAB does not offer any tools for recurrence relationships.)
4 commentaires
Capami
le 4 Juin 2022
Walter Roberson
le 4 Juin 2022
x = 2;
while a(end) > 0
a(end+1)=[(0.97*a(end))-((250*(x-1)/x))];
x = x + 1;
end
This will resolve down to an integer.
Walter Roberson
le 4 Juin 2022
x = 2;
for dx = 10.^-(0:5)
while a(end) > 0
a(end+1)=[(0.97*a(end))-((250*(x-1)/x))];
x = x + dx;
end
x = x - dx;
a(end) = [];
end
At the end of this, a(end) will be the last positive a before the zero crossing, and x will be the last x before the crossing. The accuracy will be 1e-5 in this code.
Walter Roberson
le 5 Juin 2022
One modification you might want to make here is to keep an x history so that later you can plot(xhist, a) since the a array entries are no longer equidistant in x space.
Catégories
En savoir plus sur Interpolation dans Centre d'aide et File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!