using System; using static System.Console; using static System.Math; public partial class qnewton{ public static readonly double EPS=1.0/1048576; public static vector gradient(Funcf, vector x){ vector g=new vector(x.size); double fx=f(x); for(int i=0;if, ref vector x, double acc=1e-3){ double fx=f(x); vector gx=gradient(f,x); matrix B=matrix.id(x.size); int nsteps=0; while(nsteps<999){ nsteps++; vector Dx=-B*gx; if(Dx.norm()1e-6){ double gamma=(u%y)/sTy; vector a=(u-gamma*s)/sTy; B.update(a,s); B.update(s,a); } x=z; gx=gz; fx=fz; } return nsteps; }//broyden }//class