Hi,
In my experiments, I have a system of linear equations in 12
variables. The 12 variables are essentially some context to my new
compression algorithm. I have many such equations.
They are of the form
a1c1 + a2c2 + a3c3 ... + a12c12 = B1
I will typically have 500 of such equations.
My equations will not have an exact solution, but I am trying to find
the closest (best) solution for the variables a1, a2... a12, such that
the B vector is a close approximation of the input.
I am trying to figure out what function in LAPACK I can use to
accomplish this. I beleive dgesv is incorrect since that will only
try to find the exact solution, which usually will not exist in my
data sets
B
|
|
0
|
|
|
|
Reply
|
byaarov (33)
|
6/6/2007 4:15:39 PM |
|
In article <1181146539.625101.321910@q19g2000prn.googlegroups.com>,
byaarov@yahoo.com writes:
>Hi,
>In my experiments, I have a system of linear equations in 12
>variables. The 12 variables are essentially some context to my new
>compression algorithm. I have many such equations.
>
>They are of the form
>
>a1c1 + a2c2 + a3c3 ... + a12c12 = B1
>
>I will typically have 500 of such equations.
>
>My equations will not have an exact solution, but I am trying to find
>the closest (best) solution for the variables a1, a2... a12, such that
>the B vector is a close approximation of the input.
>
>I am trying to figure out what function in LAPACK I can use to
>accomplish this. I beleive dgesv is incorrect since that will only
>try to find the exact solution, which usually will not exist in my
>data sets
>
>B
>
dgelss does exactly what you want
hth
peter
|
|
0
|
|
|
|
Reply
|
spellucci (464)
|
6/6/2007 4:51:43 PM
|
|
On Jun 6, 9:51 am, spellu...@fb04373.mathematik.tu-darmstadt.de (Peter
Spellucci) wrote:
> In article <1181146539.625101.321...@q19g2000prn.googlegroups.com>, byaa...@yahoo.com writes:
>
> >Hi,
> >In my experiments, I have a system of linear equations in 12
> >variables. The 12 variables are essentially some context to my new
> >compression algorithm. I have many such equations.
> >
> >They are of the form
> >
> >a1c1 + a2c2 + a3c3 ... + a12c12 = B1
> >
> >I will typically have 500 of such equations.
> >
> >My equations will not have an exact solution, but I am trying to find
> >the closest (best) solution for the variables a1, a2... a12, such that
> >the B vector is a close approximation of the input.
> >
> >I am trying to figure out what function in LAPACK I can use to
> >accomplish this. I beleive dgesv is incorrect since that will only
> >try to find the exact solution, which usually will not exist in my
> >data sets
> >
> >B
> >
>
> dgelss does exactly what you want
> hth
> peter
I played with dgelss a little bit after your post. I wasnt getting
the results I hoped for, so I inspected some of the output from
dgelss.
Even on simple equasions such as
a1c1 + a2C = C, where I have M such equasions (note that the constant
for the a2 variable is always the same as the RHS of the equasion),
dgelss would not find a proper solution, which in this case would be
simple a1 = 0.0 and a2 = 1.0
I must be missing something as to how this should work...
B
|
|
0
|
|
|
|
Reply
|
byaarov (33)
|
6/6/2007 7:34:22 PM
|
|
On Jun 6, 1:55 pm, glen herrmannsfeldt <g...@ugcs.caltech.edu> wrote:
> byaa...@yahoo.com wrote:
>
> (snip)
>
> > Even on simple equasions such as
> > a1c1 + a2C = C, where I have M such equasions (note that the constant
> > for the a2 variable is always the same as the RHS of the equasion),
> > dgelss would not find a proper solution, which in this case would be
> > simple a1 = 0.0 and a2 = 1.0
>
> It is usual to require the same number of equations as
> unknowns for systems of linear equations.
>
> In the case above, you have one equation and two unknowns.
>
> Your simple solution requires that c1 not be zero, and also
> the c1 not be C.
>
> It might be that singular value decomposition would solve these
> equations in the way you expect. SVD allows for a different
> number of equations from unknowns.
>
> -- glen
I should have been clear. In my case I have M equations with 2
unknowns. What I was trying to say is that in each equation, the
coefficient of the a2 variable is always equal to the RHS in each of
the M equations. I would have expected dgelsd to solve that properly.
B
|
|
0
|
|
|
|
Reply
|
byaarov (33)
|
6/6/2007 8:01:02 PM
|
|
In article <1181160062.294743.132630@d30g2000prg.googlegroups.com>,
byaarov@yahoo.com wrote:
> On Jun 6, 1:55 pm, glen herrmannsfeldt <g...@ugcs.caltech.edu> wrote:
> > byaa...@yahoo.com wrote:
> >
> > (snip)
> >
> > > Even on simple equasions such as
> > > a1c1 + a2C = C, where I have M such equasions (note that the constant
> > > for the a2 variable is always the same as the RHS of the equasion),
> > > dgelss would not find a proper solution, which in this case would be
> > > simple a1 = 0.0 and a2 = 1.0
> >
> > It is usual to require the same number of equations as
> > unknowns for systems of linear equations.
> >
> > In the case above, you have one equation and two unknowns.
> >
> > Your simple solution requires that c1 not be zero, and also
> > the c1 not be C.
> >
> > It might be that singular value decomposition would solve these
> > equations in the way you expect. SVD allows for a different
> > number of equations from unknowns.
> >
> > -- glen
>
> I should have been clear. In my case I have M equations with 2
> unknowns. What I was trying to say is that in each equation, the
> coefficient of the a2 variable is always equal to the RHS in each of
> the M equations. I would have expected dgelsd to solve that properly.
>
> B
For M > 1, a1 = 0, a2 = 1 will be a simultaneous solution of all the
equations, and very likely the only one.
|
|
0
|
|
|
|
Reply
|
virgil1 (14)
|
6/6/2007 8:14:05 PM
|
|
On Jun 6, 2:18 pm, glen herrmannsfeldt <g...@ugcs.caltech.edu> wrote:
> byaa...@yahoo.com wrote:
>
> (snip)
>
> >>>Even on simple equasions such as
> >>>a1c1 + a2C = C, where I have M such equasions (note that the constant
> >>>for the a2 variable is always the same as the RHS of the equasion),
> >>>dgelss would not find a proper solution, which in this case would be
> >>>simple a1 = 0.0 and a2 = 1.0
>
> (snip)
>
> > I should have been clear. In my case I have M equations with 2
> > unknowns. What I was trying to say is that in each equation, the
> > coefficient of the a2 variable is always equal to the RHS in each of
> > the M equations. I would have expected dgelsd to solve that properly.
>
> And you have M=2?
>
> If M is not 2 look at SVD.
>
> If M is 2, is the coefficient matrix singular? If it is,
> even if the simple answer above satisfies the equations, you
> won't get it from linear equation solvers. Consider
>
> 3x+y=1
> 6x+2y=2
>
> x=0, y=1 is a solution, but the matrix is singular and
> linear system solvers won't give that solution.
> Note that x=1, y=-2 is also a solution.
>
> -- glen
Hi Glen, yes I understand that there are other solutions... and that
may be the case in my system. However, the values for the variables
that dgelsd is returning does not correctly satisfy any of the input
equations.
Therefore my question is, since I know there exists atleast one best
solution that fully satisfies the equations, why is dgelsd still
chosing suboptimal answers?
B
|
|
0
|
|
|
|
Reply
|
byaarov (33)
|
6/6/2007 8:42:22 PM
|
|
On Jun 6, 1:42 pm, byaa...@yahoo.com wrote:
> On Jun 6, 2:18 pm, glen herrmannsfeldt <g...@ugcs.caltech.edu> wrote:
>
>
>
> > byaa...@yahoo.com wrote:
>
> > (snip)
>
> > >>>Even on simple equasions such as
> > >>>a1c1 + a2C = C, where I have M such equasions (note that the constant
> > >>>for the a2 variable is always the same as the RHS of the equasion),
> > >>>dgelss would not find a proper solution, which in this case would be
> > >>>simple a1 = 0.0 and a2 = 1.0
>
> > (snip)
>
> > > I should have been clear. In my case I have M equations with 2
> > > unknowns. What I was trying to say is that in each equation, the
> > > coefficient of the a2 variable is always equal to the RHS in each of
> > > the M equations. I would have expected dgelsd to solve that properly.
>
> > And you have M=2?
>
> > If M is not 2 look at SVD.
>
> > If M is 2, is the coefficient matrix singular? If it is,
> > even if the simple answer above satisfies the equations, you
> > won't get it from linear equation solvers. Consider
>
> > 3x+y=1
> > 6x+2y=2
>
> > x=0, y=1 is a solution, but the matrix is singular and
> > linear system solvers won't give that solution.
> > Note that x=1, y=-2 is also a solution.
>
> > -- glen
>
> Hi Glen, yes I understand that there are other solutions... and that
> may be the case in my system. However, the values for the variables
> that dgelsd is returning does not correctly satisfy any of the input
> equations.
>
> Therefore my question is, since I know there exists atleast one best
> solution that fully satisfies the equations, why is dgelsd still
> chosing suboptimal answers?
>
> B
I think I may have found my problem. dgelsd requires a 1D matrix for
the A matrix, not a 2D matrix.
|
|
0
|
|
|
|
Reply
|
byaarov (33)
|
6/6/2007 8:45:55 PM
|
|
byaarov@yahoo.com wrote:
(snip)
> Even on simple equasions such as
> a1c1 + a2C = C, where I have M such equasions (note that the constant
> for the a2 variable is always the same as the RHS of the equasion),
> dgelss would not find a proper solution, which in this case would be
> simple a1 = 0.0 and a2 = 1.0
It is usual to require the same number of equations as
unknowns for systems of linear equations.
In the case above, you have one equation and two unknowns.
Your simple solution requires that c1 not be zero, and also
the c1 not be C.
It might be that singular value decomposition would solve these
equations in the way you expect. SVD allows for a different
number of equations from unknowns.
-- glen
|
|
0
|
|
|
|
Reply
|
gah (12303)
|
6/6/2007 8:55:54 PM
|
|
byaarov@yahoo.com wrote:
(snip)
>>>Even on simple equasions such as
>>>a1c1 + a2C = C, where I have M such equasions (note that the constant
>>>for the a2 variable is always the same as the RHS of the equasion),
>>>dgelss would not find a proper solution, which in this case would be
>>>simple a1 = 0.0 and a2 = 1.0
(snip)
> I should have been clear. In my case I have M equations with 2
> unknowns. What I was trying to say is that in each equation, the
> coefficient of the a2 variable is always equal to the RHS in each of
> the M equations. I would have expected dgelsd to solve that properly.
And you have M=2?
If M is not 2 look at SVD.
If M is 2, is the coefficient matrix singular? If it is,
even if the simple answer above satisfies the equations, you
won't get it from linear equation solvers. Consider
3x+y=1
6x+2y=2
x=0, y=1 is a solution, but the matrix is singular and
linear system solvers won't give that solution.
Note that x=1, y=-2 is also a solution.
-- glen
|
|
0
|
|
|
|
Reply
|
gah (12303)
|
6/6/2007 9:18:35 PM
|
|
byaarov@yahoo.com wrote:
(snip on using dgelsd)
It is SVD! Ignore previous suggestions to use SVD.
> I think I may have found my problem. dgelsd requires a 1D matrix for
> the A matrix, not a 2D matrix.
No, it can be 2D but the LDA argument must equal the first
dimension of A, especially if it isn't M. You can do
DOUBLE PRECISION A(100,100),B(101,11),S(100),WORK(10000)
DOUBLE PRECISION RCOND
INTEGER IWORK(10000)
M=2
N=2
NRHS=1
LDA=100
LDB=101
NWORK=10000
A(1,1)=1.23
A(1,2)=2.34
A(2,1)=3.45
A(2,2)=4.56
B(1,1)=5.67
B(2,1)=6.78
RCOND=-1.
CALL DGELSD( M, N, NRHS, A, LDA, B, LDB, S, RCOND, RANK,
$ WORK, LWORK, IWORK, INFO )
-- glen
|
|
0
|
|
|
|
Reply
|
gah (12303)
|
6/6/2007 10:23:53 PM
|
|
On Jun 6, 3:23 pm, glen herrmannsfeldt <g...@ugcs.caltech.edu> wrote:
> byaa...@yahoo.com wrote:
>
> (snip on using dgelsd)
>
> It is SVD! Ignore previous suggestions to use SVD.
>
> > I think I may have found my problem. dgelsd requires a 1D matrix for
> > the A matrix, not a 2D matrix.
>
> No, it can be 2D but the LDA argument must equal the first
> dimension of A, especially if it isn't M. You can do
>
> DOUBLE PRECISION A(100,100),B(101,11),S(100),WORK(10000)
> DOUBLE PRECISION RCOND
> INTEGER IWORK(10000)
> M=2
> N=2
> NRHS=1
> LDA=100
> LDB=101
> NWORK=10000
> A(1,1)=1.23
> A(1,2)=2.34
> A(2,1)=3.45
> A(2,2)=4.56
> B(1,1)=5.67
> B(2,1)=6.78
> RCOND=-1.
> CALL DGELSD( M, N, NRHS, A, LDA, B, LDB, S, RCOND, RANK,
> $ WORK, LWORK, IWORK, INFO )
>
> -- glen
Hmm... Why do you have NRHS = 1 but have a 2D matrix for B in your
example?
|
|
0
|
|
|
|
Reply
|
byaarov (33)
|
6/6/2007 10:56:08 PM
|
|
On Jun 6, 3:23 pm, glen herrmannsfeldt <g...@ugcs.caltech.edu> wrote:
> byaa...@yahoo.com wrote:
>
> (snip on using dgelsd)
>
> It is SVD! Ignore previous suggestions to use SVD.
>
> > I think I may have found my problem. dgelsd requires a 1D matrix for
> > the A matrix, not a 2D matrix.
>
> No, it can be 2D but the LDA argument must equal the first
> dimension of A, especially if it isn't M. You can do
>
> DOUBLE PRECISION A(100,100),B(101,11),S(100),WORK(10000)
> DOUBLE PRECISION RCOND
> INTEGER IWORK(10000)
> M=2
> N=2
> NRHS=1
> LDA=100
> LDB=101
> NWORK=10000
> A(1,1)=1.23
> A(1,2)=2.34
> A(2,1)=3.45
> A(2,2)=4.56
> B(1,1)=5.67
> B(2,1)=6.78
> RCOND=-1.
> CALL DGELSD( M, N, NRHS, A, LDA, B, LDB, S, RCOND, RANK,
> $ WORK, LWORK, IWORK, INFO )
>
> -- glen
I am still having an issue... in my simplest case, I am doing the
following
In my equation AX = B,
my A matrix looks like this {0, -84, 0, -76}. My B matrix looks like
this {-84 -76}
I call dgelsd as follows
one = 1;
rank = 0;
rcond = -1;
lwork = 10000;
info = 0;
M = 2;
N = 2;
dgelsd_(&M, &N, &one, A, &m, B, &N, S, &rcond, &rank, work, &lwork,
iwork, &info)
The resulting B matrix looks like this: {0.497506..., 0.450124688}
That seems wrong to me...
|
|
0
|
|
|
|
Reply
|
byaarov (33)
|
6/6/2007 11:05:05 PM
|
|
On Jun 6, 5:26 pm, glen herrmannsfeldt <g...@ugcs.caltech.edu> wrote:
> byaa...@yahoo.com wrote:
>
> (snip)
>
>
>
> > I am still having an issue... in my simplest case, I am doing the
> > following
> > In my equation AX = B,
> > my A matrix looks like this {0, -84, 0, -76}. My B matrix looks like
> > this {-84 -76}
> > I call dgelsd as follows
> > one = 1;
> > rank = 0;
> > rcond = -1;
> > lwork = 10000;
> > info = 0;
> > M = 2;
> > N = 2;
> > dgelsd_(&M, &N, &one, A, &m, B, &N, S, &rcond, &rank, work, &lwork,
> > iwork, &info)
> > The resulting B matrix looks like this: {0.497506..., 0.450124688}
> > That seems wrong to me...
>
> In Fortran arrays are stored with the first subscript varying fastest,
> in C it is the other way around. Your {0, -84, 0, -76} then corresponds
> to the Fortran array elements A(1,1) A(2,1) A(1,2) A(2,2),
> where M is the dimension of the leftmost subscript, and N the rightmost.
>
> Does that help any?
>
> If you use 2D array in C, be sure to use real 2D arrays, not
> arrays of pointers to arrays.
>
> double a[100][100],b[100][100];
>
> where LDA will be the rightmost dimension in C.
>
> -- glen
Maybe if you can point me how to rearrange my code, that will give me
an example... the example below is not working as expected:
#include <stdio.h>
#include <f2c.h>
#include <blaswrap.h>
#include <clapack.h>
static double A[100][100], B[100][100], S[10000], work[10000], rcond;
static long int M, N, one, rank, lwork, info, iwork[30000], lda, ldb;
int main()
{
one = 1;
rank = 0;
rcond = -1;
lwork = 10000;
info = 0;
lda = 100;
ldb = 100;
M = 2;
N = 2;
A[0][0] = 0;
A[0][1] = -84;
A[1][0] = 0;
A[1][1] = -76;
B[0][0] = -84;
B[1][0] = -76;
dgelsd_(&M, &N, &one, A, &lda, B, &ldb, S, &rcond, &rank, work,
&lwork, iwork, &info);
}
|
|
0
|
|
|
|
Reply
|
byaarov (33)
|
6/6/2007 11:30:59 PM
|
|
byaarov@yahoo.com wrote:
(snip)
> I am still having an issue... in my simplest case, I am doing the
> following
> In my equation AX = B,
> my A matrix looks like this {0, -84, 0, -76}. My B matrix looks like
> this {-84 -76}
> I call dgelsd as follows
> one = 1;
> rank = 0;
> rcond = -1;
> lwork = 10000;
> info = 0;
> M = 2;
> N = 2;
> dgelsd_(&M, &N, &one, A, &m, B, &N, S, &rcond, &rank, work, &lwork,
> iwork, &info)
> The resulting B matrix looks like this: {0.497506..., 0.450124688}
> That seems wrong to me...
In Fortran arrays are stored with the first subscript varying fastest,
in C it is the other way around. Your {0, -84, 0, -76} then corresponds
to the Fortran array elements A(1,1) A(2,1) A(1,2) A(2,2),
where M is the dimension of the leftmost subscript, and N the rightmost.
Does that help any?
If you use 2D array in C, be sure to use real 2D arrays, not
arrays of pointers to arrays.
double a[100][100],b[100][100];
where LDA will be the rightmost dimension in C.
-- glen
|
|
0
|
|
|
|
Reply
|
gah (12303)
|
6/7/2007 12:26:01 AM
|
|
On Jun 6, 6:30 pm, byaa...@yahoo.com wrote:
> On Jun 6, 5:26 pm, glen herrmannsfeldt <g...@ugcs.caltech.edu> wrote:
>
>
>
>
>
> > byaa...@yahoo.com wrote:
>
> > (snip)
>
> > > I am still having an issue... in my simplest case, I am doing the
> > > following
> > > In my equation AX = B,
> > > my A matrix looks like this {0, -84, 0, -76}. My B matrix looks like
> > > this {-84 -76}
> > > I call dgelsd as follows
> > > one = 1;
> > > rank = 0;
> > > rcond = -1;
> > > lwork = 10000;
> > > info = 0;
> > > M = 2;
> > > N = 2;
> > > dgelsd_(&M, &N, &one, A, &m, B, &N, S, &rcond, &rank, work, &lwork,
> > > iwork, &info)
> > > The resulting B matrix looks like this: {0.497506..., 0.450124688}
> > > That seems wrong to me...
>
> > In Fortran arrays are stored with the first subscript varying fastest,
> > in C it is the other way around. Your {0, -84, 0, -76} then corresponds
> > to the Fortran array elements A(1,1) A(2,1) A(1,2) A(2,2),
> > where M is the dimension of the leftmost subscript, and N the rightmost.
>
> > Does that help any?
>
> > If you use 2D array in C, be sure to use real 2D arrays, not
> > arrays of pointers to arrays.
>
> > double a[100][100],b[100][100];
>
> > where LDA will be the rightmost dimension in C.
>
> > -- glen
>
> Maybe if you can point me how to rearrange my code, that will give me
> an example... the example below is not working as expected:
> #include <stdio.h>
> #include <f2c.h>
> #include <blaswrap.h>
> #include <clapack.h>
>
> static double A[100][100], B[100][100], S[10000], work[10000], rcond;
> static long int M, N, one, rank, lwork, info, iwork[30000], lda, ldb;
>
> int main()
> {
>
> one = 1;
> rank = 0;
> rcond = -1;
> lwork = 10000;
> info = 0;
> lda = 100;
> ldb = 100;
>
> M = 2;
> N = 2;
>
> A[0][0] = 0;
> A[0][1] = -84;
>
> A[1][0] = 0;
> A[1][1] = -76;
>
> B[0][0] = -84;
> B[1][0] = -76;
>
> dgelsd_(&M, &N, &one, A, &lda, B, &ldb, S, &rcond, &rank, work,
> &lwork, iwork, &info);
>
>
>
> }- Hide quoted text -
>
> - Show quoted text -- Hide quoted text -
>
> - Show quoted text -
Changing these lines should do it...
A[0][0] = 0;
A[1][0] = -84;
A[0][1] = 0;
A[1][1] = -76;
B[0][0] = -84;
B[0][1] = -76;
Dave
|
|
0
|
|
|
|
Reply
|
dave_and_darla (14)
|
6/7/2007 12:48:12 AM
|
|
On Jun 6, 5:48 pm, Dave Dodson <dave_and_da...@Juno.com> wrote:
> On Jun 6, 6:30 pm, byaa...@yahoo.com wrote:
>
>
>
> > On Jun 6, 5:26 pm, glen herrmannsfeldt <g...@ugcs.caltech.edu> wrote:
>
> > > byaa...@yahoo.com wrote:
>
> > > (snip)
>
> > > > I am still having an issue... in my simplest case, I am doing the
> > > > following
> > > > In my equation AX = B,
> > > > my A matrix looks like this {0, -84, 0, -76}. My B matrix looks like
> > > > this {-84 -76}
> > > > I call dgelsd as follows
> > > > one = 1;
> > > > rank = 0;
> > > > rcond = -1;
> > > > lwork = 10000;
> > > > info = 0;
> > > > M = 2;
> > > > N = 2;
> > > > dgelsd_(&M, &N, &one, A, &m, B, &N, S, &rcond, &rank, work, &lwork,
> > > > iwork, &info)
> > > > The resulting B matrix looks like this: {0.497506..., 0.450124688}
> > > > That seems wrong to me...
>
> > > In Fortran arrays are stored with the first subscript varying fastest,
> > > in C it is the other way around. Your {0, -84, 0, -76} then corresponds
> > > to the Fortran array elements A(1,1) A(2,1) A(1,2) A(2,2),
> > > where M is the dimension of the leftmost subscript, and N the rightmost.
>
> > > Does that help any?
>
> > > If you use 2D array in C, be sure to use real 2D arrays, not
> > > arrays of pointers to arrays.
>
> > > double a[100][100],b[100][100];
>
> > > where LDA will be the rightmost dimension in C.
>
> > > -- glen
>
> > Maybe if you can point me how to rearrange my code, that will give me
> > an example... the example below is not working as expected:
> > #include <stdio.h>
> > #include <f2c.h>
> > #include <blaswrap.h>
> > #include <clapack.h>
>
> > static double A[100][100], B[100][100], S[10000], work[10000], rcond;
> > static long int M, N, one, rank, lwork, info, iwork[30000], lda, ldb;
>
> > int main()
> > {
>
> > one = 1;
> > rank = 0;
> > rcond = -1;
> > lwork = 10000;
> > info = 0;
> > lda = 100;
> > ldb = 100;
>
> > M = 2;
> > N = 2;
>
> > A[0][0] = 0;
> > A[0][1] = -84;
>
> > A[1][0] = 0;
> > A[1][1] = -76;
>
> > B[0][0] = -84;
> > B[1][0] = -76;
>
> > dgelsd_(&M, &N, &one, A, &lda, B, &ldb, S, &rcond, &rank, work,
> > &lwork, iwork, &info);
>
> > }- Hide quoted text -
>
> > - Show quoted text -- Hide quoted text -
>
> > - Show quoted text -
>
> Changing these lines should do it...
>
> A[0][0] = 0;
> A[1][0] = -84;
>
> A[0][1] = 0;
> A[1][1] = -76;
>
> B[0][0] = -84;
> B[0][1] = -76;
>
> Dave
Greg, Dave, thanks for your time. That did solve my problem.
|
|
0
|
|
|
|
Reply
|
byaarov (33)
|
6/7/2007 1:33:26 AM
|
|
On Jun 6, 1:14 pm, Virgil <vir...@comcast.net> wrote:
> In article <1181160062.294743.132...@d30g2000prg.googlegroups.com>,
>
>
>
> byaa...@yahoo.com wrote:
> > On Jun 6, 1:55 pm, glen herrmannsfeldt <g...@ugcs.caltech.edu> wrote:
> > > byaa...@yahoo.com wrote:
>
> > > (snip)
>
> > > > Even on simple equasions such as
> > > > a1c1 + a2C = C, where I have M such equasions (note that the constant
> > > > for the a2 variable is always the same as the RHS of the equasion),
> > > > dgelss would not find a proper solution, which in this case would be
> > > > simple a1 = 0.0 and a2 = 1.0
>
> > > It is usual to require the same number of equations as
> > > unknowns for systems of linear equations.
>
> > > In the case above, you have one equation and two unknowns.
>
> > > Your simple solution requires that c1 not be zero, and also
> > > the c1 not be C.
>
> > > It might be that singular value decomposition would solve these
> > > equations in the way you expect. SVD allows for a different
> > > number of equations from unknowns.
>
> > > -- glen
>
> > I should have been clear. In my case I have M equations with 2
> > unknowns. What I was trying to say is that in each equation, the
> > coefficient of the a2 variable is always equal to the RHS in each of
> > the M equations. I would have expected dgelsd to solve that properly.
>
> > B
>
> For M > 1, a1 = 0, a2 = 1 will be a simultaneous solution of all the
> equations, and very likely the only one.
My M = 2700 to be exact (that is, I have 2700 simultaneous equations
and exactly 2 variables, a1 and a2). Furthermore, for each equation,
the coefficitent of a2 is always equal to the RHS value of that
equation.
So if I am not seeing a1 = 0 and a2 = 1, am I to conclude that I am
using dgelsd incorrectly?
B
|
|
0
|
|
|
|
Reply
|
byaarov (33)
|
6/8/2007 9:21:40 AM
|
|
On Jun 8, 5:21 am, byaa...@yahoo.com wrote:
> On Jun 6, 1:14 pm, Virgil <vir...@comcast.net> wrote:
>
>
>
> > In article <1181160062.294743.132...@d30g2000prg.googlegroups.com>,
>
> > byaa...@yahoo.com wrote:
> > > On Jun 6, 1:55 pm, glen herrmannsfeldt <g...@ugcs.caltech.edu> wrote:
> > > > byaa...@yahoo.com wrote:
>
> > > > (snip)
>
> > > > > Even on simple equasions such as
> > > > > a1c1 + a2C = C, where I have M such equasions (note that the constant
> > > > > for the a2 variable is always the same as the RHS of the equasion),
> > > > > dgelss would not find a proper solution, which in this case would be
> > > > > simple a1 = 0.0 and a2 = 1.0
>
> > > > It is usual to require the same number of equations as
> > > > unknowns for systems of linear equations.
>
> > > > In the case above, you have one equation and two unknowns.
>
> > > > Your simple solution requires that c1 not be zero, and also
> > > > the c1 not be C.
>
> > > > It might be that singular value decomposition would solve these
> > > > equations in the way you expect. SVD allows for a different
> > > > number of equations from unknowns.
>
> > > > -- glen
>
> > > I should have been clear. In my case I have M equations with 2
> > > unknowns. What I was trying to say is that in each equation, the
> > > coefficient of the a2 variable is always equal to the RHS in each of
> > > the M equations. I would have expected dgelsd to solve that properly.
>
> > > B
>
> > For M > 1, a1 = 0, a2 = 1 will be a simultaneous solution of all the
> > equations, and very likely the only one.
>
> My M = 2700 to be exact (that is, I have 2700 simultaneous equations
> and exactly 2 variables, a1 and a2). Furthermore, for each equation,
> the coefficitent of a2 is always equal to the RHS value of that
> equation.
>
> So if I am not seeing a1 = 0 and a2 = 1, am I to conclude that I am
> using dgelsd incorrectly?
>
> B
To avoid confusion let's call the variables by the names x1 and x2,
and the corresponding coefficients to be estimated by the names b1 and
b2. For each element (observation) of M there is a corresponding
element of each of x1 and x2, and you seek to estimate b1 and b2, so
as (I presume) to minimize the sum of squared residuals ( the sum of
squared M - x1*b1 - x2*b2). I searched the above conversation without
discovering any indication of what values are in the vectors x1 and
x2, and M; would you please clarify? It will be sufficient to say if
any of these vectors is constant across all observations, or varies,
and if it does vary, does it vary independently of the other vectors?
Also, are there variables included in this problem besides x1 and x2?
It could be that the results you have in hand are indeed the
solution. This would be the case if M = some constant, x2 = vector of
1's, while x1 (and any other variables) varied across observations.
In that case, the least squares solution would set b2 = M's constant
value.
|
|
0
|
|
|
|
Reply
|
mfmorss (92)
|
6/8/2007 1:48:38 PM
|
|
On Jun 8, 9:48 am, Mark Morss <mfmo...@aep.com> wrote:
> On Jun 8, 5:21 am, byaa...@yahoo.com wrote:
>
>
>
> > On Jun 6, 1:14 pm, Virgil <vir...@comcast.net> wrote:
>
> > > In article <1181160062.294743.132...@d30g2000prg.googlegroups.com>,
>
> > > byaa...@yahoo.com wrote:
> > > > On Jun 6, 1:55 pm, glen herrmannsfeldt <g...@ugcs.caltech.edu> wrote:
> > > > > byaa...@yahoo.com wrote:
>
> > > > > (snip)
>
> > > > > > Even on simple equasions such as
> > > > > > a1c1 + a2C = C, where I have M such equasions (note that the constant
> > > > > > for the a2 variable is always the same as the RHS of the equasion),
> > > > > > dgelss would not find a proper solution, which in this case would be
> > > > > > simple a1 = 0.0 and a2 = 1.0
>
> > > > > It is usual to require the same number of equations as
> > > > > unknowns for systems of linear equations.
>
> > > > > In the case above, you have one equation and two unknowns.
>
> > > > > Your simple solution requires that c1 not be zero, and also
> > > > > the c1 not be C.
>
> > > > > It might be that singular value decomposition would solve these
> > > > > equations in the way you expect. SVD allows for a different
> > > > > number of equations from unknowns.
>
> > > > > -- glen
>
> > > > I should have been clear. In my case I have M equations with 2
> > > > unknowns. What I was trying to say is that in each equation, the
> > > > coefficient of the a2 variable is always equal to the RHS in each of
> > > > the M equations. I would have expected dgelsd to solve that properly.
>
> > > > B
>
> > > For M > 1, a1 = 0, a2 = 1 will be a simultaneous solution of all the
> > > equations, and very likely the only one.
>
> > My M = 2700 to be exact (that is, I have 2700 simultaneous equations
> > and exactly 2 variables, a1 and a2). Furthermore, for each equation,
> > the coefficitent of a2 is always equal to the RHS value of that
> > equation.
>
> > So if I am not seeing a1 = 0 and a2 = 1, am I to conclude that I am
> > using dgelsd incorrectly?
>
> > B
>
> To avoid confusion let's call the variables by the names x1 and x2,
> and the corresponding coefficients to be estimated by the names b1 and
> b2. For each element (observation) of M there is a corresponding
> element of each of x1 and x2, and you seek to estimate b1 and b2, so
> as (I presume) to minimize the sum of squared residuals ( the sum of
> squared M - x1*b1 - x2*b2). I searched the above conversation without
> discovering any indication of what values are in the vectors x1 and
> x2, and M; would you please clarify? It will be sufficient to say if
> any of these vectors is constant across all observations, or varies,
> and if it does vary, does it vary independently of the other vectors?
> Also, are there variables included in this problem besides x1 and x2?
>
> It could be that the results you have in hand are indeed the
> solution. This would be the case if M = some constant, x2 = vector of
> 1's, while x1 (and any other variables) varied across observations.
> In that case, the least squares solution would set b2 = M's constant
> value.
I should add that the least squares solution would also set b1 = 0.
b1 and b2 are >scalars<, of course. Some of your posts seem to
suggest that you have different coefficients in different equations?!
I don't know what sort of analysis that would correspond to, but
certainly not to ordinary least squares estimation.
|
|
0
|
|
|
|
Reply
|
mfmorss (92)
|
6/8/2007 1:53:58 PM
|
|
In article <1181162024.092009.150310@i13g2000prf.googlegroups.com>,
byaarov@yahoo.com writes:
>On Jun 6, 1:14 pm, Virgil <vir...@comcast.net> wrote:
>> In article <1181160062.294743.132...@d30g2000prg.googlegroups.com>,
>>
>>
>>
>> byaa...@yahoo.com wrote:
>> > On Jun 6, 1:55 pm, glen herrmannsfeldt <g...@ugcs.caltech.edu> wrote:
>> > > byaa...@yahoo.com wrote:
>>
>> > > (snip)
>>
>> > > > Even on simple equasions such as
>> > > > a1c1 + a2C = C, where I have M such equasions (note that the constant
>> > > > for the a2 variable is always the same as the RHS of the equasion),
>> > > > dgelss would not find a proper solution, which in this case would be
>> > > > simple a1 = 0.0 and a2 = 1.0
>>
>> > > It is usual to require the same number of equations as
>> > > unknowns for systems of linear equations.
>>
>> > > In the case above, you have one equation and two unknowns.
>>
> > > > Your simple solution requires that c1 not be zero, and also
>> > > the c1 not be C.
>>
>> > > It might be that singular value decomposition would solve these
>> > > equations in the way you expect. SVD allows for a different
>> > > number of equations from unknowns.
>>
>> > > -- glen
>>
>> > I should have been clear. In my case I have M equations with 2
>> > unknowns. What I was trying to say is that in each equation, the
>> > coefficient of the a2 variable is always equal to the RHS in each of
>> > the M equations. I would have expected dgelsd to solve that properly.
>>
>> > B
>>
>> For M > 1, a1 = 0, a2 = 1 will be a simultaneous solution of all the
>> equations, and very likely the only one.
>
>My M = 2700 to be exact (that is, I have 2700 simultaneous equations
>and exactly 2 variables, a1 and a2). Furthermore, for each equation,
>the coefficitent of a2 is always equal to the RHS value of that
>equation.
>
>So if I am not seeing a1 = 0 and a2 = 1, am I to conclude that I am
>using dgelsd incorrectly?
>
>B
>
yes, necessarily. the svd computes under all possible solutions (in the
case of rank deficinecy) the solution of shortest length.
I saw somewhere in the code you declared the matrix as 100 times 100
but had the leading dimension not =100.
you must discern between actual dimension of your system (m and n)
and the dimension you gave the matrix in their declaration _this is the LDA_
your test system has the form
[ c1(i), C ] and the right hand side is always C
if you have the vector of the c1(i) not constant, then this system will have
full rank and you get a1=0 a2=C as the unique solution.
if, as in your testcases, the matrix has first column all zeros,
then of course a1 is arbitrary and a2=C, hence the solution of minimal
length gives a1=0, a2=C.
and dgelss does exactly this.
hth
peter
|
|
0
|
|
|
|
Reply
|
spellucci (464)
|
6/8/2007 3:07:37 PM
|
|
|
19 Replies
37 Views
(page loaded in 0.141 seconds)
Similiar Articles: (Non)-linear system of equation, overdetermined - comp.soft-sys ...Hello all, I have to solve a system of linear equations, with a particular condition. My system is in the classical form: A*x=b By the way I ... trouble solving system of linear equations for symbolic ...Hi, I have run into a problem of solving a system of linear equations. When solving A*x = b' by x = linsolve(A, b'), I get Matrix is close to si... constraints in system of non-linear equations - comp.soft-sys ...Hi, I'm trying to solve a system of 3 non-linear equations (using fsolve), and I need to impose restrictions on the each of the unknowns. Is there ... solving the system of non linear equation - comp.soft-sys.matlab ...Sir i have problem in solving the system of non linear equation with 3 or 4 equation. Please provide me the related progeamming. ... Solving a system of equations in Simulink - comp.soft-sys.matlab ...Solving 2 non linear equations with 2 unknown - comp.soft-sys ... How to Solve a Non-Linear System of Equations ... non linear equation, fzero ... and Blogs for the MATLAB ... Solving an Overdetermined System of Equations - comp.soft-sys ...Solving an Overdetermined System of Equations - comp.soft-sys ... How to Solve a Non-Linear System of Equations ... non linear equation, fzero ... Matlab program to solve wave equation up to linear system of ...New in matlab, Need help please in making a matlab program to solve the wave equation below up to the point when you obtain a system of equations. so... HP 50g, solving system of differential equation numerical? - comp ...On Apr 20, 8:43 pm, Stan <s...@uwaterloo.ca> wrote: > Max: > > The equation you've given IS a linear differential equation! > > Stan i mean sin(y), Anyway: is there ... how to use fsolve - comp.soft-sys.matlabconstraints in system of non-linear equations - comp.soft-sys ... Hi, I'm trying to solve a system of 3 non-linear equations (using fsolve), and I need to impose ... solve non linear equations with constraint - comp.soft-sys.matlab ...Hi, I'm trying to solve a system of 3 non-linear equations (using fsolve), and I need to impose restrictions on the each of the unknowns. Is there ... Solving a system of differential equations - comp.soft-sys.matlab ...Solving 2 non linear equations with 2 unknown - comp.soft-sys ..... into the second equation ... Solving Non-linear Differential Equations ... System of Equations ... Overdetermined equation system - comp.soft-sys.matlabSolving an Overdetermined System of Equations - comp.soft-sys ... Solving 2 non linear equations with 2 unknown - comp.soft-sys ... How to Solve a Non-Linear System of ... Solving 2 non linear equations with 2 unknown - comp.soft-sys ...Solving 2 non linear equations with 2 unknown - comp.soft-sys ... How to Solve a Non-Linear System of Equations ... non linear equation, fzero - comp.soft-sys.matlab ... SOR Method MatLab Function for System of Simultaneous Linear ...trouble solving system of linear equations for symbolic ..... problem of solving a system of linear equations. ... comp.soft-sys.matlab trouble solving system of linear ... Solving linear programming equations using linprog - comp.soft-sys ...Solving linear programming equations using linprog - comp.soft-sys ... Solving an Overdetermined System of Equations - comp.soft-sys ... How to Solve a Non-Linear System ... System of linear equations - Wikipedia, the free encyclopediaThe simplest method for solving a system of linear equations is to repeatedly eliminate variables. This method can be described as follows: In the first equation, solve ... Solving Systems of Linear Equations in Two VariablesWTAMU Math Tutorials and Help ... After completing this tutorial, you should be able to: Know if an ordered pair is a solution to a system of linear equations ... 7/13/2012 2:35:09 AM
|