y=@(T) I*T*sind(A)-(0.5*G*(T^2)); root = fzero(y, 0)
abouve eqation is for a projectile that projected at an angle (gose in a kind of ar half oval shape)
want to find the time it hist ground but fzero only gives me the biginning which is 0
No products are associated with this question.
The anwser is in the comments above
From Matt Fig
rt = 0; d = .1; cnt = 1; while rt<.1 rt = fzero(y,rt+d*cnt); cnt = cnt + 1; end
Digging deep, Honglei! How did you come across this one from over a year ago?
23 Comments
Direct link to this comment:
http://www.mathworks.com/matlabcentral/answers/1996#comment_3788
Maybe it just doesn't like buxZED... won't let me submit an answer to this one.
Direct link to this comment:
http://www.mathworks.com/matlabcentral/answers/1996#comment_3789
root = fzero(y,[eps, realmax])
Direct link to this comment:
http://www.mathworks.com/matlabcentral/answers/1996#comment_3791
any clue why?
can you post as a comment?
Direct link to this comment:
http://www.mathworks.com/matlabcentral/answers/1996#comment_3792
Hey Walter, answers stop working for me too :(
We're sorry, but something went wrong.
We've been notified about this issue and we'll take a look at it shortly.
Direct link to this comment:
http://www.mathworks.com/matlabcentral/answers/1996#comment_3793
??? Error using ==> fzero at 260
Function values at interval endpoints must be finite and real.
Error in ==> p34 at 26
root = fzero(y,[eps, realmax])
>>
Direct link to this comment:
http://www.mathworks.com/matlabcentral/answers/1996#comment_3796
root = fzero(y,eps, realmax)
gives me a - answer, imposible
Direct link to this comment:
http://www.mathworks.com/matlabcentral/answers/1996#comment_3797
Plot the function, look at the plot and pick a closer guess than zero.
Direct link to this comment:
http://www.mathworks.com/matlabcentral/answers/1996#comment_3799
@matt Fig
that was my inicial thought
but we are not alowed to use neumerical methods or guess work
Direct link to this comment:
http://www.mathworks.com/matlabcentral/answers/1996#comment_3802
You do realize that FZERO is a numerical root finder, right?
Direct link to this comment:
http://www.mathworks.com/matlabcentral/answers/1996#comment_3806
is there a way to force fzero to go to the next positive root?
Direct link to this comment:
http://www.mathworks.com/matlabcentral/answers/1996#comment_3809
Ummm, make it fzero(y,[eps,sqrt(realmax)/G]
Using fzero(y,eps,realmax) would cause realmax to be interpreted as an Option, and then it would use eps as the starting guess, not constrained from going backwards.
Direct link to this comment:
http://www.mathworks.com/matlabcentral/answers/1996#comment_3811
No, there is no way to force fzero to go to the next positive root. You can only exclude the area you already searched from the area fzero is to search next.
Direct link to this comment:
http://www.mathworks.com/matlabcentral/answers/1996#comment_3812
rt = 0;
d = .1;
cnt = 1;
while ~rt
rt = fzero(y,rt+d*cnt);
cnt = cnt + 1;
end
Direct link to this comment:
http://www.mathworks.com/matlabcentral/answers/1996#comment_3820
it works
but i want to understand what while ~rt means (what dose ~ say)
dose this stop counting as it finds the first root after zero?
Direct link to this comment:
http://www.mathworks.com/matlabcentral/answers/1996#comment_3821
~ is logical negation. It is true if and only if the thing being tested is exactly 0.
Direct link to this comment:
http://www.mathworks.com/matlabcentral/answers/1996#comment_3832
so dose this stops finding roots after it reached the 1st root after 0?
Direct link to this comment:
http://www.mathworks.com/matlabcentral/answers/1996#comment_3834
When rt is not zero, then ~rt is false. That would stop the WHILE loop.
Direct link to this comment:
http://www.mathworks.com/matlabcentral/answers/1996#comment_3835
y=@(T) I*T*sind(A)-(0.5*G*(T^2));
%root = fzero(y, eps, realmax)
rt = 0;
d = .1;
cnt = 1;
while ~rt
rt = fzero(y,rt+d*cnt);
cnt = cnt + 1;
end
fprintf('the root is %g\n' , rt)
gives me the root is 7.11215e-026
but its not posible as the projectile takes around 1.5sec to reach maximum hight, the root should be around 3
can you point me in the right derection?
Direct link to this comment:
http://www.mathworks.com/matlabcentral/answers/1996#comment_3836
is there a way to systematicaly increase the T value till Y become zero and get that value?
Direct link to this comment:
http://www.mathworks.com/matlabcentral/answers/1996#comment_3837
Change from:
while ~rt
to:
while rt<.1
or similar. It might help if you actually gave us some values for I, A and G.
Direct link to this comment:
http://www.mathworks.com/matlabcentral/answers/1996#comment_3838
it worked Matt
thank you so much
and also ~ would allow me to use matlab in many new ways
thank you again :D
Direct link to this comment:
http://www.mathworks.com/matlabcentral/answers/1996#comment_3897
Can I suggest using an initial guess of 2*I*sind(A)/G? Just sayin'...
Direct link to this comment:
http://www.mathworks.com/matlabcentral/answers/1996#comment_3899
Come on now, Matt! Where is the fun of solving the equation with your brain instead of making MATLAB do it?