proteus 1.9.0
C/C++/Fortran libraries
Loading...
Searching...
No Matches
Solve.cpp
Go to the documentation of this file.
1void Solve(double **a, double *b, int m, int n, double *solution, int MP, int NP)
2{
3int i;
4double *w, **v, wmax, wmin;
5double *dvector(long nl, long nh);
6double **dmatrix(long nrl, long nrh, long ncl, long nch);
7void dsvdcmp(double **a, int m, int n, double w[], double **v);
8void dsvbksb(double **u, double w[], double **v, int m, int n, double b[], double x[]);
9void free_dvector(double *v, long nl, long nh);
10void free_dmatrix(double **m, long nrl, long nrh, long ncl, long nch);
11
12w=dvector(1,NP);
13v=dmatrix(1,NP,1,NP);
14
15// Perform decomposition
16
17dsvdcmp(a,m,n,w,v);
18
19// Set up: see p65 of Press et al.
20
21wmax = 0.;
22for ( i=1 ; i<=n ; i++) if ( w[i] >= wmax ) wmax = w[i];
23wmin = wmax * 1.e-12;
24for ( i=1 ; i<=n ; i++) if ( w[i] <= wmin ) w[i] = 0.;
25
26// Back substitute
27
28dsvbksb(a,w,v,m,n,b,solution);
29
30free_dmatrix(v,1,NP,1,NP);
31free_dvector(w,1,NP);
32}
33
void free_dmatrix(double **m, long nrl, long nrh, long ncl, long nch)
Definition Util.cpp:44
double ** dmatrix(long nrl, long nrh, long ncl, long nch)
Definition Util.cpp:16
void free_dvector(double *v, long nl, long nh)
Definition Util.cpp:38
double * dvector(long nl, long nh)
Definition Util.cpp:7
void dsvbksb(double **u, double w[], double **v, int m, int n, double b[], double x[])
Definition Dsvbksb.cpp:3
void dsvdcmp(double **a, int m, int n, double w[], double **v)
Definition Dsvdcmp.cpp:15
void Solve(void)
Int n
Definition Headers.h:28
Double u
Definition Headers.h:89
Double v
Definition Headers.h:95
#define nl(x)
Definition jf.h:17
#define w(x)
Definition jf.h:22