アプリ版:「スタンプのみでお礼する」機能のリリースについて

等号(イコール)の用法にはどのようなものがありますか?数学の分野を中心とします。
※説明のために、注目しているイコールを:=で表すことにします。

用法A【等しい、同値関係】(例)1+1 := 2 ※恒等式 ※方程式もコレ?
用法B【定義】(例)n := 2 のとき n+10 = 2+10 = 12 (例)Σ_{k:=1}^{n}(k)
(例)3Z := { 3n | n ∊ Z } ※3の倍数の集合を3Zの記号で定義する。
用法C【代入】(例)(プログラミング言語等で)i := i+1
用法D【形式的な拡張】(例)lim_{n → ∞} (a_{n}) := ∞ ※発散、値が∞に等しいという意味ではない

など考えてみました。その他の使用の方法を教えてください。また,用法A~用法Dについても間違いもあるかと思います。いろいろと自分でも区別が曖昧なところがあります。とくに用法Bと用法Cは曖昧です。用法Bに書いた,n:=2は定義でしょうか、代入でしょうか。また、連立方程式などの計算で「x::=3をx+y:::=5に代入して…」の::=と:::=のイコールは意味が違うと思います。

質問者からの補足コメント

  • どう思う?

    回答をいただいて、簡単に整理してみました。
    ※(x+3)^2 +5(x+3) +6 などの因数分解で、A=x+3 とおくと…
     などのように”置き換え”の視点もありました。これも「定義」または「代入」との関連が強い。

    -----------------------------------------------------------
    ●イコールの用法(回答No3時点)
    【大分類A:等しい】
    (詳細はまだ上手く整理できていない)
    ※キーワード:計算結果として等しい、同値関係、定義、代入、置き換え、論理値、恒等式、方程式

    【大分類D:形式的な拡張】
    《①無限大》(例)lim_{n → ∞} (a_{n}) = ∞

      補足日時:2021/01/09 23:22

A 回答 (9件)

用法Bを「定義」と言うのは違う気がします。

ちなみに定義を表わす記号は「≡」です。


(小学校では合同を表す記号として出て来たと思いますが、定義にも使います)
    • good
    • 0
この回答へのお礼

回答ありがとうございます。

定義の記号には,:=や=の上にdefなどと書くような文化もありますね。
“定義”の用法でない、ということについて、他の方の考えも気になります。

例えば、サインを定義するときに,「sinθ=BC/AC と定義する。」などという文章があるかと思います。このときの=はどんな用法でしょうか。

お礼日時:2021/01/09 20:57

> 用法A【等しい、同値関係】(例)1+1 := 2


これが基本。

>  ※恒等式 ※方程式もコレ?
恒等式は
  ∀x(f(x) = 0)
という命題の省略形。
 方程式は
  {x|f(x) = 0}
という集合の省略形です。

> 用法B【定義】(例)n := 2 のとき n+10 = 2+10 = 12
  ∀n(n=2 ⇒ n+10 = 12)
という命題です。"="の意味は用法Aと同じ。
 等号を使った定義は、「∀n(n=2 ⇒ P(n))を、以下では省略形でP(n)と書きます」と言ってるだけです。

> 用法C【代入】(例)(プログラミング言語等で)i := i+1
これは代入操作であって等号ではない。
 しかしプログラムの検証(verification)を行う際には論理式を作るのに等号を使いたいんで、それぞれの変数の時系列的変化を関数 i(t) などで表す必要がある。例えば
 i(1) = i(0) + 1
という風に。(こちらは等号なので、「∴ i(1) - i(0) = 1 」とできる。)

> 用法D【形式的な拡張】(例)lim_{n → ∞} (a_{n}) := ∞
なるほど仰る通りで、この場合には "= ∞"という2文字で一つの記号(「lim fは存在しない」を「lim f=∞」と表す)だと思う必要がありますね。
    • good
    • 0
この回答へのお礼

回答ありがとうございます。

> 用法A【等しい、同値関係】これが基本。
「基本」という言葉の重みを大切にしないといけないですね。おそらく=についてはこのことが「基本」になることは間違いなさそうです!ひょっとすると、数学的には『=の分類などない』というのが1つのシンプルな解釈なのかもしれません。(ただ、初学者にはそうでもなさそうなので、考えを深めていきたいことがこのQAの1つの目標です。)

といっても
> 用法D【形式的な拡張】(例)lim_{n → ∞} (a_{n}) := ∞ なるほど
用法Aと用法Dは分類できそうです。

用法Dは特別な場合ですが、このような用法があるのも事実。他にもこういった特別の用法があったら知りたいということもQAの目標の1つです。

巷には数学の興味関心を高める書籍があふれているけれど、=の分類について初学者にわかりやすく説明している記事はあまり見かけません。※(誤解されないために…)このQAを使って本を執筆しようという思いはありません!あくまで、自分が勉強したいだけです。


算数の授業等で「:=」をたくさん経験します。
1+2+3
:= 3+3
:= 6
この=の用法は「等しい」をつなげたものですね。
【前述の式は計算すると後述の式に等しい】

