⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 quadratic.java

📁 openmap java写的开源数字地图程序. 用applet实现,可以像google map 那样放大缩小地图.
💻 JAVA
字号:
/** * Copyright (C) BBNT Solutions LLC.  All Rights Reserved * $Id: Quadratic.java,v 1.1.2.1 2005/12/09 20:58:48 dietrick Exp $ */package com.bbn.openmap.geo;/**   Computes 0 to 2 real roots of the quadratic:   <pre>   a*x^2 + b*x + c = 0   </pre>   See http://web.cs.mun.ca/courses/cs2710-w02/lab5/assignment/assign5.html.   http://www.1728.com/quadratc.htm   <p>   Access the roots as a double iterator with methods hasNext() and next(). */public class Quadratic {  double a, b, c;  double[] solution;  int index = 0;    public Quadratic (double a, double b, double c) {    this.a = a;    this.b = b;    this.c = c;    solve();  }  /** Returns the solution, x, to the equation a*x+b = 0 **/  public static double linear (double a, double b) { return -b/a; }  /** Solve a*x^2 + b*x + c = 0 for x for real values of x.   * <p>   *  @see Winston and Horn, LISP p. 167-169.    */  public void solve () {    if (a == 0.0 && b == 0.0) values();    else if (a == 0.0 && b != 0.0) values(linear(b, c));    else if (a != 0.0 && c == 0.0) values(0.0, linear(a, b));    else {      double d = b*b - 4.0*a*c;      if (d < 0.0) values();	// Complex roots.      else if (d == 0.0)values(-b/(2.0*a));      else values((-b + Math.sqrt(d))/(2.0*a), (-b - Math.sqrt(d))/(2.0*a));    }  }  /** Evaluate the Quadratic at x. **/  public double eval (double x) { return (a*x + b)*x + c; }  public boolean hasNext () {     return index < solution.length;   }  public double next () {    if (this.hasNext()) return solution[index++];     else throw new java.util.NoSuchElementException();  }    public String toString () {    return "{" + a + "*x^2 + " + b + "*x + " + c + " = 0 [" + solutionToString() + "]}";  }  private String solutionToString () {    switch (solution.length) {    case 0: return "";    case 1: return String.valueOf(solution[0]);    case 2: return String.valueOf(solution[0]) + " " + String.valueOf(solution[1]);    default: return "";		// Can't happen.    }  }        private void values () { solution = new double[0]; }  private void values (double s1) { solution = new double[] {s1}; }  private void values (double s1, double s2) {    solution = new double[] { s1, s2 };  }    public String test () {    String s = this + " test: ";    switch (solution.length) {    case 0: return "";    case 1: return s + this.eval(solution[0]);    case 2: return s + this.eval(solution[0]) + " " + this.eval(solution[1]);    default: return "";   // Can't happen.    }  }  static private void p(double a, double b, double c) {    System.out.println((new Quadratic(a, b, c)).test());  }    public static void main (String[] args) {    p(0.0, 0.0, -30.0);    p(0.0, 4.0, 0.0);    p(0.0, 4.0, -30.0);    p(2.0, 4.0, 0.0);    p(2.0, 4.0, -30.0);    p(1.0, 4.0, 1.0);  }}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -