[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Octave-bug-tracker] [bug #49291] residue function gives incorrect resul
From: |
Rik |
Subject: |
[Octave-bug-tracker] [bug #49291] residue function gives incorrect result |
Date: |
Fri, 7 Oct 2016 16:34:35 +0000 (UTC) |
User-agent: |
Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:43.0) Gecko/20100101 Firefox/43.0 |
Follow-up Comment #1, bug #49291 (project octave):
This seems to be entirely due to a cleanup routine in residue.m.
I used the debugger to step through the code while executing your example, and
I have the Matlab-equivalent result until the end of the file.
pden =
1.0000e+00 1.4481e+05 4.9290e+09 4.5817e+13 1.0008e+17
At that point, the m-file tries to remove elements which it thinks are likely
due to round-off errors in the calculation. In this case, anything less than
the machine precision of the largest value. The code starting at line 341 is
## Check for leading zeros and trim the polynomial coefficients.
if (isa (r, "single") || isa (p, "single") || isa (k, "single"))
small = max ([max(abs(pden)), max(abs(pnum)), 1]) * eps ("single");
else
small = max ([max(abs(pden)), max(abs(pnum)), 1]) * eps;
endif
pnum(abs (pnum) < small) = 0;
pden(abs (pden) < small) = 0;
pnum = polyreduce (pnum);
pden = polyreduce (pden);
endfunction
The obvious question is whether this code is necessary. If it is necessary,
should it apply both to the numerator (pnum) and the denominator (pden) or
just the numerator? And if it is still necessary, and it should apply to both
pnum and pden, then how should the code be changed to recover the original
(and Matlab) result.
This code is really old and some form of this truncation has been in place
since 2007. I'm adding the authors listed in the file to this bug report in
case they remember why this should be the way it is.
The Matlab documentation
(http://www.mathworks.com/help/matlab/ref/residue.html) says that the
denominator polynomial should be the size of 'r' or 'p' which in this case is
4. So it is possible that this is also a bug/inconsistency in Matlab.
_______________________________________________________
Reply to this item at:
<http://savannah.gnu.org/bugs/?49291>
_______________________________________________
Message sent via/by Savannah
http://savannah.gnu.org/
- [Octave-bug-tracker] [bug #49291] residue function gives incorrect result, anonymous, 2016/10/07
- [Octave-bug-tracker] [bug #49291] residue function gives incorrect result,
Rik <=
- [Octave-bug-tracker] [bug #49291] residue function gives incompatible result, Rik, 2016/10/07
- [Octave-bug-tracker] [bug #49291] residue function gives incompatible result, Rik, 2016/10/07
- [Octave-bug-tracker] [bug #49291] residue function gives incompatible result, Rik, 2016/10/07
- [Octave-bug-tracker] [bug #49291] residue function gives incompatible result, Ben Abbott, 2016/10/07
- [Octave-bug-tracker] [bug #49291] residue function gives incompatible result, Ben Abbott, 2016/10/07
- [Octave-bug-tracker] [bug #49291] residue function gives incompatible result, Marco Caliari, 2016/10/10
- [Octave-bug-tracker] [bug #49291] residue function gives incompatible result, Rik, 2016/10/10
- [Octave-bug-tracker] [bug #49291] residue function gives incompatible result, Marco Caliari, 2016/10/10
- [Octave-bug-tracker] [bug #49291] residue function gives incompatible result, Rik, 2016/10/10
- [Octave-bug-tracker] [bug #49291] residue function gives incompatible result, Rik, 2016/10/10