「数理演算の基礎」

2019年より着手した「数理再勉強」用の倉庫。

【可算直積可能な世界】代数方程式(Algebraic formula)について。

高校数学Iのラスボスは因数分解? 

f:id:ochimusha01:20191220044604p:plain
まずは前提となる基礎概念。

  • 数列numerical sequence)…一般項general term)が規定する規則に従って並べられた数の列。そのうち数の間隔が「隣り合う二項の差公差common difference)」で定められるものを等差数列arithmetic progression)あるいは算術数列arithmetic sequence)、「隣り合う二項の比公比common difference)」で定められるものを等比数列geometric progression)あるいは幾何数列geometric sequence)という。

  • 自然数natural number)…数列の立場からすれば「一般項general termN,公差common difference1の等差数列arithmetic progressionの1以上」となる。

  • 整数integer)…数列の立場からすれば「一般項general termN,公差common difference1の等差数列arithmetic progression)」となる。

そして吉田武「オイラーの贈物」「基礎理論(Basic Theory)」より…

実数Real number)」は有理数無理数から構成されている。「有理数rational number)」とは「ratio)」で書ける数、整数も含めた広い意味での分数の事であり、無理数irrational number)とはかかる表現が不可能な数をいう。
*こうした立場からすると両者は「有比数」「無比数」と呼ぶのが正しい。

それでは数式とは?

formula)」において、数や文字の掛け算で表された一つの単位を「term)」という。また、項の中で注目している文字以外の文字や数を「係数coefficient)」という。


一つの項からなる式を「単項式monomial)」、複数の項からなる式を「多項式polynomial)」あるいは「整式an integral expression)」という。

二つの多項式割り算すなわち「(quotient)」の形で与えられる式を「有理式rational expression)」あるいは「分数式fractional expression)」という。これは数の概念における整数から有理数への拡張の、式の概念に対する敷衍となっている。

またk個のaの積をa^kと書きaのk乗と読む。このkを「指数expornent)」という。

まずはこの辺りが出発点…

代数方程式と超越方程式の解法

未知数xを含む方程式formulaf(x)=0には様々な形式があり、このうち代数的演算(Algebraic operations、加減算、乗除算、冪根)を有限回用いて表せる代数方程式Algebraic formula)という。

統計言語Rによる実行例

#代数的演算
3+2
[1] 5
3-2
[1] 1
3*2
[1] 6
3/2
[1] 1.5
3^2
[1] 9
#平方根
sqrt(2)
[1] 1.414214
2^0.5
[1] 1.414214
#三乗根
2^(1/3)
[1] 1.259921

x-2=0の場合

  • 左辺の定数項-2を右辺に移項し2とする。
  • 両辺に2を加える。

あるいは

  • 両辺に2を加える。

答えは2となる。

統計言語Rwith YACASによる実行例

library(Ryacas)
yacas("Solve(x-2==0,x)")
Yacas vector:
[1] x == 2

 2x+6=0の場合

  • 両辺から6を引く。
  • 両辺を2で割る。

答えは-3となる。

統計言語Rwith YACASによる実行例

library(Ryacas)
yacas("Solve(2*x+6==0,x)")
Yacas vector:
[1] x == -3

ax^2-b=0の場合

  • ax^2=bに変形。
  • x^2=b/aに変形。
  • x=±sqrt(b/a)に変形。

よって答えは±sqrt(b/a)の2つとなる。

統計言語Rwith YACASによる実行例

library(Ryacas)
yacas("Solve(a*x^2+b==0,x)")
Yacas vector:
[1] x == root(abs(b/a), 2) * complex_cartesian(cos(argument(-(b/a))/2), sin(argument(-(b/a))/2))
[2] x == root(abs(b/a), 2) * complex_cartesian(cos*1 + 2 * pi)/2), sin*2 + 2 * pi)/2))

2x^2-1=0の場合

  • 2x^2=1に変形
  • x^2=1/2に変形
  • x=±sqrt(1/2)に変形

よって答えは±sqrt(1/2)の2つとなる。

統計言語Rwith YACASによる実行例

library(Ryacas)
yacas("Solve(2*x^2-1==0,x)")
Yacas vector:
[1] x == root(1/2, 2) x == -root(1/2, 2) 
sqrt(1/2)
[1] 0.7071068
-sqrt(1/2)
[1] -0.7071068

ただし代数方程式の解き方は1種類とは限りません。

(x+m)^2-n=0の場合

  • (x+m)^2=nに変形
  • 平方根を取るとx+m=±sqrt(n)
  • x=±sqrt(n)-mに変形

よって答えは±sqrt(n)-mの2つとなる。

統計言語Rwith YACASによる実行例

