Hi Chien,

Looking at those bugs, I hope the response is better
for mine.  It looks to me like this has been a
long-standing problem.  Thanks - MOD


--- Chien Yang <[EMAIL PROTECTED]> wrote:
> Michael,
>     Thanks for your bug report. I'll add your report
> to the existing SVD
> bug report we've received earlier.
>
> 4193466 GMatrix SVD does not work correctly for some
> cases.
>
>
> thanks,
>     Chien Yang
>     Java 3D, Sun Microsystems Inc.
>
>
> Michael Duffy wrote:
>
> >I don't believe the SVD implementation is working
> >properly.
> >
> >I ran a simple problem from Gil Strang's linear
> >algebra course
> >(http://web.mit.edu/18.06/www/Fall03/ps1.pdf,
> problem
> >3) that has a solution available using LU
> >decomposition.
> >
> >When I ran the problem using the LU solver (see
> >LUTest.java, attached) it gave the correct result.
> >
> >When I ran the problem using the SVD solver (see
> >SVDTest.java, attached) it did not give the correct
> >result.
> >
> >When I run the SVD solver for a matrix that isn't
> >square, I get the following exception:
> >
> >java.lang.ArrayIndexOutOfBoundsException: 2
> >        at
> >javax.vecmath.GMatrix.computeSVD(GMatrix.java:2055)
> >        at
> >javax.vecmath.GMatrix.SVD(GMatrix.java:1574)
> >        at SVDTest.main(SVDTest.java:107)
> >
> >Please advise. - MOD
> >
> >
> >
> >
> >
> >__________________________________
> >Do you Yahoo!?
> >The New Yahoo! Shopping - with improved product
> search
> >http://shopping.yahoo.com
> >
>
>------------------------------------------------------------------------
> >
> >import javax.vecmath.* ;
> >
> >public class LUTest
> >{
> >    // See
> >    public static final int nrows = 3;
> >    public static final int ncols = 3;
> >    public static final double [] aInput =
> >    {
> >        1,  1, 0,
> >        4,  6, 1,
> >        -2, 2, 0,
> >    };
> >    public static final double [] bInput =
> >    {
> >        1, 4, -10,
> >    };
> >
> >    public static void main (String[] args)
> >    {
> >        try
> >        {
> >            // Create the A matrix
> >            GMatrix a = new GMatrix(nrows, ncols,
> aInput);
> >            System.out.println("a: ");
> >            System.out.println(a);
> >
> >            // Perform LU decomposition
> >            GVector permutation = new
> GVector(nrows);
> >            int numExchanges = a.LUD(a,
> permutation);
> >
> >            // Create the RHS vector
> >            GVector b = new GVector(bInput);
> >            System.out.println("b:");
> >            System.out.println(b);
> >
> >            // Perform back substitution
> >            GVector x = new GVector(nrows);
> >            x.LUDBackSolve(a, b, permutation);
> >            System.out.println("result:");
> >            System.out.println(x);
> >        }
> >        catch (Exception e)
> >        {
> >            e.printStackTrace(System.err);
> >        }
> >    }
> >}
> >
> >
>
>------------------------------------------------------------------------
> >
> >import javax.vecmath.* ;
> >
> >public class SVDTest
> >{
> >// From http://web.mit.edu/18.06/www/Fall03/ps1.pdf
> >// Gil Strang's course Web site.
> >/*
> >    public static final int nrows = 3;
> >    public static final int ncols = 3;
> >    public static final double [] aInput =
> >    {
> >        1,  1, 0,
> >        4,  6, 1,
> >        -2, 2, 0,
> >    };
> >    public static final double [] bInput =
> >    {
> >        1, 4, -10,
> >    };
> >*/
> >/*
> >    public static final int nrows = 12;
> >    public static final int ncols = 11;
> >    public static final double[] aInput =
> >    {
> >        0,1,0,1,0,0,0,0,    0,  -58,    0,
> >        0,0,0,0,0,1,0,1,    0, -201,    0,
> >        0,1,1,1,0,0,0,0,    0,  -53,  -53,
> >        0,0,0,0,0,1,1,1,    0,  -52,  -52,
> >        0,0,0,1,0,0,0,0,    0,    0,    0,
> >        0,0,0,0,0,0,0,1,    0,    0,    0,
> >        0,0,1,1,0,0,0,0,    0,    0, -156,
> >        0,0,0,0,0,0,1,1,    0,    0,  -44,
> >        1,0,0,1,0,0,0,0, -263,    0,    0,
> >        0,0,0,0,1,0,0,1, -193,    0,    0,
> >        1,0,1,1,0,0,0,0, -259,    0, -259,
> >        0,0,0,0,1,0,1,1,  -45,    0,  -45,
> >    };
> >    public static final double[] bInput =
> >    {
> >
>
58.,201.,53.,52.,159.,181.,156.,44.,263.,193.,259.,45.
> >    };
> >*/
> >    // From
>
http://www.bluebit.gr/matrix/reference/SVD-Example.htm
> >    // Solution vector: x = { 4.089, 3.066, 2.163,
> }
> >/*
> >    public static final int nrows = 20;
> >    public static final int ncols = 3;
> >    public static final double[] aInput =
> >    {
> >        6, 5, 5,
> >        3, 3, 7,
> >        0, 7, 7,
> >        6, 0, 4,
> >        8, 7, 3,
> >        9, 8, 1,
> >        9, 3, 5,
> >        7, 0, 5,
> >        4, 3, 6,
> >        6, 2, 3,
> >        7, 7, 5,
> >        9, 8, 2,
> >        6, 9, 2,
> >        5, 1, 9,
> >        6, 0, 5,
> >        1, 1, 7,
> >        3, 0, 3,
> >        3, 3, 9,
> >        9, 4, 3,
> >        1, 1, 6,
> >    };
> >    public static final double[] bInput =
> >    {
> >        51, 37, 37, 33, 60, 64, 55, 40, 39, 38, 59,
> 65, 58, 43, 35, 24, 21, 39, 57, 20,
> >    };
> >*/
> >
> >
> >// From
>
http://cs.uakron.edu/~quesada/Courses/LinAlg/Projects/svdpaper.pdf
> >    public static final int nrows = 2;
> >    public static final int ncols = 3;
> >    public static final double [] aInput =
> >    {
> >        3, 2, 2,
> >        2, 3, -2,
> >    };
> >    public static final double [] bInput =
> >    {
> >        3, 2,
> >    };
> >
> >
> >    public static void main(String[] args)
> >    {
> >        try
> >        {
> >            // Create the A matrix
> >            GMatrix a = new GMatrix(nrows, ncols,
> aInput);
> >            System.out.println("a:");
> >            System.out.println(a);
> >
> >            // Perform the SVD
> >            GMatrix u = new GMatrix(nrows, nrows);
> >            GMatrix w = new GMatrix(nrows, ncols);
> >            GMatrix v = new GMatrix(ncols, ncols);
> >
> >            int rank  = a.SVD(u,w,v);
> >
> >            System.out.println("rank: " + rank);
> >            System.out.println("u:");
> >            System.out.println(u);
> >            System.out.println("v:");
> >            System.out.println(v);
> >            System.out.println("w:");
> >            System.out.println(w);
> >
> >            // Check to make sure that
> transpose(U)*U = identity
> >            GMatrix utranspose  = new GMatrix(u);
> >            utranspose.transpose();
> >            GMatrix udelta = new GMatrix(ncols,
> ncols);
> >            udelta.mul(utranspose, u);
> >            System.out.println("udelta:");
> >            System.out.println(udelta);
> >
> >            // Check to make sure that
> transpose(V)*V = identity
> >            GMatrix vtranspose  = new GMatrix(v);
> >            vtranspose.transpose();
> >            GMatrix vdelta = new GMatrix(ncols,
> ncols);
> >            vdelta.mul(vtranspose, v);
> >            System.out.println("vdelta:");
> >            System.out.println(vdelta);
> >
> >            // Create the RHS vector
> >            GVector b = new GVector(bInput);
> >            System.out.println("b:");
> >            System.out.println(b);
> >
> >            // Perform back substitution
> >            GVector x = new GVector(nrows);
> >            x.SVDBackSolve(u, w, v, b);
> >            System.out.println("result:");
> >            System.out.println(x);
> >        }
> >        catch (Exception e)
> >        {
> >            e.printStackTrace(System.err);
> >        }
> >    }
> >}
> >
> >
>
>
>
===========================================================================
> To unsubscribe, send email to [EMAIL PROTECTED]
> and include in the body
> of the message "signoff JAVA3D-INTEREST".  For
> general help, send email to
> [EMAIL PROTECTED] and include in the body of the
> message "help".
>


__________________________________
Do you Yahoo!?
The New Yahoo! Shopping - with improved product search
http://shopping.yahoo.com

===========================================================================
To unsubscribe, send email to [EMAIL PROTECTED] and include in the body
of the message "signoff JAVA3D-INTEREST".  For general help, send email to
[EMAIL PROTECTED] and include in the body of the message "help".

Reply via email to