using System; using static System.Console; using static System.Math; public static partial class rayleigh{ public static double pow (this double x,double y){return Pow(x,y);} public static double pow (this double x,int n){return Pow(x,n);} public static (double,vector,double) gengrad(matrix H,matrix N,vector x){ vector Hx=H*x,Nx=N*x; double xNx=x%Nx; double r=x%Hx/xNx; vector grad=(Hx-r*Nx)*(2/xNx); return (r,grad,xNx); } public static (double,vector) geneig (matrix H, matrix N, vector x, double acc=1e-6){ matrix B=matrix.id(x.size); x/=Sqrt(x%(N*x)); (double fx,vector gx,double xNx)=gengrad(H,N,x); int nsteps=0; while(nsteps<3*x.size){ if(gx.norm()0)n=int.Parse(argv[0]); matrix A = new matrix(n,n); matrix N = matrix.id(n); var rndA=new System.Random(1); var rndN=new System.Random(1); for(int i=0;i