Mercurial > hg > minc-tools
changeset 770:5bf93c6b3d1d
*** empty log message ***
author | david <david> |
---|---|
date | Tue, 21 Feb 1995 12:58:40 +0000 |
parents | df6fbc2fc74e |
children | 61cf793fe122 |
files | volume_io/Geometry/newton.c |
diffstat | 1 files changed, 8 insertions(+), 13 deletions(-) [+] |
line wrap: on
line diff
--- a/volume_io/Geometry/newton.c +++ b/volume_io/Geometry/newton.c @@ -1,16 +1,18 @@ #include <internal_volume_io.h> -public BOOLEAN invert_function( +public BOOLEAN newton_function_inversion( int n_dimensions, - void (*function) ( Real parameters[], Real values[], Real **derivatives), + void (*function) ( void *function_data, + Real parameters[], Real values[], Real **derivatives), + void *function_data, Real initial_guess[], Real desired_values[], Real solution[], Real tolerance, int max_iterations ) { - int iter, dim, i, j; - Real *values, **derivatives; + int iter, dim; + Real *values, **derivatives, *delta, error; ALLOC( values, n_dimensions ); ALLOC( delta, n_dimensions ); @@ -20,12 +22,13 @@ solution[dim] = initial_guess[dim]; iter = 0; + error = tolerance; while( max_iterations < 0 || iter < max_iterations ) { ++iter; - (*function) ( solution, values, derivatives ); + (*function) ( function_data, solution, values, derivatives ); error = 0.0; for_less( dim, 0, n_dimensions ) @@ -37,14 +40,6 @@ if( error < tolerance ) break; - for_less( i, 0, n_dimensions-1 ) - { - for_less( j, i+1, n_dimensions ) - { - derivatives[j][i] = derivatives[i][j]; - } - } - if( !solve_linear_system( n_dimensions, derivatives, values, delta ) ) break;