POV-Ray : Newsgroups : povray.text.scene-files : [Minimum Volume] Bounding Ellipsoid via SVD Server Time: 22 Nov 2019 04:49:24 GMT
  [Minimum Volume] Bounding Ellipsoid via SVD (Message 1 to 10 of 34)  
Goto Latest 10 Messages Next 10 Messages >>>
From: Bald Eagle
Subject: [Minimum Volume] Bounding Ellipsoid via SVD
Date: 5 Nov 2019 22:25:01
Message: <web.5dc1f62398a77aef4eec112d0@news.povray.org>
So, I've managed to trim down the number of errors that this gives me, but it
looks like there are a few things that need to be ironed out.



stdafx.h is just (commented out what looked to me like Windows specific stuff):

// stdafx.h : include file for standard system include files,
// or project specific include files that are used frequently, but
// are changed infrequently
//

#pragma once

//#include "targetver.h"

#include <stdio.h>
//#include <tchar.h>



// TODO: reference additional headers your program requires here



-------------------------------------------------------------------
tried to compile:


oem@oem-Inspiron-N5110 ~/Documents/POV-Ray-3.8/ThirdParty/jr/SVD/SVD $ c++
SVD.cpp -std=c++11
SVD.cpp: In function ‘int main(int, char**)’:
SVD.cpp:350:68: error: expected primary-expression before ‘>’ token
  std::cout << "Enter size of matrix N = (50x50 max): "; std::cin > >
matrix_size;
                                                                    ^
SVD.cpp: In instantiation of ‘void svd(std::vector<std::vector<_RealType> >,
std::vector<std::vector<_RealType> >&, std::vector<std::vector<_RealType> >&,
std::vector<std::vector<_RealType> >&) [with Arg =
boost::multiprecision::number<boost::multiprecision::backends::cpp_bin_float<4096u,
(boost::multiprecision::backends::digit_base_type)2u, void, short int, -16382,
16383>, (boost::multiprecision::expression_template_option)0u>]’:
SVD.cpp:358:22:   required from here
SVD.cpp:31:18: error: ‘matrix_transpose’ was not declared in this scope, and no
declarations were found by argument-dependent lookup at the point of
instantiation [-fpermissive]
  matrix_transpose(matrix, matrix_t);
                  ^