恒等式と方程式については"命題"や"条件"について丁寧に考えていく必要がありそうですが,恒等式や方程式の表現の中で=使われている以上、この用法を整理したい。

②x+2 := x +2 は恒等式
③x+2 := 5 は方程式
【左辺と右辺は等しい】
これは明らかに①の用法とは異なります。そのうえで②③の := に違いはあるでしょうか?


(例)n := 2 のとき n+10 ::= 2+10  ※この::=は「代入」ではないだろうか。
(例)Σ_{k:::=1}^{n}(k)  ※この:::=は「代入」ではないだろうか。
(例)x::::=3をx+y=5に代入して…
の=たちについては、自分の中では曖昧で、よく整理できていませんが「定義」「代入」がキーワードになっているような気がしている。

プログラミング言語にみられる=の考察も興味深いですがお礼の文字数に限りがあり詳しく書けませんでした。プログラミング言語では「代入」「論理式」の2つの視点があるのでは?と考えを深めています。

お礼日時:2021/01/09 21:49

つまらないツッコミ:


方程式は f(x)=0 が {x|f(x)=0} の省略なのではなく、
方程式はあくまで f(x)=0 そのもので、
方程式の「解が」 {x|f(x)=0} なのだと思う。
    • good
    • 0
この回答へのお礼

回答ありがとうございます。

お礼日時:2021/01/09 21:49

No.3 <


そんな気もしたのだが、しかしそれだと{ x|f(x)+g(x)=0}と{ f|f(x)+g(x)=0}の区別が付かんのではないか?
    • good
    • 0
この回答へのお礼

No3も含めて、思慮深い回答をありがとうございます。

方程式も恒等式をとらえる視点の違いですよね。「解集合」にフォーカスするか「式」にフォーカスするか。方程式についても、恒等式についても、どちらにフォーカスするかはそのとき次第ということ。

f(x)+g(x)=0 は方程式そのもので、これを満たす「解」の集合{ x|f(x)+g(x)=0}に注目するから、恒等式とそうでない式という差異ができる。方程式を満たす解によって方程「式」そのものが特徴づけられる。

(余談ですが、この意味で、恒等式は方程式の特殊なものと考えることもできるのでは?というのは、軽率な考えでしょうか?)

お礼日時:2021/01/10 02:55

あまり深く考えなくてもいいのでは? プログラミングの方は分かりませんが、少なくとも数学の記号としては「右辺と左辺が等しい事を表す」と言う認識で問題ないと思います。

    • good
    • 0
この回答へのお礼

>数学の記号としては「右辺と左辺が等しい事を表す」と言う認識
だけだと数学が苦手な人には困難になると思い掘り下げたいと考えました。数学を深く理解している側からすると「右辺と左辺が等しい事を表す」に尽きるのですが、なかなか初学者には難しいのです。

(x+3)^2 を展開するときの計算過程に使う =① と
(x+3)^2=9 など、方程式として始めから用意された =② は
どちらも本質的には「右辺と左辺が等しい事を表す」のだが、”用法”が異なってくる。用法が異なるのだから、初学者は①と②の=は「違うもの」と認識するはずだ。この「違うという認識」を分類したい。

お礼日時:2021/01/10 03:13

逆に「用法が違う」と考えるから難しく感じるのでは? シンプルに「同じ記号だから用法も同じ」と考えていいのではと思います。

実際お礼コメントにあった①と②は初学者の気持ちになったとしても「用法が異なっている」とは思えません。
    • good
    • 0
この回答へのお礼

No7でお礼させていただきます。

お礼日時:2021/01/10 18:05

「初学者は(お礼コメントの)①と②の=は『違うもの』と認識するはずだ」とありますが、私は小学1年生で初めて=の記号に触れてからこれまでずっと「全部同じ用法」と思って来ました。

プログラミングで用いる

P=P+1

と言った表記を見た時には面食らいましたが、数学の記号としては初学者であれば「用法は全部同じ(もちろん意味も同じ)」と考えるのではと思います。「=の用法が異なる」と考えるのはむしろ数学に精通して等式のニュアンスの違いが見えて来た人のような気がします。
    • good
    • 0
この回答へのお礼

回答ありがとうございます。

>シンプルに「同じ記号だから用法も同じ」と考えていいのではと思います。>初学者の気持ちになったとしても「用法が異なっている」とは思えません。

>数学の記号としては初学者であれば「用法は全部同じ(もちろん意味も同じ)」と考えるのではと思います。

このような回答は、なるほど考えさせられます。自分の中で思考の変遷が起き、得られるものがあるように思えます。自分は=を分類したいと思っていたのですが、「=の用法はみな同じ」と一般の方々は思っているのかもしれない。確かに、用法の違いは、=を表現の一部に使った数学的な対象について生じるものであって、=そのものだけを考えるなら「等しい」以外のものではないということなのかな、と考えているところです。

