/*
* -------------------------------------------------------------------------
* $Id: Roots.java,v 1.5 2004/09/01 18:07:54 estewart Exp $
* -------------------------------------------------------------------------
* Copyright (c) 1999 Visual Numerics Inc. All Rights Reserved.
*
* This software is confidential information which is proprietary to
* and a trade secret of Visual Numerics, Inc. Use, duplication or
* disclosure is subject to the terms of an appropriate license
* agreement.
*
* VISUAL NUMERICS MAKES NO REPRESENTATIONS OR WARRANTIES ABOUT THE
* SUITABILITY OF THE SOFTWARE, EITHER EXPRESS OR IMPLIED, INCLUDING
* BUT NOT LIMITED TO THE IMPLIED WARRANTIES OF MERCHANTABILITY,
* FITNESS FOR A PARTICULAR PURPOSE, OR NON-INFRINGEMENT. VISUAL
* NUMERICS SHALL NOT BE LIABLE FOR ANY DAMAGES SUFFERED BY LICENSEE
* AS A RESULT OF USING, MODIFYING OR DISTRIBUTING THIS SOFTWARE OR
* ITS DERIVATIVES.
*--------------------------------------------------------------------------
*/
package com.imsl.demo.javagrande;
import com.imsl.chart.*;
import com.imsl.math.*;
import java.awt.*;
import java.applet.Applet;
public class Roots extends Applet
{
private Chart chart = null;
private Complex[] testRootsOfUnity(int ndeg)
throws ZeroPolynomial.DidNotConvergeException
{
double coef[] = new double[ndeg+1];
coef[0] = -1.0;
coef[ndeg/2] = 2;
coef[ndeg/2+1] = -3;
coef[ndeg] = 1.0;
double radius[] = new double[ndeg];
boolean status[] = new boolean[ndeg];
ZeroPolynomial zp = new ZeroPolynomial();
return zp.computeRoots(coef);
}
public void init()
{
Complex roots[];
try {
roots = testRootsOfUnity(50);
} catch (ZeroPolynomial.DidNotConvergeException e) {
return;
}
chart = new Chart(this);
chart.getChartTitle().setTitle(new Text("Roots of a Polynomial"));
AxisXY axis = new AxisXY(chart);
//axis.setCross(0.0, 0.0);
axis.getAxisX().getAxisTitle().setTitle("real");
axis.getAxisY().getAxisTitle().setTitle("imaginary");
int n = roots.length;
double x[] = new double[n];
double y[] = new double[n];
for (int k = 0; k < x.length; k++) {
x[k] = roots[k].real();
y[k] = roots[k].imag();
}
Data data = new Data(axis, x, y);
data.setDataType(Data.DATA_TYPE_MARKER);
data.setMarkerType(Data.MARKER_TYPE_HOLLOW_SQUARE);
data.setMarkerColor(Color.blue);
}
public void update(Graphics g)
{
chart.update(g);
}
public void paint(Graphics g)
{
chart.paint(g);
}
public static void main(String argv[])
{
Roots ex = null;
Frame frame = new Frame();
ex = new Roots();
frame.add(ex);
ex.init();
frame.setSize(new Dimension(400,400));
frame.show();
}
}