📄 ex_2.c
字号:
#include <stdio.h>#include <stdlib.h>#include <math.h>#include <time.h>#include "math_util.h"int n_fun, n_grad;main(){ clock_t time_0, time_1; long double tol, *x, dtime; int n; long double ex2_fun( long double * ); void ex2_dfun( long double *, long double * ); long double line_search( long double(*)(), long double, long double *, long double *, int, long double ); void cauchy( long double(*)(), void(*)(), long double *, int, long double ); n_fun = 0; n_grad = 0; n = 2; x = a1d_allo_dbl( n ); x[0] = 0.50; x[1] = 0.50; tol = 1.0e-4; time_0 = clock(); cauchy( ex2_fun, ex2_dfun, x, n, tol ); time_1 = clock(); dtime = (long double)(time_1-time_0)/((long double)CLOCKS_PER_SEC); printf("\nSolution x: "); print_vec_dbl( x, n ); printf("\n"); printf(" # of function evaluations: %d\n",n_fun); printf(" # of gradient evaluations: %d\n",n_grad); printf(" Solution time: %Le",dtime);}/* Easson function*/long double ex2_fun( x )long double *x;{ long double f, t1, t2, t8, t11, x1, x2; n_fun++; x1 = x[0]; x2 = x[1]; t1 = x1*x1; t2 = x2*x2; t8 = t1*t1; t11 = t2*t2; f = 6.0/5.0+t1/10+(1.0+t2)/t1/10+(t1*t2+100.0)/t8/t11/10; return( f );}void ex2_dfun( df, x )long double *df, *x;{ long double t1, t3, t5, t10, t11, t15, t19, x1, x2; n_grad++; x1 = x[0]; x2 = x[1]; t1 = x2*x2; t3 = x1*x1; t5 = 1/t3/x1; t10 = t3*t1+100.0; t11 = t3*t3; t15 = t1*t1; t19 = 1/t3; df[0] = x1/5-(t1+1.0)*t5/5+t5/t1/5-2.0/5.0*t10/t11/x1/t15; df[1] = x2*t19/5+t19/t1/x2/5-2.0/5.0*t10/t11/t15/x2;}/**** Norm(grad f) <= epsSolution x: 1.743450e+00 2.029806e+00 # of function evaluations: 5045 # of gradient evaluations: 418 Solution time: 8.783333e+00*/
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -