using System; using static System.Math; using static System.Console; public class ann2{ public Func f = z => Exp(-z*z)*z; public Func f1 = z => Exp(-z*z)*(1-2*z*z); public Func f2 = z => Exp(-z*z)*(-4*z-2*z+4*z*z*z); public vector p; public readonly int n; public double a(int i) { return(p[i]); } public double b(int i) { return(p[i+n]); } public double w(int i) { return(p[i+2*n]); } public void seta(int i,double z) { p[i]=z; } public void setb(int i,double z) { p[i+n]=z; } public void setw(int i,double z) { p[i+2*n]=z; } public ann2(int n){ this.n=n; p=new vector(3*n); } public ann2(vector p){ this.n=p.size/3; this.p=p; } public double func(double x){ double sum=0; for(int i=0;i cost){ Random rnd=new Random(); for(int i=0;i mismatch = (u) => { ncalls++; ann2 annu = new ann2(u); return cost(annu); }; double step=0.7; simplex.downhill(mismatch,ref p,step:step,sizegoal:1e-6); //qnewton.min(mismatch,ref p,acc:1e-3,method:"broyden"); //vector lcorner=p.copy(); for(int i=0;i