[過去ログ] 「数学」をプログラミングするには (1002レス)
上下前次1-新
抽出解除 レス栞
このスレッドは過去ログ倉庫に格納されています。
次スレ検索 歴削→次スレ 栞削→次スレ 過去ログメニュー
リロード規制です。10分ほどで解除するので、他のブラウザへ避難してください。
1(16): デフォルトの名無しさん [] 2024/03/16(土) 19:41:45.98 ID:nuwGv9us(1) AAS
たとえば、プログラミングで
π/4 = 1 - 1/3 + 1/5 - 1/7 + ...
を近似ではなく厳密に確かめるにはどうしたらいいの
人間が証明できるってことは、有限なアルゴリズムに書き換えられると思うんだけど
56(3): デフォルトの名無しさん [] 2024/03/22(金) 15:38:04.26 ID:m8Pakijg(1) AAS
現代数学は集合と写像の言葉で書かれている
写像は関数の一般化だからC言語やHaskellなどの関数型言語では数学をプログラミングできない
RubyやPythonなどにはsetやmapといった機能があるから
これで数学をプログラミングできると思われる
70(3): デフォルトの名無しさん [] 2024/03/23(土) 12:47:39.65 ID:g/HfMmmn(2/9) AAS
>>69機械語に識別子はないからできないだろ。Cでは長さnの配列aの各要素に関数fを適用した結果を
配列bに格納する関数 map(f, a, n, b) を簡単に自作できる。
72(4): デフォルトの名無しさん [sage] 2024/03/23(土) 14:11:05.89 ID:O64Y227M(2/5) AAS
>>70
普通mapは配列に対してではなく
もっと一般的にイテレータに対して適用
結果もイテレータとする
その結果を例えばfor文で使う場合
わざわざ結果を配列に入れても無意味だったことになるからだ
mapを多段にした使った場合も同様で中間結果配列は無意味になる
だからmapの入力も出力もイテレータが使われる
74(3): デフォルトの名無しさん [sage] 2024/03/23(土) 15:36:22.16 ID:O64Y227M(3/5) AAS
>>7373(1): デフォルトの名無しさん [] 2024/03/23(土) 14:44:44.84 ID:g/HfMmmn(3/9) AAS
>>72
それは実装上の効率化のための操作で、本当の写像ではない。本当の写像は配列から配列を作る。
C#で言えばSelectしただけでは写像にならず、ToArrayしないと写像にならない。
配列から配列なんて嘘つきだな
例えば写像の入力を数学でもよくある自然数とする
これは配列では表現できない
イテレータならば表現できる
出力も同様で配列は不可能だがイテレータなら可能
126(3): デフォルトの名無しさん [sage] 2024/03/25(月) 21:32:48.72 ID:VkynB6Jg(4/4) AAS
プログラマは数学である必要がある
230(5): デフォルトの名無しさん [sage] 2024/04/12(金) 11:00:23.24 ID:n/WEiCkF(1/5) AAS
厳密に求められないからπという記号を用いたわけで
コンピュータで扱う場合はπという記号定数を使えばいいだけ
無限に続くので3.14...を厳密に求めることはできないのは数学もコンピュータも一緒
1がしたいことが何なのかよくわからん
260(5): デフォルトの名無しさん [] 2024/04/12(金) 23:55:46.84 ID:lpyrPPhz(1) AAS
>>1
> たとえば、プログラミングで
>
> π/4 = 1 - 1/3 + 1/5 - 1/7 + ...
>
> を近似ではなく厳密に確かめるにはどうしたらいいの
> 人間が証明できるってことは、有限なアルゴリズムに書き換えられると思うんだけど
人間が証明出来るからって、有限なアルゴリズムに書き換えられるとは限らないんだよなぁ…。
そもそも人間の証明がlimとか使って(仮に無限回繰り返せれば)極限はnになる(だろう)って感じで有限のアルゴリズムじゃない訳で。
306(4): デフォルトの名無しさん [sage] 2024/04/15(月) 12:44:15.61 ID:scEUff9F(4/17) AAS
>>305だから存在をどうやって示すんだ
340(7): デフォルトの名無しさん [sage] 2024/04/16(火) 16:09:15.10 ID:X3z51ZSN(1) AAS
>>337,339339(1): デフォルトの名無しさん [sage] 2024/04/16(火) 15:34:00.46 ID:ffps7/Wl(1) AAS
いずれ量子コンピュータの時代になるから
コンピュータ=2進数のイメージはすたれていくだろうな
そんなことより、これを大学数学初年度の回答レベルで解いてみてよ
画像リンク
596(5): デフォルトの名無しさん [sage] 2024/11/12(火) 04:10:14.19 ID:15KCzjek(2/5) AAS
x^2 = 2をみたす正の実数xは一意的に存在する
なら、それを√2というシンボルで扱えるようにすべきだ
計算は必要なときにだけすればいい
x = 1.4142云々という数値にしなければ扱えないのは不要な制約
これは誤差があるとかそういう問題ではない
人間の思考をコンピュータの都合に合わせようとしているのが問題
644(3): デフォルトの名無しさん [] 2024/11/16(土) 21:13:01.66 ID:ZAMRkSMG(1/2) AAS
>>641Σ(n = 0, 100) 2^(-n) ≠2 -- 100の部分が∞になった時(2^(-∞))、初めて 2 になる。
数学だと真(True)になるが、Haskellプログラムは-53乗から答えが2になって、この式は偽(False)になる。
sum [2^^(-n) | n <- [0..53]] /= 2 = False -- 間違った答えを表示。
グラフアプリ(Webアプリ)のDesmosでも確認したので、専用のアプリや言語でも間違ってる可能性が高い。
こういう精度の問題がプログラムはメモリが有限である限り、必ず存在する。
(√2)^2 = 2
が正しく真になるかどうかもプログラム次第。
(こちらはグラフアプリの様な専用のものは対応してることが多い)
654(5): デフォルトの名無しさん [] 2024/11/18(月) 02:18:05.70 ID:cmnYUiAb(2/8) AAS
というか、私の主張は
数学
lim_{k to 100} sum_{k=1}^{n} 2^(-k) -- ちゃんと近似値が出る。
プログラミング
sum [2^^(-n) | n <- [0..100]] = 2 -- 近似値ではなく、極限値の2になって(この時点での)正確な値ではない。
プログラミングはイプシロン-デルタ論法が(一定の精度までしか)出来ない。
それでも実用上問題は無いが。
他にも無限次元の空間とかも扱えない。
集合の添え字集合も可算集合とは限らない。
実数や複素数も有り得る。
リストや配列のインデックスが実数や複素数とかプログラミングじゃ出来ない。
687(3): デフォルトの名無しさん [] 2024/11/18(月) 20:05:19.56 ID:cmnYUiAb(7/8) AAS
>>680680(1): デフォルトの名無しさん [] 2024/11/18(月) 19:42:42.62 ID:uqz705Or(2/8) AAS
「実数εを任意に選べる文脈で、項と極限値の差をε未満に抑えるNを選ぶことができる」ことを示すのがイプシロンデルタ論法
それを記号論理で扱える処理系を実装すればいいだけ
εは「正の実数である」という情報しか持っていない
浮動小数点数や多倍長整数の誤差なんか全く無関係
ε自体はな。
でも、真の値aに対して a + ε, a - εって使うのがイプシロンデルタ論法。
数学ではそれで限りなく無限に近くεを小さくしてもその範囲内に真の値が存在することを証明しているが、
プログラミングでは一定の大きさのεまでしか保証されない。
こういえばいいか?
真の値は確かにあるが、プログラミングでは間違った値を返す場合がある。
極限が正しければ厳密じゃない。
途中もすべて正しくないなら、それは厳密ではない。
上下前次1-新書関写板覧索設栞歴
スレ情報 赤レス抽出 画像レス抽出 歴の未読スレ AAサムネイル
ぬこの手 ぬこTOP 0.062s