SVD.cpp:186:6: note: ‘template<class Arg> void
matrix_transpose(std::vector<std::vector<_RealType> >,
std::vector<std::vector<_RealType> >&)’ declared here, later in the translation
unit
 void matrix_transpose(std::vector<std::vector<Arg> > matrix1,
      ^
SVD.cpp:34:18: error: ‘matrix_by_matrix’ was not declared in this scope, and no
declarations were found by argument-dependent lookup at the point of
instantiation [-fpermissive]
  matrix_by_matrix(matrix, matrix_t, matrix_product1);
                  ^
SVD.cpp:199:6: note: ‘template<class Arg> void
matrix_by_matrix(std::vector<std::vector<_RealType> >,
std::vector<std::vector<_RealType> >&, std::vector<std::vector<_RealType> >&)’
declared here, later in the translation unit
 void matrix_by_matrix(std::vector<std::vector<Arg> > matrix1,
      ^
SVD.cpp:37:18: error: ‘matrix_by_matrix’ was not declared in this scope, and no
declarations were found by argument-dependent lookup at the point of
instantiation [-fpermissive]
  matrix_by_matrix(matrix_t, matrix, matrix_product2);
                  ^
SVD.cpp:199:6: note: ‘template<class Arg> void
matrix_by_matrix(std::vector<std::vector<_RealType> >,
std::vector<std::vector<_RealType> >&, std::vector<std::vector<_RealType> >&)’
declared here, later in the translation unit
 void matrix_by_matrix(std::vector<std::vector<Arg> > matrix1,
      ^
SVD.cpp:43:13: error: ‘compute_evd’ was not declared in this scope, and no
declarations were found by argument-dependent lookup at the point of
instantiation [-fpermissive]
  compute_evd(matrix_product2, eigenvalues, v_1, 0);
             ^
SVD.cpp:65:6: note: ‘template<class Arg> void
compute_evd(std::vector<std::vector<_RealType> >, std::vector<_RealType>&,
std::vector<std::vector<_RealType> >&, std::size_t)’ declared here, later in the
translation unit
 void compute_evd(std::vector<std::vector<Arg> > matrix,
      ^
SVD.cpp:45:18: error: ‘matrix_transpose’ was not declared in this scope, and no
declarations were found by argument-dependent lookup at the point of
instantiation [-fpermissive]
  matrix_transpose(v_1, v);
                  ^
SVD.cpp:186:6: note: ‘template<class Arg> void
matrix_transpose(std::vector<std::vector<_RealType> >,
std::vector<std::vector<_RealType> >&)’ declared here, later in the translation
unit
 void matrix_transpose(std::vector<std::vector<Arg> > matrix1,
      ^
SVD.cpp:55:29: error: ‘get_inverse_diagonal_matrix’ was not declared in this
scope, and no declarations were found by argument-dependent lookup at the point
of instantiation [-fpermissive]
  get_inverse_diagonal_matrix(s, s_inverse);
                             ^
SVD.cpp:277:6: note: ‘template<class Arg> void
get_inverse_diagonal_matrix(std::vector<std::vector<_RealType> >,
std::vector<std::vector<_RealType> >&)’ declared here, later in the translation
unit
 void get_inverse_diagonal_matrix(std::vector<std::vector<Arg> > matrix,
      ^
SVD.cpp:58:18: error: ‘matrix_by_matrix’ was not declared in this scope, and no
declarations were found by argument-dependent lookup at the point of
instantiation [-fpermissive]
  matrix_by_matrix(matrix, v, av_matrix);
                  ^
SVD.cpp:199:6: note: ‘template<class Arg> void
matrix_by_matrix(std::vector<std::vector<_RealType> >,
std::vector<std::vector<_RealType> >&, std::vector<std::vector<_RealType> >&)’
declared here, later in the translation unit
 void matrix_by_matrix(std::vector<std::vector<Arg> > matrix1,
      ^
SVD.cpp:59:18: error: ‘matrix_by_matrix’ was not declared in this scope, and no
declarations were found by argument-dependent lookup at the point of
instantiation [-fpermissive]
  matrix_by_matrix(av_matrix, s_inverse, u);
                  ^
SVD.cpp:199:6: note: ‘template<class Arg> void
matrix_by_matrix(std::vector<std::vector<_RealType> >,
std::vector<std::vector<_RealType> >&, std::vector<std::vector<_RealType> >&)’
declared here, later in the translation unit
 void matrix_by_matrix(std::vector<std::vector<Arg> > matrix1,


Post a reply to this message


Attachments:
Download 'svd.cpp.txt' (11 KB)

From: jr
Subject: Re: [Minimum Volume] Bounding Ellipsoid via SVD
Date: 5 Nov 2019 23:25:00
Message: <web.5dc203fdf7b9a3affeeb22ff0@news.povray.org>
hi,

"Bald Eagle" <cre### [at] netscapenet> wrote:
> So, I've managed to trim down the number of errors that this gives me, but it
> looks like there are a few things that need to be ironed out.

:-)

> ...

> tried to compile:

ok, you know I don't speak this language (and man, is it ugly to read!), so I'm
... sticking my neck out.

> oem@oem-Inspiron-N5110 ~/Documents/POV-Ray-3.8/ThirdParty/jr/SVD/SVD $ c++
> SVD.cpp -std=c++11
> SVD.cpp: In function ‘int main(int, char**)’:
> SVD.cpp:350:68: error: expected primary-expression before ‘>’ token
>   std::cout << "Enter size of matrix N = (50x50 max): "; std::cin > >
> matrix_size;

a semicolon terminates a statement, the one before std::cin is the cause.

> SVD.cpp: In instantiation of ‘void svd(std::vector<std::vector<_RealType> >,
> std::vector<std::vector<_RealType> >&, std::vector<std::vector<_RealType> >&,
> std::vector<std::vector<_RealType> >&) [with Arg =
> boost::multiprecision::number<boost::multiprecision::backends::cpp_bin_float<4096u,
> (boost::multiprecision::backends::digit_base_type)2u, void, short int, -16382,
> 16383>, (boost::multiprecision::expression_template_option)0u>]’:
> SVD.cpp:358:22:   required from here
> SVD.cpp:31:18: error: ‘matrix_transpose’ was not declared in this scope, and no
> declarations were found by argument-dependent lookup at the point of
> instantiation [-fpermissive]
>   matrix_transpose(matrix, matrix_t);
>                   ^

and from here on it looks like complaints about functions which are called but
not provided.  so presumably there's a library (like 'libm' for 'C' users) that
needs to be added to the command-line (to let the linker know).  hth.

good start though.


regards, jr.


Post a reply to this message

From: jr
Subject: Re: [Minimum Volume] Bounding Ellipsoid via SVD
Date: 5 Nov 2019 23:45:01
Message: <web.5dc208e5f7b9a3affeeb22ff0@news.povray.org>
"jr" <cre### [at] gmailcom> wrote:
> "Bald Eagle" <cre### [at] netscapenet> wrote:
> > So, I've managed to trim down the number of errors that this gives me, but it
> > looks like there are a few things that need to be ironed out.
> :-)
> > ...
> > declarations were found by argument-dependent lookup at the point of
> > instantiation [-fpermissive]
> >   matrix_transpose(matrix, matrix_t);
> >                   ^
> and from here on it looks like complaints about functions which are called but
> not provided.

looked a little closer at the stuff.  so, (best teacher's voice) "let the lesson
begin".  :-)

in C, as in C++, the compiler must "know" (from a prototype), or "have seen", a
function _before_ it can be used.  so the error messages will go away if you
re-order the functions.

conventionally, you read a c/c++ source from the bottom of the file (ie 'main'
in most cases) upwards, and programming follows that -- if you call some
function from main, it must have been actually provided or prototyped "above".


regards, jr.


Post a reply to this message

From: Bald Eagle
Subject: Re: [Minimum Volume] Bounding Ellipsoid via SVD
Date: 6 Nov 2019 00:25:01
Message: <web.5dc2128ff7b9a3af4eec112d0@news.povray.org>
"jr" <cre### [at] gmailcom> wrote:

> looked a little closer at the stuff.  so, (best teacher's voice) "let the lesson
> begin".  :-)

Super.  I had blithely assumed that anyone capable of writing the code would
write it so that it compiled properly, but the files that I downloaded
apparently don't work as written.

So I just moved the two big functions that require the smaller functions to the
bottom, and - voila.   a.out gets compiled.

Now to dubug the cause of so many nan's.

Enter size of matrix N = (50x50 max): 10

A =
1.00000 3.00000 8.00000 8.00000 5.00000 6.00000 0.00000 6.00000 9.00000 4.00000
7.00000 4.00000 3.00000 2.00000 2.00000 8.00000 3.00000 1.00000 1.00000 8.00000
4.00000 6.00000 9.00000 6.00000 9.00000 9.00000 1.00000 4.00000 6.00000 2.00000
6.00000 9.00000 7.00000 7.00000 7.00000 3.00000 5.00000 9.00000 1.00000 7.00000
3.00000 1.00000 1.00000 9.00000 5.00000 5.00000 7.00000 8.00000 7.00000 8.00000
6.00000 1.00000 4.00000 8.00000 9.00000 5.00000 9.00000 2.00000 9.00000 5.00000
5.00000 8.00000 6.00000 4.00000 5.00000 4.00000 9.00000 0.00000 3.00000 1.00000
7.00000 9.00000 4.00000 1.00000 0.00000 9.00000 6.00000 9.00000 7.00000 5.00000
7.00000 5.00000 7.00000 3.00000 3.00000 8.00000 0.00000 4.00000 1.00000 2.00000
9.00000 8.00000 0.00000 6.00000 2.00000 7.00000 2.00000 4.00000 9.00000 7.00000


S =
52.17460 nan nan nan nan nan nan nan nan nan
nan nan nan nan nan nan nan nan nan nan
nan nan nan nan nan nan nan nan nan nan
nan nan nan nan nan nan nan nan nan nan
nan nan nan nan nan nan nan nan nan nan
nan nan nan nan nan nan nan nan nan nan
nan nan nan nan nan nan nan nan nan nan
nan nan nan nan nan nan nan nan nan nan
nan nan nan nan nan nan nan nan nan nan
nan nan nan nan nan nan nan nan nan nan


U =
nan nan nan nan nan nan nan nan nan nan
nan nan nan nan nan nan nan nan nan nan
nan nan nan nan nan nan nan nan nan nan
nan nan nan nan nan nan nan nan nan nan
nan nan nan nan nan nan nan nan nan nan
nan nan nan nan nan nan nan nan nan nan
nan nan nan nan nan nan nan nan nan nan
nan nan nan nan nan nan nan nan nan nan
nan nan nan nan nan nan nan nan nan nan
nan nan nan nan nan nan nan nan nan nan


V =
0.32948 nan nan nan nan nan nan nan nan nan
0.32858 nan nan nan nan nan nan nan nan nan
0.29328 nan nan nan nan nan nan nan nan nan
0.33434 nan nan nan nan nan nan nan nan nan
0.29083 nan nan nan nan nan nan nan nan nan
0.38177 nan nan nan nan nan nan nan nan nan
0.25788 nan nan nan nan nan nan nan nan nan
0.29742 nan nan nan nan nan nan nan nan nan
0.33315 nan nan nan nan nan nan nan nan nan
0.29899 nan nan nan nan nan nan nan nan nan


Post a reply to this message

From: Bald Eagle
Subject: Re: [Minimum Volume] Bounding Ellipsoid via SVD
Date: 6 Nov 2019 01:10:00
Message: <web.5dc21d59f7b9a3af4eec112d0@news.povray.org>
I copied an pasted / modified the print_matrix () function into all of the other
functions, and puzzled out how to print out a vector ("list").

Got that to compile, and now we can step-by-step what happens, and where it goes
off the rails.   Looks like the trouble starts when trying to create the
Hermitian matrix.

In any event, this is way farther along than I'd thought I'd be by now...   :)

I suppose I need to dump everything to a text file, rather than to std::cout <<

Singular Value Decomposition (SVD):

Enter size of matrix N = (50x50 max): 10

A =
9.0 7.0 3.0 3.0 6.0 5.0 0.0 9.0 3.0 4.0
8.0 4.0 0.0 4.0 7.0 3.0 2.0 6.0 6.0 6.0
1.0 9.0 5.0 3.0 6.0 7.0 5.0 1.0 2.0 8.0
5.0 3.0 7.0 8.0 6.0 6.0 6.0 7.0 5.0 1.0
3.0 5.0 8.0 3.0 0.0 5.0 8.0 2.0 3.0 5.0
0.0 6.0 6.0 6.0 9.0 2.0 5.0 4.0 5.0 9.0
3.0 2.0 3.0 0.0 3.0 1.0 6.0 9.0 8.0 4.0
0.0 2.0 9.0 0.0 7.0 1.0 5.0 8.0 3.0 1.0
3.0 6.0 7.0 1.0 2.0 7.0 5.0 9.0 3.0 0.0
0.0 8.0 2.0 3.0 1.0 7.0 7.0 9.0 6.0 5.0


[matrix]transposed =
9.0 8.0 1.0 5.0 3.0 0.0 3.0 0.0 3.0 0.0
7.0 4.0 9.0 3.0 5.0 6.0 2.0 2.0 6.0 8.0
3.0 0.0 5.0 7.0 8.0 6.0 3.0 9.0 7.0 2.0
3.0 4.0 3.0 8.0 3.0 6.0 0.0 0.0 1.0 3.0
6.0 7.0 6.0 6.0 0.0 9.0 3.0 7.0 2.0 1.0
5.0 3.0 7.0 6.0 5.0 2.0 1.0 1.0 7.0 7.0
0.0 2.0 5.0 6.0 8.0 5.0 6.0 5.0 5.0 7.0
9.0 6.0 1.0 7.0 2.0 4.0 9.0 8.0 9.0 9.0
3.0 6.0 2.0 5.0 3.0 5.0 8.0 3.0 3.0 6.0
4.0 6.0 8.0 1.0 5.0 9.0 4.0 1.0 0.0 5.0


[matrices]multiplied =
315.0 265.0 214.0 259.0 167.0 229.0 194.0 173.0 230.0 231.0
265.0 266.0 195.0 234.0 147.0 235.0 194.0 142.0 169.0 206.0
214.0 195.0 295.0 224.0 220.0 281.0 148.0 159.0 196.0 242.0
259.0 234.0 224.0 330.0 222.0 266.0 209.0 219.0 252.0 250.0
167.0 147.0 220.0 222.0 234.0 214.0 158.0 157.0 200.0 217.0
229.0 235.0 281.0 266.0 214.0 340.0 201.0 212.0 192.0 247.0
194.0 194.0 148.0 209.0 158.0 201.0 229.0 183.0 190.0 223.0
173.0 142.0 159.0 219.0 157.0 212.0 183.0 234.0 202.0 178.0
230.0 169.0 196.0 252.0 200.0 192.0 190.0 202.0 263.0 250.0
231.0 206.0 242.0 250.0 217.0 247.0 223.0 178.0 250.0 318.0


[matrices]multiplied =
198.0 158.0 121.0 114.0 161.0 145.0 108.0 225.0 144.0 124.0
158.0 324.0 245.0 169.0 236.0 267.0 249.0 311.0 211.0 256.0
121.0 245.0 326.0 153.0 232.0 219.0 273.0 301.0 192.0 184.0
114.0 169.0 153.0 153.0 171.0 151.0 151.0 176.0 139.0 152.0
161.0 236.0 232.0 171.0 301.0 178.0 195.0 290.0 204.0 225.0
145.0 267.0 219.0 151.0 178.0 248.0 222.0 273.0 176.0 183.0
108.0 249.0 273.0 151.0 195.0 222.0 289.0 297.0 221.0 207.0
225.0 311.0 301.0 176.0 290.0 273.0 297.0 494.0 303.0 222.0
144.0 211.0 192.0 139.0 204.0 176.0 221.0 303.0 226.0 194.0
124.0 256.0 184.0 152.0 225.0 183.0 207.0 222.0 194.0 265.0


Eigenvectors =
0.7 1.2 1.1 0.8 1.1 1.0 1.1 1.5 1.0 1.0

Hermitian matrix =
1.4 nan nan nan nan nan nan nan nan nan
-1.7 1.0 nan nan nan nan nan nan nan nan
-1.5 nan 1.0 nan nan nan nan nan nan nan
-1.0 nan nan 1.0 nan nan nan nan nan nan
-1.5 nan nan nan 1.0 nan nan nan nan nan
-1.4 nan nan nan nan 1.0 nan nan nan nan
-1.5 nan nan nan nan nan 1.0 nan nan nan
-2.0 nan nan nan nan nan nan 1.0 nan nan
-1.4 nan nan nan nan nan nan nan 1.0 nan
-1.4 nan nan nan nan nan nan nan nan 1.0


[matrices]multiplied =
nan nan nan nan nan nan nan nan nan nan
nan nan nan nan nan nan nan nan nan nan
nan nan nan nan nan nan nan nan nan nan
nan nan nan nan nan nan nan nan nan nan
nan nan nan nan nan nan nan nan nan nan
nan nan nan nan nan nan nan nan nan nan
nan nan nan nan nan nan nan nan nan nan
nan nan nan nan nan nan nan nan nan nan
nan nan nan nan nan nan nan nan nan nan
nan nan nan nan nan nan nan nan nan nan


Hermitian matrix inverse =
0.7 nan nan nan nan nan nan nan nan nan
-1.2 1.0 nan nan nan nan nan nan nan nan
-1.1 nan 1.0 nan nan nan nan nan nan nan
-0.8 nan nan 1.0 nan nan nan nan nan nan
-1.1 nan nan nan 1.0 nan nan nan nan nan
-1.0 nan nan nan nan 1.0 nan nan nan nan
-1.1 nan nan nan nan nan 1.0 nan nan nan
-1.5 nan nan nan nan nan nan 1.0 nan nan
-1.0 nan nan nan nan nan nan nan 1.0 nan
-1.0 nan nan nan nan nan nan nan nan 1.0


[matrices]multiplied =
nan nan nan nan nan nan nan nan nan nan
nan nan nan nan nan nan nan nan nan nan
nan nan nan nan nan nan nan nan nan nan
nan nan nan nan nan nan nan nan nan nan
nan nan nan nan nan nan nan nan nan nan
nan nan nan nan nan nan nan nan nan nan
nan nan nan nan nan nan nan nan nan nan
nan nan nan nan nan nan nan nan nan nan
nan nan nan nan nan nan nan nan nan nan
nan nan nan nan nan nan nan nan nan nan


Reduced matrix =
nan nan nan nan nan nan nan nan nan
nan nan nan nan nan nan nan nan nan
nan nan nan nan nan nan nan nan nan
nan nan nan nan nan nan nan nan nan
nan nan nan nan nan nan nan nan nan
nan nan nan nan nan nan nan nan nan
nan nan nan nan nan nan nan nan nan
nan nan nan nan nan nan nan nan nan
nan nan nan nan nan nan nan nan nan


Eigenvectors =
nan nan nan nan nan nan nan nan 1.0

Hermitian matrix =
nan nan nan nan nan nan nan nan nan
nan 1.0 nan nan nan nan nan nan nan
nan nan 1.0 nan nan nan nan nan nan
nan nan nan 1.0 nan nan nan nan nan
nan nan nan nan 1.0 nan nan nan nan
nan nan nan nan nan 1.0 nan nan nan
nan nan nan nan nan nan 1.0 nan nan
nan nan nan nan nan nan nan 1.0 nan
nan nan nan nan nan nan nan nan 1.0


[matrices]multiplied =
nan nan nan nan nan nan nan nan nan
nan nan nan nan nan nan nan nan nan
nan nan nan nan nan nan nan nan nan
nan nan nan nan nan nan nan nan nan
nan nan nan nan nan nan nan nan nan
nan nan nan nan nan nan nan nan nan
nan nan nan nan nan nan nan nan nan
nan nan nan nan nan nan nan nan nan
nan nan nan nan nan nan nan nan nan


Hermitian matrix inverse =
nan nan nan nan nan nan nan nan nan
nan 1.0 nan nan nan nan nan nan nan
nan nan 1.0 nan nan nan nan nan nan
nan nan nan 1.0 nan nan nan nan nan
nan nan nan nan 1.0 nan nan nan nan
nan nan nan nan nan 1.0 nan nan nan
nan nan nan nan nan nan 1.0 nan nan
nan nan nan nan nan nan nan 1.0 nan
-1.0 nan nan nan nan nan nan nan 1.0


[matrices]multiplied =
nan nan nan nan nan nan nan nan nan
nan nan nan nan nan nan nan nan nan
nan nan nan nan nan nan nan nan nan
nan nan nan nan nan nan nan nan nan
nan nan nan nan nan nan nan nan nan
nan nan nan nan nan nan nan nan nan
nan nan nan nan nan nan nan nan nan
nan nan nan nan nan nan nan nan nan
nan nan nan nan nan nan nan nan nan


Reduced matrix =
nan nan nan nan nan nan nan nan
nan nan nan nan nan nan nan nan
nan nan nan nan nan nan nan nan
nan nan nan nan nan nan nan nan
nan nan nan nan nan nan nan nan
nan nan nan nan nan nan nan nan
nan nan nan nan nan nan nan nan
nan nan nan nan nan nan nan nan


Eigenvectors =
nan nan nan nan nan nan nan 1.0

Hermitian matrix =
nan nan nan nan nan nan nan nan
nan 1.0 nan nan nan nan nan nan
nan nan 1.0 nan nan nan nan nan
nan nan nan 1.0 nan nan nan nan
nan nan nan nan 1.0 nan nan nan
nan nan nan nan nan 1.0 nan nan
nan nan nan nan nan nan 1.0 nan
nan nan nan nan nan nan nan 1.0


[matrices]multiplied =
nan nan nan nan nan nan nan nan
nan nan nan nan nan nan nan nan
nan nan nan nan nan nan nan nan
nan nan nan nan nan nan nan nan
nan nan nan nan nan nan nan nan
nan nan nan nan nan nan nan nan
nan nan nan nan nan nan nan nan
nan nan nan nan nan nan nan nan


Hermitian matrix inverse =
nan nan nan nan nan nan nan nan
nan 1.0 nan nan nan nan nan nan
nan nan 1.0 nan nan nan nan nan
nan nan nan 1.0 nan nan nan nan
nan nan nan nan 1.0 nan nan nan
nan nan nan nan nan 1.0 nan nan
nan nan nan nan nan nan 1.0 nan
-1.0 nan nan nan nan nan nan 1.0


[matrices]multiplied =
nan nan nan nan nan nan nan nan
nan nan nan nan nan nan nan nan
nan nan nan nan nan nan nan nan
nan nan nan nan nan nan nan nan
nan nan nan nan nan nan nan nan
nan nan nan nan nan nan nan nan
nan nan nan nan nan nan nan nan
nan nan nan nan nan nan nan nan


Reduced matrix =
nan nan nan nan nan nan nan
nan nan nan nan nan nan nan
nan nan nan nan nan nan nan
nan nan nan nan nan nan nan
nan nan nan nan nan nan nan
nan nan nan nan nan nan nan
nan nan nan nan nan nan nan


Eigenvectors =
nan nan nan nan nan nan 1.0

Hermitian matrix =
nan nan nan nan nan nan nan
nan 1.0 nan nan nan nan nan
nan nan 1.0 nan nan nan nan
nan nan nan 1.0 nan nan nan
nan nan nan nan 1.0 nan nan
nan nan nan nan nan 1.0 nan
nan nan nan nan nan nan 1.0


[matrices]multiplied =
nan nan nan nan nan nan nan
nan nan nan nan nan nan nan
nan nan nan nan nan nan nan
nan nan nan nan nan nan nan
nan nan nan nan nan nan nan
nan nan nan nan nan nan nan
nan nan nan nan nan nan nan


Hermitian matrix inverse =
nan nan nan nan nan nan nan
nan 1.0 nan nan nan nan nan
nan nan 1.0 nan nan nan nan
nan nan nan 1.0 nan nan nan
nan nan nan nan 1.0 nan nan
nan nan nan nan nan 1.0 nan
-1.0 nan nan nan nan nan 1.0


[matrices]multiplied =
nan nan nan nan nan nan nan
nan nan nan nan nan nan nan
nan nan nan nan nan nan nan
nan nan nan nan nan nan nan
nan nan nan nan nan nan nan
nan nan nan nan nan nan nan
nan nan nan nan nan nan nan


Reduced matrix =
nan nan nan nan nan nan
nan nan nan nan nan nan
nan nan nan nan nan nan
nan nan nan nan nan nan
nan nan nan nan nan nan
nan nan nan nan nan nan


Eigenvectors =
nan nan nan nan nan 1.0

Hermitian matrix =
nan nan nan nan nan nan
nan 1.0 nan nan nan nan
nan nan 1.0 nan nan nan
nan nan nan 1.0 nan nan
nan nan nan nan 1.0 nan
nan nan nan nan nan 1.0


[matrices]multiplied =
nan nan nan nan nan nan
nan nan nan nan nan nan
nan nan nan nan nan nan
nan nan nan nan nan nan
nan nan nan nan nan nan
nan nan nan nan nan nan


Hermitian matrix inverse =
nan nan nan nan nan nan
nan 1.0 nan nan nan nan
nan nan 1.0 nan nan nan
nan nan nan 1.0 nan nan
nan nan nan nan 1.0 nan
-1.0 nan nan nan nan 1.0


[matrices]multiplied =
nan nan nan nan nan nan
nan nan nan nan nan nan
nan nan nan nan nan nan
nan nan nan nan nan nan
nan nan nan nan nan nan
nan nan nan nan nan nan


Reduced matrix =
nan nan nan nan nan
nan nan nan nan nan
nan nan nan nan nan
nan nan nan nan nan
nan nan nan nan nan


Eigenvectors =
nan nan nan nan 1.0

Hermitian matrix =
nan nan nan nan nan
nan 1.0 nan nan nan
nan nan 1.0 nan nan
nan nan nan 1.0 nan
nan nan nan nan 1.0


[matrices]multiplied =
nan nan nan nan nan
nan nan nan nan nan
nan nan nan nan nan
nan nan nan nan nan
nan nan nan nan nan


Hermitian matrix inverse =
nan nan nan nan nan
nan 1.0 nan nan nan
nan nan 1.0 nan nan
nan nan nan 1.0 nan
-1.0 nan nan nan 1.0


[matrices]multiplied =
nan nan nan nan nan
nan nan nan nan nan
nan nan nan nan nan
nan nan nan nan nan
nan nan nan nan nan


Reduced matrix =
nan nan nan nan
nan nan nan nan
nan nan nan nan
nan nan nan nan


Eigenvectors =
nan nan nan 1.0

Hermitian matrix =
nan nan nan nan
nan 1.0 nan nan
nan nan 1.0 nan
nan nan nan 1.0


[matrices]multiplied =
nan nan nan nan
nan nan nan nan
nan nan nan nan
nan nan nan nan


Hermitian matrix inverse =
nan nan nan nan
nan 1.0 nan nan
nan nan 1.0 nan
-1.0 nan nan 1.0


[matrices]multiplied =
nan nan nan nan
nan nan nan nan
nan nan nan nan
nan nan nan nan


Reduced matrix =
nan nan nan
nan nan nan
nan nan nan


Eigenvectors =
nan nan 1.0

Hermitian matrix =
nan nan nan
nan 1.0 nan
nan nan 1.0


[matrices]multiplied =
nan nan nan
nan nan nan
nan nan nan


Hermitian matrix inverse =
nan nan nan
nan 1.0 nan
-1.0 nan 1.0


[matrices]multiplied =
nan nan nan
nan nan nan
nan nan nan


Reduced matrix =
nan nan
nan nan


Eigenvectors =
nan 1.0

Hermitian matrix =
nan nan
nan 1.0


[matrices]multiplied =
nan nan
nan nan


Hermitian matrix inverse =
nan nan
-1.0 1.0


[matrices]multiplied =
nan nan
nan nan


Reduced matrix =
nan


Eigenvectors =
0.7 1.2 1.1 0.8 1.1 1.0 1.1 1.5 1.0 1.0

Eigenvectors =
nan nan nan nan nan nan nan nan nan 1.0

Eigenvectors =
nan nan nan nan nan nan nan nan nan 1.0

Eigenvectors =
nan nan nan nan nan nan nan nan nan 1.0

Eigenvectors =
nan nan nan nan nan nan nan nan nan 1.0

Eigenvectors =
nan nan nan nan nan nan nan nan nan 1.0

Eigenvectors =
nan nan nan nan nan nan nan nan nan 1.0

Eigenvectors =
nan nan nan nan nan nan nan nan nan 1.0

Eigenvectors =
nan nan nan nan nan nan nan nan nan 1.0

Eigenvectors =
nan nan nan nan nan nan nan nan nan 1.0

[matrix]transposed =
0.2 nan nan nan nan nan nan nan nan nan
0.4 nan nan nan nan nan nan nan nan nan
0.3 nan nan nan nan nan nan nan nan nan
0.2 nan nan nan nan nan nan nan nan nan
0.3 nan nan nan nan nan nan nan nan nan
0.3 nan nan nan nan nan nan nan nan nan
0.3 nan nan nan nan nan nan nan nan nan
0.4 nan nan nan nan nan nan nan nan nan
0.3 nan nan nan nan nan nan nan nan nan
0.3 nan nan nan nan nan nan nan nan nan


inverse diagonal matrix =
0.0 nan nan nan nan nan nan nan nan nan
nan nan nan nan nan nan nan nan nan nan
nan nan nan nan nan nan nan nan nan nan
nan nan nan nan nan nan nan nan nan nan
nan nan nan nan nan nan nan nan nan nan
nan nan nan nan nan nan nan nan nan nan
nan nan nan nan nan nan nan nan nan nan
nan nan nan nan nan nan nan nan nan nan
nan nan nan nan nan nan nan nan nan nan
nan nan nan nan nan nan nan nan nan nan


[matrices]multiplied =
15.5 nan nan nan nan nan nan nan nan nan
14.0 nan nan nan nan nan nan nan nan nan
14.8 nan nan nan nan nan nan nan nan nan
16.8 nan nan nan nan nan nan nan nan nan
13.1 nan nan nan nan nan nan nan nan nan
16.5 nan nan nan nan nan nan nan nan nan
13.0 nan nan nan nan nan nan nan nan nan
12.6 nan nan nan nan nan nan nan nan nan
14.5 nan nan nan nan nan nan nan nan nan
16.1 nan nan nan nan nan nan nan nan nan


[matrices]multiplied =
nan nan nan nan nan nan nan nan nan nan
nan nan nan nan nan nan nan nan nan nan
nan nan nan nan nan nan nan nan nan nan
nan nan nan nan nan nan nan nan nan nan
nan nan nan nan nan nan nan nan nan nan
nan nan nan nan nan nan nan nan nan nan
nan nan nan nan nan nan nan nan nan nan
nan nan nan nan nan nan nan nan nan nan
nan nan nan nan nan nan nan nan nan nan
nan nan nan nan nan nan nan nan nan nan


S =
46.7 nan nan nan nan nan nan nan nan nan
nan nan nan nan nan nan nan nan nan nan
nan nan nan nan nan nan nan nan nan nan
nan nan nan nan nan nan nan nan nan nan
nan nan nan nan nan nan nan nan nan nan
nan nan nan nan nan nan nan nan nan nan
nan nan nan nan nan nan nan nan nan nan
nan nan nan nan nan nan nan nan nan nan
nan nan nan nan nan nan nan nan nan nan
nan nan nan nan nan nan nan nan nan nan


U =
nan nan nan nan nan nan nan nan nan nan
nan nan nan nan nan nan nan nan nan nan
nan nan nan nan nan nan nan nan nan nan
nan nan nan nan nan nan nan nan nan nan
nan nan nan nan nan nan nan nan nan nan
nan nan nan nan nan nan nan nan nan nan
nan nan nan nan nan nan nan nan nan nan
nan nan nan nan nan nan nan nan nan nan
nan nan nan nan nan nan nan nan nan nan
nan nan nan nan nan nan nan nan nan nan


V =
0.2 nan nan nan nan nan nan nan nan nan
0.4 nan nan nan nan nan nan nan nan nan
0.3 nan nan nan nan nan nan nan nan nan
0.2 nan nan nan nan nan nan nan nan nan
0.3 nan nan nan nan nan nan nan nan nan
0.3 nan nan nan nan nan nan nan nan nan
0.3 nan nan nan nan nan nan nan nan nan
0.4 nan nan nan nan nan nan nan nan nan
0.3 nan nan nan nan nan nan nan nan nan
0.3 nan nan nan nan nan nan nan nan nan


Post a reply to this message

From: Bald Eagle
Subject: Re: [Minimum Volume] Bounding Ellipsoid via SVD
Date: 6 Nov 2019 02:40:00
Message: <web.5dc23255f7b9a3af4eec112d0@news.povray.org>
Looks like the nan values were because the matrix.resize operations didn't fill
in the new positions with 0.

Fixed it one way, until I needed to fix it another ;)

But now it runs without errors or nan entries.

So, now to see if any of this makes any sense in terms of processing a long list
of 3D vectors, and then plug it into the bounding ellipsoid code.

If this only processes square matrices, we'll probably need to use the gsl-bin
svd library to process the vectors.

But here we go  :)


Singular Value Decomposition (SVD):

Enter size of matrix N = (50x50 max): 10

A =
8.0 4.0 2.0 4.0 3.0 9.0 0.0 8.0 4.0 9.0
8.0 4.0 2.0 0.0 8.0 9.0 5.0 2.0 4.0 4.0
4.0 3.0 5.0 5.0 9.0 0.0 3.0 5.0 0.0 9.0
9.0 0.0 3.0 1.0 6.0 9.0 2.0 9.0 9.0 7.0
8.0 9.0 3.0 2.0 9.0 1.0 3.0 6.0 4.0 8.0
0.0 8.0 1.0 8.0 5.0 0.0 8.0 8.0 7.0 0.0
7.0 6.0 3.0 3.0 0.0 1.0 2.0 2.0 0.0 3.0
1.0 0.0 2.0 4.0 4.0 2.0 6.0 8.0 8.0 2.0
8.0 1.0 2.0 9.0 9.0 8.0 2.0 9.0 6.0 9.0
2.0 4.0 8.0 5.0 9.0 8.0 6.0 3.0 2.0 9.0


[matrix]transposed =
8.0 8.0 4.0 9.0 8.0 0.0 7.0 1.0 8.0 2.0
4.0 4.0 3.0 0.0 9.0 8.0 6.0 0.0 1.0 4.0
2.0 2.0 5.0 3.0 3.0 1.0 3.0 2.0 2.0 8.0
4.0 0.0 5.0 1.0 2.0 8.0 3.0 4.0 9.0 5.0
3.0 8.0 9.0 6.0 9.0 5.0 0.0 4.0 9.0 9.0
9.0 9.0 0.0 9.0 1.0 0.0 1.0 2.0 8.0 8.0
0.0 5.0 3.0 2.0 3.0 8.0 2.0 6.0 2.0 6.0
8.0 2.0 5.0 9.0 6.0 8.0 2.0 8.0 9.0 3.0
4.0 4.0 0.0 9.0 4.0 7.0 0.0 8.0 6.0 2.0
9.0 4.0 9.0 7.0 8.0 0.0 3.0 2.0 9.0 9.0


[matrices]multiplied =
351.0 257.0 222.0 352.0 286.0 173.0 150.0 172.0 384.0 280.0
257.0 290.0 187.0 299.0 262.0 158.0 121.0 148.0 304.0 272.0
222.0 187.0 271.0 224.0 276.0 178.0 119.0 146.0 303.0 280.0
352.0 299.0 224.0 423.0 298.0 192.0 127.0 231.0 415.0 293.0
286.0 262.0 276.0 298.0 365.0 236.0 168.0 174.0 342.0 291.0
173.0 158.0 178.0 192.0 236.0 331.0 107.0 222.0 257.0 211.0
150.0 121.0 119.0 127.0 168.0 107.0 121.0 61.0 152.0 130.0
172.0 148.0 146.0 231.0 174.0 222.0 61.0 209.0 250.0 184.0
384.0 304.0 303.0 415.0 342.0 257.0 152.0 250.0 497.0 358.0
280.0 272.0 280.0 293.0 291.0 211.0 130.0 184.0 358.0 384.0


[matrices]multiplied =
407.0 206.0 158.0 184.0 344.0 322.0 142.0 329.0 237.0 380.0
206.0 239.0 118.0 160.0 237.0 127.0 158.0 206.0 138.0 214.0
158.0 118.0 133.0 125.0 215.0 153.0 118.0 162.0 106.0 219.0
184.0 160.0 125.0 241.0 263.0 170.0 165.0 276.0 185.0 247.0
344.0 237.0 215.0 263.0 474.0 314.0 242.0 373.0 273.0 424.0
322.0 127.0 153.0 170.0 314.0 377.0 144.0 291.0 237.0 339.0
142.0 158.0 118.0 165.0 242.0 144.0 191.0 213.0 178.0 175.0
329.0 206.0 162.0 276.0 373.0 291.0 213.0 432.0 325.0 366.0
237.0 138.0 106.0 185.0 273.0 237.0 178.0 325.0 282.0 235.0
380.0 214.0 219.0 247.0 424.0 339.0 175.0 366.0 235.0 466.0


Eigenvectors =
0.9 0.6 0.5 0.6 1.0 0.8 0.5 1.0 0.7 1.0

Hermitian matrix =
1.1 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0
-0.6 1.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0
-0.5 0.0 1.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0
-0.7 0.0 0.0 1.0 0.0 0.0 0.0 0.0 0.0 0.0
-1.1 0.0 0.0 0.0 1.0 0.0 0.0 0.0 0.0 0.0
-0.9 0.0 0.0 0.0 0.0 1.0 0.0 0.0 0.0 0.0
-0.6 0.0 0.0 0.0 0.0 0.0 1.0 0.0 0.0 0.0
-1.1 0.0 0.0 0.0 0.0 0.0 0.0 1.0 0.0 0.0
-0.8 0.0 0.0 0.0 0.0 0.0 0.0 0.0 1.0 0.0
-1.1 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 1.0


[matrices]multiplied =
458.9 232.3 178.2 207.5 387.9 363.1 160.1 371.0 267.2 428.5
-53.3 107.8 17.3 42.8 17.9 -78.1 67.5 -3.6 -13.0 -28.1
-63.0 6.1 47.2 25.1 28.2 -21.9 40.9 -16.7 -22.7 12.6
-110.0 11.2 10.9 108.1 14.5 -62.6 62.4 38.3 13.8 -27.5
-123.7 0.3 33.5 51.6 78.7 -56.0 78.8 -5.0 0.7 -12.6
-49.5 -61.0 8.8 2.1 0.0 83.1 14.4 -9.3 20.7 -7.9
-105.1 33.0 22.1 53.3 33.2 -51.5 104.8 13.3 34.1 -55.7
-111.2 -16.8 -8.9 77.0 0.9 -57.3 59.4 76.2 68.7 -45.0
-87.1 -26.1 -19.8 38.5 -1.0 -19.4 64.9 63.0 93.3 -67.6
-78.9 -18.3 40.8 39.5 36.1 -24.1 14.9 -5.0 -32.2 37.5


Hermitian matrix inverse =
0.9 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0
-0.6 1.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0
-0.5 0.0 1.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0
-0.6 0.0 0.0 1.0 0.0 0.0 0.0 0.0 0.0 0.0
-1.0 0.0 0.0 0.0 1.0 0.0 0.0 0.0 0.0 0.0
-0.8 0.0 0.0 0.0 0.0 1.0 0.0 0.0 0.0 0.0
-0.5 0.0 0.0 0.0 0.0 0.0 1.0 0.0 0.0 0.0
-1.0 0.0 0.0 0.0 0.0 0.0 0.0 1.0 0.0 0.0
-0.7 0.0 0.0 0.0 0.0 0.0 0.0 0.0 1.0 0.0
-1.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 1.0


[matrices]multiplied =
-1691.4 232.3 178.2 207.5 387.9 363.1 160.1 371.0 267.2 428.5
-94.5 107.8 17.3 42.8 17.9 -78.1 67.5 -3.6 -13.0 -28.1
-111.8 6.1 47.2 25.1 28.2 -21.9 40.9 -16.7 -22.7 12.6
-195.1 11.2 10.9 108.1 14.5 -62.6 62.4 38.3 13.8 -27.5
-219.3 0.3 33.5 51.6 78.7 -56.0 78.8 -5.0 0.7 -12.6
-87.8 -61.0 8.8 2.1 0.0 83.1 14.4 -9.3 20.7 -7.9
-186.3 33.0 22.1 53.3 33.2 -51.5 104.8 13.3 34.1 -55.7
-197.3 -16.8 -8.9 77.0 0.9 -57.3 59.4 76.2 68.7 -45.0
-154.5 -26.1 -19.8 38.5 -1.0 -19.4 64.9 63.0 93.3 -67.6
-140.0 -18.3 40.8 39.5 36.1 -24.1 14.9 -5.0 -32.2 37.5


Reduced matrix =
107.8 17.3 42.8 17.9 -78.1 67.5 -3.6 -13.0 -28.1
6.1 47.2 25.1 28.2 -21.9 40.9 -16.7 -22.7 12.6
11.2 10.9 108.1 14.5 -62.6 62.4 38.3 13.8 -27.5
0.3 33.5 51.6 78.7 -56.0 78.8 -5.0 0.7 -12.6
-61.0 8.8 2.1 0.0 83.1 14.4 -9.3 20.7 -7.9
33.0 22.1 53.3 33.2 -51.5 104.8 13.3 34.1 -55.7
-16.8 -8.9 77.0 0.9 -57.3 59.4 76.2 68.7 -45.0
-26.1 -19.8 38.5 -1.0 -19.4 64.9 63.0 93.3 -67.6
-18.3 40.8 39.5 36.1 -24.1 14.9 -5.0 -32.2 37.5


Eigenvectors =
3.2 1.3 3.7 3.1 -0.6 3.8 3.6 2.9 1.0

Hermitian matrix =
0.3 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0
-0.4 1.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0
-1.1 0.0 1.0 0.0 0.0 0.0 0.0 0.0 0.0
-1.0 0.0 0.0 1.0 0.0 0.0 0.0 0.0 0.0
0.2 0.0 0.0 0.0 1.0 0.0 0.0 0.0 0.0
-1.2 0.0 0.0 0.0 0.0 1.0 0.0 0.0 0.0
-1.1 0.0 0.0 0.0 0.0 0.0 1.0 0.0 0.0
-0.9 0.0 0.0 0.0 0.0 0.0 0.0 1.0 0.0
-0.3 0.0 0.0 0.0 0.0 0.0 0.0 0.0 1.0


[matrices]multiplied =
33.2 5.3 13.2 5.5 -24.0 20.8 -1.1 -4.0 -8.6
-35.9 40.4 8.4 21.2 8.6 14.6 -15.3 -17.6 23.6
-110.8 -8.8 59.7 -5.7 25.8 -14.0 42.4 28.5 4.3
-103.9 16.7 10.2 61.5 19.6 13.5 -1.6 13.2 14.5
-39.8 12.2 10.5 3.5 67.7 27.7 -10.0 18.1 -13.4
-93.8 1.7 3.0 12.2 40.4 25.4 17.5 49.4 -22.6
-137.3 -28.3 29.2 -19.0 30.1 -16.1 80.2 83.2 -13.6
-120.8 -35.1 0.9 -16.6 49.2 5.6 66.1 104.7 -42.9
-51.4 35.5 26.4 30.6 -0.0 -5.9 -3.9 -28.2 46.2


Hermitian matrix inverse =
3.2 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0
-1.3 1.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0
-3.7 0.0 1.0 0.0 0.0 0.0 0.0 0.0 0.0
-3.1 0.0 0.0 1.0 0.0 0.0 0.0 0.0 0.0
0.6 0.0 0.0 0.0 1.0 0.0 0.0 0.0 0.0
-3.8 0.0 0.0 0.0 0.0 1.0 0.0 0.0 0.0
-3.6 0.0 0.0 0.0 0.0 0.0 1.0 0.0 0.0
-2.9 0.0 0.0 0.0 0.0 0.0 0.0 1.0 0.0
-1.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 1.0


[matrices]multiplied =
-35.4 5.3 13.2 5.5 -24.0 20.8 -1.1 -4.0 -8.6
-233.3 40.4 8.4 21.2 8.6 14.6 -15.3 -17.6 23.6
-720.1 -8.8 59.7 -5.7 25.8 -14.0 42.4 28.5 4.3
-675.3 16.7 10.2 61.5 19.6 13.5 -1.6 13.2 14.5
-258.9 12.2 10.5 3.5 67.7 27.7 -10.0 18.1 -13.4
-609.5 1.7 3.0 12.2 40.4 25.4 17.5 49.4 -22.6
-892.2 -28.3 29.2 -19.0 30.1 -16.1 80.2 83.2 -13.6
-785.0 -35.1 0.9 -16.6 49.2 5.6 66.1 104.7 -42.9
-334.3 35.5 26.4 30.6 -0.0 -5.9 -3.9 -28.2 46.2


Reduced matrix =
40.4 8.4 21.2 8.6 14.6 -15.3 -17.6 23.6
-8.8 59.7 -5.7 25.8 -14.0 42.4 28.5 4.3
16.7 10.2 61.5 19.6 13.5 -1.6 13.2 14.5
12.2 10.5 3.5 67.7 27.7 -10.0 18.1 -13.4
1.7 3.0 12.2 40.4 25.4 17.5 49.4 -22.6
-28.3 29.2 -19.0 30.1 -16.1 80.2 83.2 -13.6
-35.1 0.9 -16.6 49.2 5.6 66.1 104.7 -42.9
35.5 26.4 30.6 -0.0 -5.9 -3.9 -28.2 46.2


Eigenvectors =
0.8 -3.8 -1.5 -1.8 -3.7 -6.8 -7.4 1.0

Hermitian matrix =
1.2 0.0 0.0 0.0 0.0 0.0 0.0 0.0
4.5 1.0 0.0 0.0 0.0 0.0 0.0 0.0
1.7 0.0 1.0 0.0 0.0 0.0 0.0 0.0
2.1 0.0 0.0 1.0 0.0 0.0 0.0 0.0
4.4 0.0 0.0 0.0 1.0 0.0 0.0 0.0
8.0 0.0 0.0 0.0 0.0 1.0 0.0 0.0
8.7 0.0 0.0 0.0 0.0 0.0 1.0 0.0
-1.2 0.0 0.0 0.0 0.0 0.0 0.0 1.0


[matrices]multiplied =
47.9 9.9 25.1 10.2 17.2 -18.1 -20.9 27.9
173.3 97.5 89.9 64.6 51.5 -26.3 -51.0 110.5
86.2 24.6 97.9 34.3 38.5 -27.8 -17.1 55.1
98.9 28.5 49.0 86.2 58.9 -42.7 -19.7 37.2
180.6 40.1 106.1 78.5 89.7 -50.0 -28.7 81.7
296.1 96.5 151.2 99.0 100.6 -42.3 -58.4 175.6
317.3 74.0 168.3 124.2 132.3 -66.9 -49.1 162.6
-12.4 16.4 5.5 -10.2 -23.1 14.2 -7.3 18.2


Hermitian matrix inverse =
0.8 0.0 0.0 0.0 0.0 0.0 0.0 0.0
3.8 1.0 0.0 0.0 0.0 0.0 0.0 0.0
1.5 0.0 1.0 0.0 0.0 0.0 0.0 0.0
1.8 0.0 0.0 1.0 0.0 0.0 0.0 0.0
3.7 0.0 0.0 0.0 1.0 0.0 0.0 0.0
6.8 0.0 0.0 0.0 0.0 1.0 0.0 0.0
7.4 0.0 0.0 0.0 0.0 0.0 1.0 0.0
-1.0 0.0 0.0 0.0 0.0 0.0 0.0 1.0


[matrices]multiplied =
-106.6 9.9 25.1 10.2 17.2 -18.1 -20.9 27.9
292.7 97.5 89.9 64.6 51.5 -26.3 -51.0 110.5
145.5 24.6 97.9 34.3 38.5 -27.8 -17.1 55.1
167.0 28.5 49.0 86.2 58.9 -42.7 -19.7 37.2
305.0 40.1 106.1 78.5 89.7 -50.0 -28.7 81.7
500.0 96.5 151.2 99.0 100.6 -42.3 -58.4 175.6
535.9 74.0 168.3 124.2 132.3 -66.9 -49.1 162.6
-20.9 16.4 5.5 -10.2 -23.1 14.2 -7.3 18.2


Reduced matrix =
97.5 89.9 64.6 51.5 -26.3 -51.0 110.5
24.6 97.9 34.3 38.5 -27.8 -17.1 55.1
28.5 49.0 86.2 58.9 -42.7 -19.7 37.2
40.1 106.1 78.5 89.7 -50.0 -28.7 81.7
96.5 151.2 99.0 100.6 -42.3 -58.4 175.6
74.0 168.3 124.2 132.3 -66.9 -49.1 162.6
16.4 5.5 -10.2 -23.1 14.2 -7.3 18.2


Eigenvectors =
45.4 27.6 25.3 43.8 72.1 75.5 1.0

Hermitian matrix =
0.0 0.0 0.0 0.0 0.0 0.0 0.0
-0.6 1.0 0.0 0.0 0.0 0.0 0.0
-0.6 0.0 1.0 0.0 0.0 0.0 0.0
-1.0 0.0 0.0 1.0 0.0 0.0 0.0
-1.6 0.0 0.0 0.0 1.0 0.0 0.0
-1.7 0.0 0.0 0.0 0.0 1.0 0.0
-0.0 0.0 0.0 0.0 0.0 0.0 1.0


[matrices]multiplied =
2.1 2.0 1.4 1.1 -0.6 -1.1 2.4
-34.7 43.2 -5.0 7.2 -11.8 13.9 -12.2
-25.8 -1.0 50.2 30.2 -28.1 8.7 -24.3
-54.0 19.3 16.1 40.0 -24.6 20.6 -25.0
-58.2 8.5 -3.5 18.9 -0.5 22.5 0.1
-88.1 18.8 16.8 46.7 -23.1 35.7 -21.2
14.3 3.5 -11.6 -24.3 14.8 -6.2 15.8


Hermitian matrix inverse =
45.4 0.0 0.0 0.0 0.0 0.0 0.0
-27.6 1.0 0.0 0.0 0.0 0.0 0.0
-25.3 0.0 1.0 0.0 0.0 0.0 0.0
-43.8 0.0 0.0 1.0 0.0 0.0 0.0
-72.1 0.0 0.0 0.0 1.0 0.0 0.0
-75.5 0.0 0.0 0.0 0.0 1.0 0.0
-1.0 0.0 0.0 0.0 0.0 0.0 1.0


[matrices]multiplied =
81.2 2.0 1.4 1.1 -0.6 -1.1 2.4
-3151.5 43.2 -5.0 7.2 -11.8 13.9 -12.2
-2341.1 -1.0 50.2 30.2 -28.1 8.7 -24.3
-4899.1 19.3 16.1 40.0 -24.6 20.6 -25.0
-5285.4 8.5 -3.5 18.9 -0.5 22.5 0.1
-7997.8 18.8 16.8 46.7 -23.1 35.7 -21.2
1295.9 3.5 -11.6 -24.3 14.8 -6.2 15.8


Reduced matrix =
43.2 -5.0 7.2 -11.8 13.9 -12.2
-1.0 50.2 30.2 -28.1 8.7 -24.3
19.3 16.1 40.0 -24.6 20.6 -25.0
8.5 -3.5 18.9 -0.5 22.5 0.1
18.8 16.8 46.7 -23.1 35.7 -21.2
3.5 -11.6 -24.3 14.8 -6.2 15.8


Eigenvectors =
-0.9 -2.1 -2.1 -1.2 -2.8 1.0

Hermitian matrix =
-1.1 0.0 0.0 0.0 0.0 0.0
-2.2 1.0 0.0 0.0 0.0 0.0
-2.3 0.0 1.0 0.0 0.0 0.0
-1.2 0.0 0.0 1.0 0.0 0.0
-3.0 0.0 0.0 0.0 1.0 0.0
1.1 0.0 0.0 0.0 0.0 1.0


[matrices]multiplied =
-46.5 5.4 -7.7 12.7 -15.0 13.2
-97.2 61.3 14.2 -1.9 -22.4 2.9
-80.6 27.6 23.4 2.6 -11.7 3.3
-45.4 2.8 9.9 14.2 5.1 15.4
-110.0 31.6 25.3 12.0 -5.9 15.3
50.0 -17.0 -16.5 2.1 8.8 2.6


Hermitian matrix inverse =
-0.9 0.0 0.0 0.0 0.0 0.0
2.1 1.0 0.0 0.0 0.0 0.0
2.1 0.0 1.0 0.0 0.0 0.0
1.2 0.0 0.0 1.0 0.0 0.0
2.8 0.0 0.0 0.0 1.0 0.0
-1.0 0.0 0.0 0.0 0.0 1.0


[matrices]multiplied =
-2.3 5.4 -7.7 12.7 -15.0 13.2
180.5 61.3 14.2 -1.9 -22.4 2.9
149.7 27.6 23.4 2.6 -11.7 3.3
84.4 2.8 9.9 14.2 5.1 15.4
204.2 31.6 25.3 12.0 -5.9 15.3
-92.9 -17.0 -16.5 2.1 8.8 2.6


Reduced matrix =
61.3 14.2 -1.9 -22.4 2.9
27.6 23.4 2.6 -11.7 3.3
2.8 9.9 14.2 5.1 15.4
31.6 25.3 12.0 -5.9 15.3
-17.0 -16.5 2.1 8.8 2.6


Eigenvectors =
-2.4 -1.5 -0.4 -1.8 1.0

Hermitian matrix =
-0.4 0.0 0.0 0.0 0.0
-0.6 1.0 0.0 0.0 0.0
-0.2 0.0 1.0 0.0 0.0
-0.7 0.0 0.0 1.0 0.0
0.4 0.0 0.0 0.0 1.0


[matrices]multiplied =
-25.4 -5.9 0.8 9.3 -1.2
-11.0 14.5 3.8 2.4 1.5
-7.7 7.5 14.5 8.9 14.9
-14.2 14.7 13.4 10.9 13.1
8.4 -10.6 1.3 -0.5 3.8


Hermitian matrix inverse =
-2.4 0.0 0.0 0.0 0.0
1.5 1.0 0.0 0.0 0.0
0.4 0.0 1.0 0.0 0.0
1.8 0.0 0.0 1.0 0.0
-1.0 0.0 0.0 0.0 1.0


[matrices]multiplied =
70.6 -5.9 0.8 9.3 -1.2
52.8 14.5 3.8 2.4 1.5
36.9 7.5 14.5 8.9 14.9
68.6 14.7 13.4 10.9 13.1
-40.6 -10.6 1.3 -0.5 3.8


Reduced matrix =
14.5 3.8 2.4 1.5
7.5 14.5 8.9 14.9
14.7 13.4 10.9 13.1
-10.6 1.3 -0.5 3.8


Eigenvectors =
-2.4 -4.4 -5.3 1.0

Hermitian matrix =
-0.4 0.0 0.0 0.0
-1.8 1.0 0.0 0.0
-2.2 0.0 1.0 0.0
0.4 0.0 0.0 1.0


[matrices]multiplied =
-6.0 -1.6 -1.0 -0.6
-18.8 7.6 4.6 12.3
-17.3 5.0 5.6 9.9
-4.6 2.9 0.5 4.4


Hermitian matrix inverse =
-2.4 0.0 0.0 0.0
4.4 1.0 0.0 0.0
5.3 0.0 1.0 0.0
-1.0 0.0 0.0 1.0


[matrices]multiplied =
2.9 -1.6 -1.0 -0.6
90.3 7.6 4.6 12.3
82.9 5.0 5.6 9.9
22.1 2.9 0.5 4.4


Reduced matrix =
7.6 4.6 12.3
5.0 5.6 9.9
2.9 0.5 4.4


Eigenvectors =
3.2 2.7 1.0

Hermitian matrix =
0.3 0.0 0.0
-0.8 1.0 0.0
-0.3 0.0 1.0


[matrices]multiplied =
2.4 1.4 3.8
-1.4 1.8 -0.4
0.6 -0.9 0.6


Hermitian matrix inverse =
3.2 0.0 0.0
-2.7 1.0 0.0
-1.0 0.0 1.0


[matrices]multiplied =
0.0 1.4 3.8
-8.7 1.8 -0.4
3.6 -0.9 0.6


Reduced matrix =
1.8 -0.4
-0.9 0.6


Eigenvectors =
-1.6 1.0

Hermitian matrix =
-0.6 0.0
0.6 1.0


[matrices]multiplied =
-1.1 0.3
0.2 0.4


Hermitian matrix inverse =
-1.6 0.0
-1.0 1.0


[matrices]multiplied =
1.5 0.3
-0.7 0.4


Reduced matrix =
0.4


Eigenvectors =
0.9 0.6 0.5 0.6 1.0 0.8 0.5 1.0 0.7 1.0

Eigenvectors =
1.4 -1.1 -0.0 -1.2 -0.3 1.7 -1.5 -0.7 -0.6 1.0

Eigenvectors =
0.2 1.4 0.9 -0.0 0.8 -0.9 0.0 -1.2 -1.8 1.0

Eigenvectors =
-3.1 -3.2 1.6 0.9 1.9 1.2 0.8 -0.8 -0.6 1.0

Eigenvectors =
0.0 -0.6 -0.2 1.2 -0.4 -1.1 -1.3 1.0 -0.5 1.0

Eigenvectors =
1.7 -3.8 -1.4 -7.9 8.1 -7.7 -0.9 1.5 3.4 1.0

Eigenvectors =
-0.6 0.1 2.3 -1.5 -1.8 -0.5 0.4 0.9 0.6 1.0

Eigenvectors =
-2.3 1.8 -1.3 -1.0 0.5 1.0 -1.4 0.6 0.3 1.0

Eigenvectors =
0.0 -0.8 -2.6 -1.5 -0.6 0.5 3.4 2.7 -3.6 1.0

Eigenvectors =
-0.0 -0.1 -0.6 0.1 -0.4 -0.3 0.5 -0.8 0.6 1.0

[matrix]transposed =
0.4 0.4 0.1 -0.6 0.0 0.1 -0.2 -0.6 0.0 -0.0
0.2 -0.3 0.4 -0.6 -0.2 -0.3 0.0 0.4 -0.1 -0.1
0.2 -0.0 0.3 0.3 -0.1 -0.1 0.6 -0.3 -0.4 -0.4
0.3 -0.4 -0.0 0.2 0.4 -0.5 -0.4 -0.3 -0.2 0.1
0.4 -0.1 0.3 0.3 -0.2 0.5 -0.5 0.1 -0.1 -0.3
0.3 0.5 -0.3 0.2 -0.4 -0.5 -0.1 0.2 0.1 -0.1
0.2 -0.4 0.0 0.1 -0.5 -0.1 0.1 -0.4 0.5 0.3
0.4 -0.2 -0.4 -0.1 0.4 0.1 0.3 0.2 0.4 -0.5
0.3 -0.2 -0.6 -0.1 -0.2 0.2 0.2 0.1 -0.5 0.4
0.4 0.3 0.3 0.2 0.4 0.1 0.3 0.3 0.2 0.6


inverse diagonal matrix =
0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0
0.0 0.1 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0
0.0 0.0 0.1 0.0 0.0 0.0 0.0 0.0 0.0 0.0
0.0 0.0 0.0 0.1 0.0 0.0 0.0 0.0 0.0 0.0
0.0 0.0 0.0 0.0 0.1 0.0 0.0 0.0 0.0 0.0
0.0 0.0 0.0 0.0 0.0 0.1 0.0 0.0 0.0 0.0
0.0 0.0 0.0 0.0 0.0 0.0 0.2 0.0 0.0 0.0
0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.3 0.0 0.0
0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.7 0.0
0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 1.6


[matrices]multiplied =
17.2 5.0 -1.6 -2.4 2.4 -3.1 1.0 1.8 0.6 0.0
15.0 3.6 0.5 -0.8 -6.8 0.5 -2.1 -0.5 0.5 0.0
14.3 -1.6 6.1 2.7 3.6 2.4 0.1 -0.8 0.7 -0.2
18.8 5.0 -6.1 -0.6 -0.7 2.1 1.8 -0.4 -0.4 -0.3
17.4 -1.5 5.1 -4.6 -0.1 3.5 0.2 1.4 -0.4 0.2
13.0 -12.2 -2.1 -1.9 -1.1 -1.7 -0.8 0.7 -0.0 -0.2
8.0 -0.0 3.7 -5.2 0.3 -2.9 1.1 -2.6 -0.2 0.0
11.6 -5.5 -6.0 1.8 -0.2 1.4 1.7 -1.0 0.4 0.3
21.4 1.7 -2.7 1.9 3.9 -0.8 -3.2 -0.7 -0.4 0.1
17.4 -0.1 4.8 6.4 -2.7 -2.4 1.5 0.5 -0.4 0.0


[matrices]multiplied =
0.3 0.3 -0.1 -0.2 0.3 -0.4 0.2 0.5 0.4 0.1
0.3 0.2 0.0 -0.1 -0.7 0.1 -0.4 -0.1 0.4 0.0
0.3 -0.1 0.4 0.3 0.4 0.3 0.0 -0.2 0.5 -0.4
0.4 0.3 -0.4 -0.1 -0.1 0.3 0.3 -0.1 -0.3 -0.5
0.3 -0.1 0.4 -0.4 -0.0 0.5 0.0 0.3 -0.3 0.3
0.3 -0.8 -0.2 -0.2 -0.1 -0.2 -0.2 0.2 -0.0 -0.4
0.2 -0.0 0.3 -0.5 0.0 -0.4 0.2 -0.7 -0.1 0.0
0.2 -0.3 -0.4 0.2 -0.0 0.2 0.3 -0.3 0.3 0.6
0.4 0.1 -0.2 0.2 0.4 -0.1 -0.6 -0.2 -0.3 0.2
0.3 -0.0 0.4 0.6 -0.3 -0.3 0.3 0.1 -0.3 0.1


S =
50.1 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0
0.0 15.8 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0
0.0 0.0 13.7 0.0 0.0 0.0 0.0 0.0 0.0 0.0
0.0 0.0 0.0 10.7 0.0 0.0 0.0 0.0 0.0 0.0
0.0 0.0 0.0 0.0 9.4 0.0 0.0 0.0 0.0 0.0
0.0 0.0 0.0 0.0 0.0 7.2 0.0 0.0 0.0 0.0
0.0 0.0 0.0 0.0 0.0 0.0 5.1 0.0 0.0 0.0
0.0 0.0 0.0 0.0 0.0 0.0 0.0 3.9 0.0 0.0
0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 1.4 0.0
0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.6


U =
0.3 0.3 -0.1 -0.2 0.3 -0.4 0.2 0.5 0.4 0.1
0.3 0.2 0.0 -0.1 -0.7 0.1 -0.4 -0.1 0.4 0.0
0.3 -0.1 0.4 0.3 0.4 0.3 0.0 -0.2 0.5 -0.4
0.4 0.3 -0.4 -0.1 -0.1 0.3 0.3 -0.1 -0.3 -0.5
0.3 -0.1 0.4 -0.4 -0.0 0.5 0.0 0.3 -0.3 0.3
0.3 -0.8 -0.2 -0.2 -0.1 -0.2 -0.2 0.2 -0.0 -0.4
0.2 -0.0 0.3 -0.5 0.0 -0.4 0.2 -0.7 -0.1 0.0
0.2 -0.3 -0.4 0.2 -0.0 0.2 0.3 -0.3 0.3 0.6
0.4 0.1 -0.2 0.2 0.4 -0.1 -0.6 -0.2 -0.3 0.2
0.3 -0.0 0.4 0.6 -0.3 -0.3 0.3 0.1 -0.3 0.1


V =
0.4 0.4 0.1 -0.6 0.0 0.1 -0.2 -0.6 0.0 -0.0
0.2 -0.3 0.4 -0.6 -0.2 -0.3 0.0 0.4 -0.1 -0.1
0.2 -0.0 0.3 0.3 -0.1 -0.1 0.6 -0.3 -0.4 -0.4
0.3 -0.4 -0.0 0.2 0.4 -0.5 -0.4 -0.3 -0.2 0.1
0.4 -0.1 0.3 0.3 -0.2 0.5 -0.5 0.1 -0.1 -0.3
0.3 0.5 -0.3 0.2 -0.4 -0.5 -0.1 0.2 0.1 -0.1
0.2 -0.4 0.0 0.1 -0.5 -0.1 0.1 -0.4 0.5 0.3
0.4 -0.2 -0.4 -0.1 0.4 0.1 0.3 0.2 0.4 -0.5
0.3 -0.2 -0.6 -0.1 -0.2 0.2 0.2 0.1 -0.5 0.4
0.4 0.3 0.3 0.2 0.4 0.1 0.3 0.3 0.2 0.6


Post a reply to this message

From: jr
Subject: Re: [Minimum Volume] Bounding Ellipsoid via SVD
Date: 6 Nov 2019 10:15:00
Message: <web.5dc29cfbf7b9a3affeeb22ff0@news.povray.org>
hi,

"Bald Eagle" <cre### [at] netscapenet> wrote:
> Looks like the nan values were because the matrix.resize operations didn't fill
> in the new positions with 0.

another (valuable) lesson.  initialise all your vars, always.

> Fixed it one way, until I needed to fix it another ;)
> But now it runs without errors or nan entries.

great stuff.

> > I suppose I need to dump everything to a text file, rather than to std::cout ...

no urgent need, use the OS tools.  when you dump (CSV) values, you could:
  $ ./a.out {arg}  |  tee myfile.csv

'tee(1)' splits its input, displaying it _and_ writing it to file.


regards, jr


Post a reply to this message

From: Bald Eagle
Subject: Re: [Minimum Volume] Bounding Ellipsoid via SVD
Date: 6 Nov 2019 20:45:05
Message: <web.5dc32fa4f7b9a3af4eec112d0@news.povray.org>
"jr" <cre### [at] gmailcom> wrote:

> great stuff.

It is  :)

Even better is this computer graphics lesson on bounding boxes  :D

https://www.cs.tau.ac.il/~dcor/Graphics/cg-slides/3d_geometry_lesson2.pdf


> no urgent need, use the OS tools.  when you dump (CSV) values, you could:
>   $ ./a.out {arg}  |  tee myfile.csv
>
> 'tee(1)' splits its input, displaying it _and_ writing it to file.

Most excellent.

I'm going to work on creating a test data set, and try to  show the SVD results
and maybe implement the reorientation.

Given that the code generates a random matrix using

generate_matrix(matrix, matrix_size, matrix_size);

and then computes the svd via

svd(matrix, s, u, v);


Tell me, Master Yoda,

How do I take a file with the <x, y, z> vectors and read it into the compiled
program so that _that_ is now the "matrix" argument for the svd function call?

Should I supply a filename and loop down the rows, reading in x, y, and z?

or is the a way to just do some kind of OS command line thing, adding in a

std::cin >> matrix;      line?


Post a reply to this message

From: jr
Subject: Re: [Minimum Volume] Bounding Ellipsoid via SVD
Date: 6 Nov 2019 21:05:00
Message: <web.5dc33544f7b9a3affeeb22ff0@news.povray.org>
hi,

"Bald Eagle" <cre### [at] netscapenet> wrote:
> "jr" <cre### [at] gmailcom> wrote:
> > great stuff.
> It is  :)
>
> Even better is this computer graphics lesson on bounding boxes  :D
> https://www.cs.tau.ac.il/~dcor/Graphics/cg-slides/3d_geometry_lesson2.pdf

cheers.  I'll have a look at this tonight.

> ...
> I'm going to work on creating a test data set, and try to  show the SVD results
> and maybe implement the reorientation.
> Given that the code generates a random matrix using
>
> generate_matrix(matrix, matrix_size, matrix_size);
>
> and then computes the svd via
>
> svd(matrix, s, u, v);
>
> Tell me, Master Yoda,
>
> How do I take a file with the <x, y, z> vectors and read it into the compiled
> program so that _that_ is now the "matrix" argument for the svd function call?
>
> Should I supply a filename and loop down the rows, reading in x, y, and z?
>
> or is the a way to just do some kind of OS command line thing, adding in a
>
> std::cin >> matrix;      line?

the latter, I'm confident, although somewhat unsure of exact syntax.
suggestion: attach your working version of svd.cpp, so we talk same code.  I'll
play with it here to test; are the matrices filled just with floats?


regards, jr.


Post a reply to this message

From: Bald Eagle
Subject: Re: [Minimum Volume] Bounding Ellipsoid via SVD
Date: 6 Nov 2019 21:45:01
Message: <web.5dc33dd7f7b9a3af4eec112d0@news.povray.org>
"jr" <cre### [at] gmailcom> wrote:

> the latter, I'm confident, although somewhat unsure of exact syntax.

OK - I just usually search-engine my way to a solution   :)

> suggestion: attach your working version of svd.cpp, so we talk same code.  I'll
> play with it here to test; are the matrices filled just with floats?

Right on.
At the moment, my thoughts are:

1. the data must get read into a faux-matrix std::vector container, which I
suppose has to be created before assigning the data to it

2. it should have m rows - the number of vectors to process, and m columns - the
first 3 are x, y, and z, and all the remaining columns are zeros

Then hopefully I can use that lesson to apply the SVD output to the data in the
SDL scene.


There's hardly any data in the header file - I'm assuming that can just be added
to the top of the .cpp file to keep it all self-contained.


Post a reply to this message


Attachments:
Download 'svd_bw.cpp.txt' (14 KB)

Goto Latest 10 Messages Next 10 Messages >>>

Copyright 2003-2008 Persistence of Vision Raytracer Pty. Ltd.