class NgLib:: LDE(T)

Overview

不定方程式 $ax + by = c$ を解きます。

常に解が存在するわけではないので、 #has_solution? などで解が存在するかを確かめるようにしてください。

多分、解の媒介変数 $m = 0$ のとき、$|x| + |y|$ が最小になります。

Defined in:

nglib/math/lde.cr

Constructors

Instance Method Summary

Constructor Detail

def self. new (a, b, c) #

不定方程式 $ax + by = c$ を作ります。


[ View source ]

Instance Method Detail

def h : T | Nil #

解は媒介変数 $m$ を用いて $x = x_0 + mk,\ y = y_0 + mh$ と求まるので、 この $h$ を返します。

解が存在しない場合は nil を返します。


[ View source ]
def h! : T #

現在の $m$ の値に対する $h$ の解を返します。

解は媒介変数 $m$ を用いて $x = x_0 + mk,\ y = y_0 + mh$ と求まるので、 この $h$ を返します。

解が存在しない場合は例外を送出します。


[ View source ]
def has_solution? #

解が存在するかを返します。


[ View source ]
def inspect (io : IO) #
Description copied from class Reference

Appends a String representation of this object which includes its class name, its object address and the values of all instance variables.

class Person
  def initialize(@name : String, @age : Int32)
  end
end

Person.new("John", 32).inspect # => #<Person:0x10fd31f20 @name="John", @age=32>

[ View source ]
def k : T | Nil #

解は媒介変数 $m$ を用いて $x = x_0 + mk,\ y = y_0 + mh$ と求まるので、 この $k$ を返します。

解が存在しない場合は nil を返します。


[ View source ]
def k! : T #

現在の $m$ の値に対する $k$ の解を返します。

解は媒介変数 $m$ を用いて $x = x_0 + mk,\ y = y_0 + mh$ と求まるので、 この $k$ を返します。

解が存在しない場合は例外を送出します。


[ View source ]
def m #

媒介変数 $m$ の値を返します。


[ View source ]
def m= (m) #

媒介変数 $m$ の値を更新します。


[ View source ]
def solution : Tuple(T, T, T, T) | Nil #

現在の $m$ の値に対する解を返します。

解は媒介変数 $m$ を用いて $x = x_0 + mk,\ y = y_0 + mh$ と求まるので、 $(x_0, b', y_0, a')$ をこの順に格納したタプルとして返します。

解が存在しない場合は nil を返します。


[ View source ]
def solution! : Tuple(T, T, T, T) #

現在の $m$ の値に対する解を返します。

解が存在しない場合は例外を送出します。


[ View source ]
def to_s (io : IO) #
Description copied from class Reference

Appends a short String representation of this object which includes its class name and its object address.

class Person
  def initialize(@name : String, @age : Int32)
  end
end

Person.new("John", 32).to_s # => #<Person:0x10a199f20>

[ View source ]
def x : T | Nil #

現在の $m$ の値に対する $x$ の解を返します。

解は媒介変数 $m$ を用いて $x = x_0 + mk,\ y = y_0 + mh$ と求まるので、 この $x$ を返します。

解が存在しない場合は nil を返します。


[ View source ]
def x! : T #

現在の $m$ の値に対する $x$ の解を返します。

解は媒介変数 $m$ を用いて $x = x_0 + mk,\ y = y_0 + mh$ と求まるので、 この $x$ を返します。

解が存在しない場合は例外を送出します。


[ View source ]
def y : T | Nil #

現在の $m$ の値に対する $y$ の解を返します。

解は媒介変数 $m$ を用いて $x = x_0 + mk,\ y = y_0 + mh$ と求まるので、 この $y$ を返します。

解が存在しない場合は nil を返します。


[ View source ]
def y! : T #

現在の $m$ の値に対する $y$ の解を返します。

解は媒介変数 $m$ を用いて $x = x_0 + mk,\ y = y_0 + mh$ と求まるので、 この $y$ を返します。

解が存在しない場合は例外を送出します。


[ View source ]