Example: SplineData Chart

This example makes use of the SplineData class as well as the two spline smoothing classes in Imsl.Math .
using System;
using System.Collections;
using System.ComponentModel;
using System.Drawing;
using System.Data;
using System.Windows.Forms;
using Imsl.Math;
using Imsl.Chart2D;
using Random = Imsl.Stat.Random;

public class SplineDataEx1 : FrameChart 
{

	private const int nData = 21;
	private const int nSpline = 100;

	public SplineDataEx1() 
	{

		Chart chart = this.Chart;
		AxisXY axis = new AxisXY(chart);

		chart.ChartTitle.SetTitle(new Text("Smoothed Spline"));
		
		Legend legend = chart.Legend;
		legend.SetTitle(new Text("Legend"));
		legend.SetViewport(0.7, 0.9, 0.1, 0.3);
		legend.IsVisible = true;
		
		// Original data
		double[] xData = grid(nData);
		double[] yData = new double[nData];
		for (int k = 0; k < nData; k++)
		{
			yData[k] = f(xData[k]);
		}
		
		Data data = new Data(axis, xData, yData);
		data.DataType = Imsl.Chart2D.Data.DATA_TYPE_MARKER;
		data.MarkerType = Data.MARKER_TYPE_HOLLOW_CIRCLE;
		data.MarkerColor = System.Drawing.Color.Red;
		data.SetTitle("Original Data");
		
		// Noisy data
		Random random = new Random(123457);
		double[] yNoisy = new double[nData];
		for (int k = 0; k < nData; k++)
		{
			yNoisy[k] = yData[k] + (2.0 * random.NextDouble() - 1.0);
		}
		data = new Data(axis, xData, yNoisy);
		data.DataType = Imsl.Chart2D.Data.DATA_TYPE_MARKER;
		data.MarkerType = Data.MARKER_TYPE_FILLED_SQUARE;
		data.MarkerSize = 0.75;
		data.MarkerColor = System.Drawing.Color.Blue;
		data.SetTitle("Noisy Data");
		
		chartSpline(axis, new CsSmooth(xData, yData), System.Drawing.Color.Red,
         "CsSmooth");
		chartSpline(axis, new CsSmoothC2(xData, yData, nData),
         System.Drawing.Color.Orange, "CsSmoothC2");
	}

	static private void chartSpline(AxisXY axis, Imsl.Math.Spline spline,
      System.Drawing.Color color, System.String title)
	{
		Data data = new SplineData(axis, spline);
		data.DataType = Imsl.Chart2D.Data.DATA_TYPE_LINE;
		data.LineColor = color;
		data.SetTitle(title);
	}

	static private double[] grid(int nData)
	{
		double[] xData = new double[nData];
		for (int k = 0; k < nData; k++)
		{
			xData[k] = 3.0 * k / (double) (nData - 1);
		}
		return xData;
	}
	
	static private double f(double x)
	{
		return 1.0 / (0.1 + System.Math.Pow(3.0 * (x - 1.0), 4));
	}

	public static void Main(string[] argv) 
	{
		System.Windows.Forms.Application.Run(new SplineDataEx1());
	}
}

Output

Link to C# source.