Opened 18 years ago
Closed 18 years ago
#503 closed defect (fixed)
Kernel function makes TOL to crash
Reported by: | César Pérez Álvarez | Owned by: | Víctor de Buen Remiro |
---|---|---|---|
Priority: | high | Milestone: | |
Component: | Math | Version: | 1.1.5 |
Severity: | critical | Keywords: | |
Cc: | César Pérez Álvarez |
Description
If We try this code:
Matrix A = SetMat(SetOfSet
(
SetOfReal(1,1,1)
));
Matrix Kernel(A);
We obatain this Warning message before TOL crashes.
2007/08/26 19:10:40 :
Empieza Kernel(1,3)<W>
Warning: [1] <W>Intento de multiplicación de una matriz vacía.</W>
</W>
AX.FrobeniusNorm()=0
<W>
Warning: [2] <W>Intento de multiplicación de una matriz vacía.</W>
</W>
Change History (8)
comment:1 Changed 18 years ago by
Owner: | changed from danirus to Víctor de Buen Remiro |
---|
comment:2 Changed 18 years ago by
bug_file_loc: | → http://cvs.tol-project.org/viewcvs.cgi/tol_tests/tol/Bugzilla/bug_000503 |
---|---|
Resolution: | → fixed |
Status: | new → closed |
comment:3 Changed 18 years ago by
A new test has been added to check it at
http://cvs.tol-project.org/viewcvs.cgi/tol_tests/tol/Bugzilla/bug_000503
comment:4 Changed 18 years ago by
Bug has been fixed in both TOL builds that are available at
v1.1.5 b.16 2007-08-27 17:19:50 i686-win
http://www.tol-project.org/pub/bin/win/tolbase-1.1.5-setup.exe
v1.1.6 b.0.19.alpha 2007-08-27 17:38:11 i686-win
http://www.tol-project.org/pub/bin/win/tolbase-1.1.6-setup.exe
comment:5 Changed 18 years ago by
Cc: | César Pérez Álvarez added |
---|---|
Resolution: | fixed |
Status: | closed → reopened |
Now, this code does not crash TOL
Matrix A = SetMat(SetOfSet
(
SetOfReal(1,1,1)
));
Matrix k = Kernel(A)
... but k is not a basis of Ax=0
I think that we are generating only a vector and not a basis, maybe recursion is not working, because I tried Kernel with a Matrix 1x4 and I obtained only a orthonormal vector.
comment:6 Changed 18 years ago by
The trace of
http://cvs.tol-project.org/viewcvs.cgi/tol_tests/tol/Bugzilla/bug_000503
tell us
A=
1; 1; 1;
K=
0.542916505481256;
0.256681171140052;
-0.799597676621307;
A*K=
3.33066907387547e-016;
This number is an acceptable numerical rounding error, so A*K is 0 and K is a base of the kernel of A.
Way do you think it's not the kernel?
comment:7 Changed 18 years ago by
Ok, there are vectors of kernel taht are not represented by this vector, so the base is incomplete.
comment:8 Changed 18 years ago by
Resolution: | → fixed |
---|---|
Status: | reopened → closed |
There was an error in the updating of the system for each iteration, so it stoped allways after first iteration for matrices like these.
Problem has been fixed in CVS in both versions 1.1.5 (official) and 1.1.6
(development head) and the corresponding binary versions
Thanks to report it
Problem has been fixed in CVS in both versions 1.1.5 (official) and 1.1.6 (development head). The corresponding binary versions will be updated next, along with other errors and improvements that are being carried out at the moment.
Previous implementation supposed that matrix had more or equal rows that columns, but this is not a mandatory condition due to kernel is defined for any linear transformation.
Thanks to report it