// g02dn Example Program Text // C# version, NAG Copyright 2008 using System; using NagLibrary; using System.Globalization; using System.IO; namespace NagDotNetExamples { public class G02DNE { static string datafile = "ExampleData/g02dne.d"; static void Main(String[] args) { if (args.Length == 1) { datafile = args[0]; } StartExample(); } public static void StartExample() { try { DataReader sr = new DataReader(datafile); double rss, sestat, stat, t, tol; int i, idf, ip, irank, j, m, n, nestfn; bool est = false, svd = false; string mean = "", weight = ""; int ifail; Console.WriteLine("g02dn Example Program Results"); // Skip heading in data file sr.Reset(); sr.Reset(); n = int.Parse(sr.Next()); m = int.Parse(sr.Next()); int ipmax = m + 1; weight = sr.Next(); mean = sr.Next(); double[] b = new double[ipmax]; double[] cov = new double[(ipmax * ipmax + ipmax) / 2]; double[] f = new double[ipmax]; double[] h = new double[n]; double[] p = new double[ipmax * (ipmax + 2)]; double[,] q = new double[n, ipmax + 1]; double[] res = new double[n]; double[] se = new double[ipmax]; double[] wk = new double[ipmax * ipmax + 5 * (ipmax - 1)]; double[] wt = new double[n]; double[,] x = new double[n, m]; double[] y = new double[n]; int[] isx = new int[m]; if (n >= 2 && m >= 1) { if ((weight == "W") || (weight == "w")) { for (i = 1; i <= n; i++) { sr.Reset(); for (j = 1; j <= m; j++) { x[i - 1, j - 1] = double.Parse(sr.Next(), CultureInfo.InvariantCulture); } y[i - 1] = double.Parse(sr.Next(), CultureInfo.InvariantCulture); wt[i - 1] = double.Parse(sr.Next(), CultureInfo.InvariantCulture); } } else { for (i = 1; i <= n; i++) { sr.Reset(); for (j = 1; j <= m; j++) { x[i - 1, j - 1] = double.Parse(sr.Next(), CultureInfo.InvariantCulture); } y[i - 1] = double.Parse(sr.Next(), CultureInfo.InvariantCulture); } } sr.Reset(); for (j = 1; j <= m; j++) { isx[j - 1] = int.Parse(sr.Next()); } ip = int.Parse(sr.Next()); // Set tolerance tol = 0.000010e0; // // Find initial estimates using g02da G02.g02da(mean, weight, n, x, m, isx, ip, y, wt, out rss, out idf, b, se, cov, res, h, q, out svd, out irank, p, tol, wk, out ifail); // if (ifail == 0) { Console.WriteLine(" "); Console.Write(" {0}", "Estimates from g02da"); Console.WriteLine(" "); Console.WriteLine(" {0}{1,12:e4}", "Residual sum of squares = ", rss); Console.WriteLine(" {0}{1,4}", "Degrees of freedom = ", idf); Console.WriteLine(" "); Console.Write(" {0}", "Variable Parameter estimate Standard error"); Console.WriteLine(" "); for (j = 1; j <= ip; j++) { Console.WriteLine(" {0,6}{1,20:e4}{2,20:e4}", j, b[j - 1], se[j - 1]); } sr.Reset(); nestfn = int.Parse(sr.Next()); for (i = 1; i <= nestfn; i++) { sr.Reset(); for (j = 1; j <= ip; j++) { f[j - 1] = double.Parse(sr.Next(), CultureInfo.InvariantCulture); } // G02.g02dn(ip, irank, b, cov, p, f, out est, out stat, out sestat, out t, tol, out ifail); // if ((ifail == 0) || (ifail == 2)) { Console.WriteLine(" "); Console.Write(" {0}{1,4}", "Function ", i); Console.WriteLine(" "); for (j = 1; j <= ip; j++) { Console.Write(" {0}", f[j - 1]); } Console.WriteLine(" "); Console.WriteLine(" "); if (est) { Console.WriteLine(" {0}{1,10:f4}{2}{3,10:f4}{4}{5,10:f4}", "STAT = ", stat, " SE = ", sestat, " T = ", t); } else { Console.WriteLine(" {0}", "Function not estimable"); } } else { Console.WriteLine(" "); Console.WriteLine("** g02dn failed with ifail = {0,5}", ifail); } } } else { Console.WriteLine(" "); Console.WriteLine("** g02da failed with ifail = {0,5}", ifail); } } // } catch (Exception e) { Console.WriteLine(e.Message); Console.Write("Exception Raised"); } } } }