>「=の用法が異なる」と考えるのはむしろ数学に精通して

「=の用法が異なる」と初学者は感じるか感じないか、興味があります。

お礼日時:2021/01/10 18:17

No.2です。


> 用法C【代入】(例)(プログラミング言語等で)i := i+1

というところ、もうちょっと深掘りしておく必要があるかもです。

 「代入」と言ってもassignmentとsubstitutionがある。両者をはっきり区別する必要がある。プログラミング言語においてassignmentとは「値を割り当てる」、substitutionとは「置き換える」ということ。

 いくつかの言語では、assignment命令を等号と区別するために”:=“という記号を使う。
  t := n
というのは「式nの値を計算し、得られた値を、tに割り当てる(assignする)」という一連の動作をさせる命令である。(C言語でassignment命令を”=“で表すのは、数学の意味での”=“ではない。)

 一方、substitutionは「数学の意味での代入」に他ならない。substitutionが数学において本質的に現れるのは、「関数f(x)を定義しておいて、”f(<何かの式>)”と書く」という表記においてである。(だから “=“はsubstitutionの要点ではない。)substitutionを実装したプログラミング言語もある。たとえば
define G(x,s,t,p,b,r) as {
   t := n;
   while (p) {
     s := s + x; t := r
  }
}
はほとんど無意味なプログラムに見える。しかし G(a[t-1]*b[t-1],s,t,t>0,n-1,t-1) を「substituion」(プログラミングの用語で言えば call by name)と解釈すると
{
   t := n;
   while (t>0) {
     s := s + a[t-1]*b[t-1]; t := t-1
  }
}
ということなのだから、配列a,bの内積Σ{k=0~n-1} a[k]b[k] の値がsに得られるプログラムになる。
 上記の G(x,s,t,p,b,r) の定義はsubstitutionの他に、”:=“だの”;”だの”while”だのを含んでいるが、実はsubstitutionはそれ単独で「計算メカニズム」として機能する。substitutionだけで計算をやる計算システムが「λ calculus」。このシステムは「十分に強力」、すなわち万能Turing Machineが記述できる。つまり、何らかの言語で書いた何らかのプログラムで計算できるものなら、どんなものでも、これだけで計算できる。(実は、上記のG(x,s,t,p,b,r)も、引数を適切に与えさえすればどんな計算でもできる。)この引数機構はALGOL60(とその直系子孫)のデフォルトであり、関数型言語(多くのLISP実装系やHaskelなど)の基本的文法に組み込まれている。あまりにも強力な計算メカニズムなので、ソースコードを読んでも「何をするプログラムなのか」が理解しきれないことがしばしばある。
 多くのよく使われるプログラミング言語では、substituionは一見して「ヤッテルな」とわかる。C言語でこれに近いことをやるには、p, x, rなどを「ポインタで指される関数の呼び出し」で置き換えて、引数として「関数へのポインタ」の値を渡す(call by value)か、assignmentする、という書き方をする必要がある。Javaならt, x, rなどを抽象クラスのmethodの呼び出しに置き換える。一方、よほどの大仕掛けをしないとsubstituionができないプログラミング言語も多い。
    • good
    • 0
この回答へのお礼

回答ありがとうございます。

とても秀逸な回答をいただいたように感じています。

>「代入」と言ってもassignmentとsubstitutionがある。両者をはっきり区別する必要がある。プログラミング言語においてassignmentとは「値を割り当てる」、substitutionとは「置き換える」ということ。

まず、今回のQAの整理として、「定義」と「代入」の分類は難しいなぁと改めて感じています。(No1の「用法Aが基本」やNo5,6,7にあるように、分類ということ自体がおかしいのかもしれないけれど、どうだろう)

プログラミング言語について、assignmentとsubstitutionがあるということを初めて知りました。「変数の宣言」「assignment」「substitution」に対して、「=」と「定義」や「代入」の概念をどう整理できるのか、結構難しいのかも、と感じています。

>G(x,s,t,p,b,r)はほとんど無意味なプログラムに見える。(中略)substitutionだけで計算をやる計算システムが「λ calculus」。このシステムは「十分に強力」、すなわち万能Turing Machineが記述できる。

このGには目から鱗です。何に使えるの?と思えるものが、実はすごい力を備えている。”構造”という視点も興味深いです。

このQAと趣旨は違いますが、Gの定義のところで、Gの第5引数bと、処理中のnがどこからくるのか、興味があります。

お礼日時:2021/01/10 18:31

No.8へのコメント



> Gの第5引数bと、処理中のnがどこからくるのか、興味があります。

についてです。確かに。バグってますね。
 define G(x,s,t,p,b,r) as
じゃなくて
 define G(x,s,t,p,n,r) as
    • good
    • 0
この回答へのお礼

>define G(x,s,t,p,n,r) as

なるほど、すっきりしました。「アルゴル」について検索しましたが、あまり記事がなく、とてもニッチで専門的だなと思いました。QAに時間をいただきありがとうございます。

お礼日時:2021/01/10 19:35

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!