Avoiding -0.0000 as an output
2 views (last 30 days)
Show older comments
Hello. I have the following script for differentiation and for some functions (e.g. f(x) = x) I get f'''(1) and f''''(1) equal to -0.0000. How can i avoid the minus sign when the reasult is zero ?
clear all, clc, format long e
f = @(x) x; %input('Enter f(x) = ');
x = 1; %input('Enter point: x = ');
tol = 1e-1; %input('Enter tolerance: ');
f3 = feval(f,x);
h = tol*f3;
f0 = feval(f,x-3*h);
f1 = feval(f,x-2*h);
f2 = feval(f,x-1*h);
f4 = feval(f,x+1*h);
f5 = feval(f,x+2*h);
f6 = feval(f,x+3*h);
d1f = (f1-8*f2+8*f4-f5)/12/h;
d2f = (-f1+16*f2-30*f3+16*f4-f5)/12/h^2;
d3f = (f0-8*f1+13*f2-13*f4+8*f5-f6)/8/h^3;
d4f = (-f0+12*f1-39*f2+56*f3-39*f4+12*f5-f6)/6/h^4;
p = [d1f;d2f;d3f;d4f];
fprintf('\nFirst derivative at x = %g:\tf''(%g) = %f\n',x,x,d1f);
fprintf('\nSecond derivative at x = %g:\tf''''(%g) = %f\n',x,x,d2f);
fprintf('\nThird derivative at x = %g:\tf''''''(%g) = %f\n',x,x,d3f);
fprintf('\nFourth derivative at x = %g:\tf''''''''(%g) = %f\n',x,x,d4f);
0 Comments
Accepted Answer
Torsten
on 3 Feb 2025
Moved: Steven Lord
on 3 Feb 2025
The results for d2,...,d4 aren't exactly 0 because of floating point errors in their computation. So without artificially manipulating the results, you can't get rid of the minus sign.
1 Comment
More Answers (0)
See Also
Categories
Find more on Startup and Shutdown in Help Center and File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!