多項式。
Inheritance: ICloneable
Beispiel #1
0
		/// <summary>
		/// チェビシェフ有理式(elliptic rational)を計算する。
		/// </summary>
		/// <param name="n">次数</param>
		/// <param name="l">x > 1 における極小値</param>
		/// <returns>次数 n のチェビシェフ有理式</returns>
		public static Rational Elliptic(int n, double l)
		{
			double m1 = 1 / (l * l);
			double m1p = 1 - m1;

			double Kk1  = Ellip.K(m1);
			double Kk1p = Ellip.K(m1p);

			double m    = Ellip.InverseQ(Math.Exp(-Math.PI * Kk1p / (n * Kk1)));
			double Kk   = Ellip.K(m);

			Polynomial num   = Polynomial.X(0, 1);
			Polynomial denom = Polynomial.X(0, 1);

			Rational r = new Rational(Polynomial.X(0, 1), Polynomial.X(0, 1));
			double g = 1;

			for(int i=n-1; i>0; i-=2)
			{
				double u = Kk * (double)i / n;
				double sn = Ellip.Sn(u, m);
				double w = sn * sn;

				g *= (m*w - 1) / (1/w - 1);
				num   *= Polynomial.X(2,	1/w) - 1;
				denom *= Polynomial.X(2, m*w) - 1;
			}

			if((n & 1) == 1)
			{
				num *= Polynomial.X(1);
			}

			num *= g;

			return new Rational(num, denom);
		}
Beispiel #2
0
		/// <summary>
		/// 分子/分母多項式を指定して初期化。
		/// </summary>
		/// <param name="num">分子多項式</param>
		/// <param name="denom">分母多項式</param>
		public Rational(Polynomial num, Polynomial denom)
		{
			this.num   = num;
			this.denom = denom;
		}
Beispiel #3
0
 /// <summary>
 /// x の n 乗を返す。
 /// </summary>
 /// <param name="n">指数</param>
 /// <returns>x の n 乗</returns>
 public static Polynomial X(int n)
 {
     return(Polynomial.X(n, 1));
 }