library(Ryacas)
yacas("Solve*3/2

(x+2)^2-3=0の場合

  • (x+2)^2=3に変形
  • 平方根を取るとx+2=±sqrt(3)
  • x=±sqrt(3)-2に変形

よって答えは±sqrt(3)-2の2つとなる。 

統計言語Rwith YACASによる実行例

library(Ryacas)
yacas("Solve*4/2a

  • ax^2+2bx+cの場合、x=(-b±sqrt(b^2-ac))/a
  • これは因数分解出来なくても解けるパターンとなる。

    統計言語Rwith YACASによる実行例

    library(Ryacas)
    yacas("Solve*5/(2 * a^2)
    yacas("Solve*6/(2 * a^2)

    根の公式

    結論的にいえば,二次方程式の重解の場合,「1つしかない」のが「」であり 「同じものが2つある」のが「」である.

    異なる概念を混同しているのが今の高校教科書である.

    」はrootから来ている言葉だ. 「」という言葉は今の高校数学では「根号」とか「平方根」というところに残っているだけだ. しかし√という記号はもともとrootrから来ているのだから, 毎日「」は使っている.

    」は「根っこ」であり「大地」である. こんなすばらしい言葉を高校数学から追放した現在の教科書の罪は深い。 

    x^2-3x+2=0の場合

    • 根の公式x=(-b±sqrt(b^2-4ac))/2aから(-(-3)±sqrt*7/(2*1)=(3±1)/2

    よって答えは12の2つとなる。

    統計言語Rwith YACASによる実行例

    library(Ryacas)
    yacas("Solve(x^2-3*x+2==0,x)")
    Yacas vector:
    [1] x == 1 x == 2
    yacas("Solve*8
    yacas("Simplify*9")
    expression(x^2 - 3 * x + 2)

    二項定理Binomial theorem)とも関連してくる領域となる。

    反比例式について

    統計言語Rwith YACASによる実行例

    library(Ryacas)
    yacas("Solve(x*y-1==0,x)")
    Yacas vector:
    [1] x == 1/y
    yacas("Solve(x*y-1==0,y)")
    Yacas vector:
    [1] y == 1/x

     ピタゴラスの定理について

    代数曲線に触れる

    ユークリッド幾何学における平面代数曲線 (plane algebraic curve)におけるx^2 + y^2 = a (a は実定数)。これは、実数の範囲で考えた時、以下となる。

    • a > 0 なら円
    • a = 0 なら原点一点
    • a < 0 なら空集合

    ただしa < 0 でも、複素数の範囲で解を考えればたくさんある。このように、代数曲線といってもどの範囲で解を考えるのか、どの体で解を考えるのかを明らかにしないと定かにはさだまらない。

    例で見たとおり、実数の範囲で考えると一点や空集合なども「代数曲線」であることになり、直感に合わない。通常は、代数曲線といったら複素数解の全体をあらわすことが多い。

    統計言語Rwith YACASによる実行例

    library(Ryacas)
    yacas("Solve(x^2+y^2-1==0,x)")

    Yacas vector:
    [1] x == root(abs(y^2 - 1), 2) * complex_cartesian(cos(argument(1 - y^2)/2), sin(argument(1 - y^2)/2))
    [2] x == root(abs(y^2 - 1), 2) * complex_cartesian(cos*10

    yacas("Solve(x^2+y^2-1==0,y)")

     Yacas vector:
    [1] y == root(abs(x^2 - 1), 2) * complex_cartesian(cos(argument(1 - x^2)/2), sin(argument(1 - x^2)/2))
    [2] y == root(abs(x^2 - 1), 2) * complex_cartesian(cos*11

     以下続報…

    *1:argument(-(b/a

    *2:argument(-(b/a

    *3:x+m)^2-n==0,x)")
    Yacas vector:
    [1] x == (root(4 * m^2 - 4 * (m^2 - n), 2) - 2 * m)/2 x == -(2 * m + root(4 * m^2 - 4 * (m^2 - n), 2

    *4:x+2)^2-3==0,x)")
    Yacas vector:
    [1] x == (root(12, 2) - 4)/2 x == -(root(12, 2) + 4)/2
    #+の場合の解答
    sqrt(3)-2
    [1] -0.2679492
    (sqrt(12)-4)/2
    [1] -0.2679492

    #-の場合の解答
    -(sqrt(3)-2)
    [1] 0.2679492
    -(sqrt(12)-4)/2
    [1] 0.2679492

    ax^2+bx+c=0あるいはax^2+2bx+c=0の場合

    以下の根の公式Root formula)を使う。

    • ax^2+bx+cの場合、x=(-b±sqrt(b^2-4ac

      *5:a*x)^2+b*x+c==0,x)")
      Yacas vector:
      [1] x == (root(b^2 - 4 * (a^2 * c), 2) - b)/(2 * a^2) x == -(b + root(b^2 - 4 * (a^2 * c), 2

      *6:a*x)^2+2*b*x+c==0,x)")
      Yacas vector:
      [1] x == (root(4 * b^2 - 4 * (a^2 * c), 2) - 2 * b)/(2 * a^2) x == -(2 * b + root(4 * b^2 - 4 * (a^2 * c), 2

      *7:-3)^2-4*1*2

      *8:1*x)^2+(-3)*x+2==0,x)")
      Yacas vector:
      [1] x == 1 x == 2

      因数分解が可能な場合

      因数分解を行うにはacx^2+(ad+bc)x+bd=0(ax+b)(cx+d)=0の関係に注目して定数a,b,c,dを決定する必要がある。具体的には二次方程式の各係数から次の「たすき掛け」関係を満たす値を試行錯誤して発見する。

      f:id:ochimusha01:20191219204756p:plain

      x^2-3x+2=0の例では

      f:id:ochimusha01:20191219204856p:plain

      より、a=1,b=-1,c=1,d=-2となり

      • x^2-3x+2=(x-1)(b-2)=0

      よってx=1 or x=2となる。

      統計言語Rwith YACASによる実行例

      library(Ryacas)
      yacas("Factor(x^2-3*x+2)")
      expression((x - 2) * (x - 1

      *9:x-2)*(x-1

      *10:argument(1 - y^2) + 2 * pi)/2), sin((argument(1 - y^2) + 2 * pi)/2

      *11:argument(1 - x^2) + 2 * pi)/2), sin((argument(1 - x^2) + 2 * pi)/2