// g02dk Example Program Text // C# version, NAG Copyright 2008 using System; using NagLibrary; using System.Globalization; using System.IO; namespace NagDotNetExamples { public class G02DKE { static string datafile = "ExampleData/g02dke.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, tol; int i, iconst, idf, ip, irank, j, m, n; bool svd = false; string mean = "", weight = ""; int ifail; Console.WriteLine("g02dk 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(); Console.WriteLine(" "); double[] b = new double[ipmax]; double[,] c = new double[ipmax, ipmax]; double[] cov = new double[(ipmax * ipmax + ipmax) / 2]; 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[4 * 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.Write(" {0}", "Estimates from g02da"); Console.WriteLine(" "); Console.WriteLine(" {0}{1,13:e3}", "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:e3}{2,20:e3}", j, b[j - 1], se[j - 1]); } // Input constraints and call g02dk iconst = ip - irank; for (i = 1; i <= ip; i++) { sr.Reset(); for (j = 1; j <= iconst; j++) { c[i - 1, j - 1] = double.Parse(sr.Next(), CultureInfo.InvariantCulture); } } // G02.g02dk(ip, iconst, p, c, b, rss, idf, se, cov, out ifail); // if (ifail == 0) { Console.WriteLine(" "); Console.Write(" {0}", "Estimates from g02dk using constraints"); Console.WriteLine(" "); Console.Write(" {0}", "Variable Parameter estimate Standard error"); Console.WriteLine(" "); for (j = 1; j <= ip; j++) { Console.WriteLine(" {0,6}{1,20:e3}{2,20:e3}", j, b[j - 1], se[j - 1]); } } else { Console.WriteLine(" "); Console.WriteLine("** g02dk 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"); } } } }