「数学」をプログラミングするには

■ このスレッドは過去ログ倉庫に格納されています
1デフォルトの名無しさん
垢版 |
2024/03/16(土) 19:41:45.98ID:nuwGv9us
たとえば、プログラミングで

π/4 = 1 - 1/3 + 1/5 - 1/7 + ...

を近似ではなく厳密に確かめるにはどうしたらいいの
人間が証明できるってことは、有限なアルゴリズムに書き換えられると思うんだけど
2024/11/12(火) 10:46:16.50ID:15KCzjek
>>597
問題だと思わないならすべてのソフトウェアをマシン語直接書けばいいと思うんだけど、そうしないの?
2024/11/12(火) 11:09:37.06ID:NBuxYVaH
ありがちなつまらない問答
どうせなにも解を持ってない
2024/11/12(火) 11:14:02.69ID:u+3emFIN
このガイジ3月からずっと粘着してんの?
きっしょ……
2024/11/12(火) 15:48:13.03ID:3FuqnzdR
>>596
マジレスするとsympyとか使ってxのまま計算して
最後にsolveさせると良いよ
2024/11/12(火) 15:55:48.61ID:CKJ1cusC
>>596
そういう道具をお前が開発すればいい話、有効ならみんな使ってくれる
2024/11/12(火) 16:33:02.20ID:15KCzjek
>>601
それは√2を代数的に扱えるだけで、「数学」ができるようになるわけじゃないよね
2024/11/12(火) 16:34:24.89ID:15KCzjek
>>602
CoqだのAgdaだのLeanだのすでにあるが、プログラミングのタスクに使うには現実的ではないから使われていない
2024/11/12(火) 16:51:01.93ID:CKJ1cusC
>人間の思考をコンピュータの都合に合わせようとしているのが問題
2024/11/12(火) 18:26:13.57ID:CKJ1cusC
どうせコンピュータの仕組み、どう動くか分からん素人のポエムだろ
2024/11/12(火) 18:53:59.94ID:XP7honYa
>>606
コンピュータの仕組みとこの話がどう関係すんの?
2024/11/12(火) 18:55:38.17ID:CKJ1cusC
何処が疑問?
2024/11/12(火) 19:07:20.52ID:XP7honYa
>>608
コンピュータの仕組みとこの話がどう関係するの?(2回目)
2024/11/12(火) 19:33:12.24ID:8/9kiwLF
Isabelle使えばいいだけじゃん?
2024/11/12(火) 21:00:48.76ID:CKJ1cusC
>>609
お前は>>596か?
2024/11/12(火) 22:38:55.70ID:CKJ1cusC
>>604
何に使うんだ、具体的に
2024/11/12(火) 23:06:50.66ID:Z0apa2/f
>>612
自分で考えろ
わかんねーなら口挟むな雑魚
2024/11/12(火) 23:10:47.26ID:/X8f5cV1
>>612
定理証明支援だろ
日本語読めんのか?w
2024/11/12(火) 23:13:38.83ID:CKJ1cusC
>>613,614
死ねよ
2024/11/13(水) 16:19:20.46ID:uVNdAEYi
子どもたちがママや先生に「なんで?どうして?」と質問攻めする
2024/11/14(木) 06:47:55.50ID:FKItOak5
やらないやつは
どんな便利な道具を与えても
どのみちやらない
2024/11/14(木) 09:28:56.87ID:nznif/OW
ここまでやって>>1>>596の問題でさえ、まともな解答を与えられない雑魚ども
2024/11/14(木) 10:42:00.16ID:ner7v2hh
イキルボウフラ
620デフォルトの名無しさん
垢版 |
2024/11/14(木) 12:02:25.41ID:OQvPqcBY
人間が証明する場合だって地道に微積分とか勉強しなきゃいけないんだから、プログラミングでやる場合でも、前提となる命題を地道にライブラリとして実装するしかないんじゃないの?
2024/11/14(木) 13:14:43.41ID:ner7v2hh
人間の証明
622デフォルトの名無しさん
垢版 |
2024/11/14(木) 14:47:37.59ID:a5xmyjQf
strawhat
2024/11/14(木) 17:23:53.38ID:ner7v2hh
麦わら帽子
2024/11/14(木) 21:13:20.72ID:GhvEWAa6
>>63
RubyやPythonは実行も遅くバカ大衆向けの言語
625デフォルトの名無しさん
垢版 |
2024/11/14(木) 21:48:56.39ID:bKv2MHuD
>>617
虐待するような親は
どんな素晴らしい育児本が出ても
どのみち読まない
2024/11/14(木) 23:41:10.47ID:ner7v2hh
DLはパイソンだが
2024/11/15(金) 04:40:11.25ID:ZKTTgycs
虐待するような親は字読めない
628デフォルトの名無しさん
垢版 |
2024/11/15(金) 05:18:13.53ID:hQy47J0s
どの数学を勉強するかにもよるな
弦理論やるならリー群論や多様体解析は必須だ
リーマンの定理やアインシュタインあたりまでは知っとく必要がある
微分解析やテンソル解析は腕のように使えなければならない
シュレーディンガー値も
629デフォルトの名無しさん
垢版 |
2024/11/15(金) 05:23:46.08ID:oiKZah8W
コンピュータは電気で動いている
電気の法則は電磁気学に従う
電磁気学は数学で記述される
したがって、コンピュータで数学をすることは不可能
630デフォルトの名無しさん
垢版 |
2024/11/15(金) 11:17:31.81ID:QdZaIMPx
電子レベルでは不確定性原理が成り立つから、演繹法は成り立たない
631デフォルトの名無しさん
垢版 |
2024/11/15(金) 11:22:24.79ID:0M5G5fCx
数学は純粋関数型言語と同じで副作用がないが、プログラミングは副作用を扱えるので、プログラミングは数学の完全上位互換といえる
2024/11/15(金) 11:59:16.52ID:IzLvGXPH
月間ムーに投稿したら?
633デフォルトの名無しさん
垢版 |
2024/11/15(金) 12:20:53.12ID:vpDW14Vh
数学は数学で記述される
したがって、数学で数学をすることは不可能
634デフォルトの名無しさん
垢版 |
2024/11/15(金) 12:46:46.55ID:kiHQf9hP
>>633
意味不
2024/11/15(金) 13:12:46.73ID:exBTDHgR
ポエム書き始めるぐらいならもう引退したほうがいい
生き恥さらすな
2024/11/15(金) 13:14:55.00ID:TsZPiFZ4
月刊ポエムだろ
2024/11/15(金) 19:08:27.14ID:RQFgsded
>>1>>596への回答はまだなんですか?
2024/11/15(金) 19:57:03.24ID:TsZPiFZ4
煽る
639デフォルトの名無しさん
垢版 |
2024/11/15(金) 20:05:57.50ID:6Uab757C
>>631
プログラミングにも数学にも、それぞれ出来ることと出来ないことがあるので上位互換ではない。
無限に細かいドットが無いからこそ、離散数学でなるべく滑らかに表示できるように考えられているってだけでも、
比可算無限(実数の無限)の再現困難性が理解できると思う。

プログラミング   数学
副作用       稠密(有理数・実数の概念)や連続(実数の概念)
640デフォルトの名無しさん
垢版 |
2024/11/15(金) 20:14:15.24ID:T7KbDv9U
数学にはメモリが無い
641デフォルトの名無しさん
垢版 |
2024/11/16(土) 13:43:48.08ID:xjfyxxxK
>>639
数学にできてプログラミングにできないこととは?
642デフォルトの名無しさん
垢版 |
2024/11/16(土) 14:06:21.38ID:u6jPvE94
lim[x→0](1/x) みたいなのってどうやるんだっけ
643デフォルトの名無しさん
垢版 |
2024/11/16(土) 14:39:31.85ID:VEq7pzr0
>>642
存在しない
644デフォルトの名無しさん
垢版 |
2024/11/16(土) 21:13:01.66ID:ZAMRkSMG
>>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

が正しく真になるかどうかもプログラム次第。
(こちらはグラフアプリの様な専用のものは対応してることが多い)
645デフォルトの名無しさん
垢版 |
2024/11/16(土) 22:29:05.29ID:SVLHeDQd
>>644
またこの周回遅れの間違いかよ
646デフォルトの名無しさん
垢版 |
2024/11/16(土) 22:55:43.53ID:ZAMRkSMG
>>642
ghci> [1/x | x <- [10,9..0]]
[0.1,0.1111111111111111,0.125,0.14285714285714285,0.16666666666666666,0.2,0.25,0.3333333333333333,0.5,1.0,Infinity]
ghci> last [1/x | x <- [10,9..0]]
Infinity
647デフォルトの名無しさん
垢版 |
2024/11/17(日) 18:50:33.62ID:JFtl2tUu
>>644
イプシロン-デルタ論法使えばいいじゃん
648デフォルトの名無しさん
垢版 |
2024/11/17(日) 21:09:34.26ID:vlQbYPk+
>>647
じゃあやってみて。
言語は問わないので。
649デフォルトの名無しさん
垢版 |
2024/11/17(日) 22:24:24.21ID:3R29/MXR
>>648
イミフ
イプシロン-デルタ論法って特定のプログラミング言語の機能だと思ってるの?
650デフォルトの名無しさん
垢版 |
2024/11/17(日) 22:28:22.99ID:36mRXv9m
lim_{k to ∞} sum_{k=1}^{n} 2^(-k) = 2

はい。
651デフォルトの名無しさん
垢版 |
2024/11/17(日) 23:05:53.71ID:vlQbYPk+
>>650
やり直し。
TeXの数式じゃなくて、プログラミング言語のコードで。
使えば良いじゃんって事は、普通のプログラミング言語なら使えるんでしょ?
652デフォルトの名無しさん
垢版 |
2024/11/18(月) 01:35:40.76ID:XvHL8b4e
>>651
何を言ってんだお前は
653デフォルトの名無しさん
垢版 |
2024/11/18(月) 01:57:22.41ID:cmnYUiAb
>>652
>644を数学にしかできない方法として極限を出したらイプシロン-デルタ論法出してきたでしょ?
プログラミングでイプシロン-デルタ論法使えば、数学と同じことができるって主張じゃないの?
654デフォルトの名無しさん
垢版 |
2024/11/18(月) 02:18:05.70ID:cmnYUiAb
というか、私の主張は

数学
lim_{k to 100} sum_{k=1}^{n} 2^(-k) -- ちゃんと近似値が出る。

プログラミング
sum [2^^(-n) | n <- [0..100]] = 2 -- 近似値ではなく、極限値の2になって(この時点での)正確な値ではない。

プログラミングはイプシロン-デルタ論法が(一定の精度までしか)出来ない。
それでも実用上問題は無いが。

他にも無限次元の空間とかも扱えない。
集合の添え字集合も可算集合とは限らない。
実数や複素数も有り得る。

リストや配列のインデックスが実数や複素数とかプログラミングじゃ出来ない。
655デフォルトの名無しさん
垢版 |
2024/11/18(月) 02:30:07.52ID:Jtd58AQt
lim_{k to ∞} sum_{k=1}^{n} 2^(-k) = 2 をチェックする関数verify()を作って、

```
verify();
```

構文の違いはあれど、だいたいどんなプログラミング言語でもこれで出来るよ。
656デフォルトの名無しさん
垢版 |
2024/11/18(月) 02:31:48.70ID:Jtd58AQt
>>654
なんで数学サイドは極限を扱っているのに、プログラミングサイドは近似値計算してんのが分からない

>プログラミングはイプシロン-デルタ論法が(一定の精度までしか)出来ない。
意味がわからない
イプシロンデルタ論法の「精度」とはなんぞや?
2024/11/18(月) 06:55:13.89ID:rC7K9dh5
用語の定義と問題設定やってから議論はじめろや
2024/11/18(月) 11:53:19.87ID:21+bycFm
数式プロセッサで10秒で解ける話をいつまで引っ張る気?
659デフォルトの名無しさん
垢版 |
2024/11/18(月) 12:11:19.02ID:TSuIDd3o
>>657
概念や問題設定を確立することも含めて研究だ
問題意識に共感できないなら黙ってろ
2024/11/18(月) 12:24:05.47ID:/ED7ccxy
先行研究を調べるという発想もそのやり方もわからないポンコツなの自覚した方がいいぞ
2024/11/18(月) 12:24:33.46ID:JmFxaZ5G
>>659
定義を否定するのはさすがに数学者の姿勢として間違っているかと。

数学なんて定義が違えば結果が変わるんだから、定義すらできないなら議論する以前の状態。
擬似問題だらけになって議論なんてできないわな。
2024/11/18(月) 12:52:07.70ID:IQFlTfLo
ポエム
663デフォルトの名無しさん
垢版 |
2024/11/18(月) 13:10:32.68ID:petr+Idh
>>661
微積分もフーリエ変換も超関数も厳密な定義の無いところから始まったんだが
664デフォルトの名無しさん
垢版 |
2024/11/18(月) 13:12:10.65ID:petr+Idh
そもそも何を定義してほしいんだ?
上で言ってるイプシロンデルタ論法なんか厳密に定義されてるだろ

自分が理解できてないのを責任転嫁してないか?
2024/11/18(月) 13:12:30.38ID:IQFlTfLo
一緒にすんなよ
666デフォルトの名無しさん
垢版 |
2024/11/18(月) 13:14:48.42ID:petr+Idh
で、何を定義してほしいの?
667デフォルトの名無しさん
垢版 |
2024/11/18(月) 13:17:46.53ID:Rwp+XrJ8
未知の概念を誰かに「定義してほしい」では会話にならない
「自分はこういう定義・定式化するのが適切だと思う」と自発的に提案できなければ、数学の研究はできない
>>661は完全に間違っている
668デフォルトの名無しさん
垢版 |
2024/11/18(月) 13:54:18.06ID:fHwV6VSA
>>654
全部できるな
669デフォルトの名無しさん
垢版 |
2024/11/18(月) 13:55:52.57ID:0TuJxtFY
>646
lim[x→0](sin(x)/x)
lim[x→-0](1/x)
670デフォルトの名無しさん
垢版 |
2024/11/18(月) 14:03:32.55ID:fHwV6VSA
>>654の言ってるのは、「CPUは整数しか扱わないから、コンピュータで文字列は扱えない」と言ってるのと同じ
それに対してこちらはずっと「文字に文字コードを割り当てれば文字列を扱える」と正しい指摘をしているのだが、
「できるならプログラミングで書いてみろ」とか意味不明な言いがかりをつけてくる
671デフォルトの名無しさん
垢版 |
2024/11/18(月) 14:09:15.00ID:q1fjBomZ
Σ_{k=0 to N} 2^(-k)が2に収束することを証明するには、N = 100や1000を代入しようが駄目で、極限を扱わなければならない
>>654のやってることは何の意味も無い

で、イプシロンデルタ論法を使えば厳密に証明できるとこちらは何度も言っているのに、聞く耳を持たない
2024/11/18(月) 16:37:50.26ID:IQFlTfLo
数学、プログラム、実装がごっちゃまぜ
673デフォルトの名無しさん
垢版 |
2024/11/18(月) 16:50:14.60ID:xbnEkxri
数学と実装は独立

プログラミング言語処理系の数値型が近似値だから、実数や極限を扱えないなどという馬鹿な話は無い

それは、CPUが整数値しか扱えないからプログラミングで文字列を扱えないと言ってるのと同じ
2024/11/18(月) 16:52:09.17ID:IQFlTfLo
馬鹿乙
2024/11/18(月) 16:53:49.78ID:IQFlTfLo
お前が思ってる仕様のプログラム作るんだろ?
676デフォルトの名無しさん
垢版 |
2024/11/18(月) 19:26:51.96ID:cmnYUiAb
>>671
うちの主張したいことは、イプシロンデルタ論法はいくらでも数値の誤差をイプシロン以下に抑えられるのを保証することを証明しているのだが、プログラミングではそのイプシロン以下に抑えられない程誤差が大きくなるってのが、数学を厳密にプログラミング出来ない理由として挙げてる。

プログラミングのは、極限値だけ決め打ちで答えが出るようにしてるだけなので、100とかでイプシロン以下に抑えられない誤差が現れる例としてだした。

添え字集合が実数や複素数というのも、その実数の連続性・比可算無限が根本にある。

無限次元の空間は整数の話だが、多倍長整数使ってもメモリ以上の空間は扱えない。

どれも事実上問題になるわけではないが、>1のいう「近似ではなく厳密に」なら不可能と言わざるを得ない。
677デフォルトの名無しさん
垢版 |
2024/11/18(月) 19:29:55.61ID:cmnYUiAb
x比可算
o非可算
678デフォルトの名無しさん
垢版 |
2024/11/18(月) 19:37:30.06ID:uqz705Or
>>676
何度同じことを言えば理解できるのだろうこの馬鹿は
679デフォルトの名無しさん
垢版 |
2024/11/18(月) 19:42:40.18ID:cmnYUiAb
>>678
プログラミング可能なことをコードで示したら理解します。
680デフォルトの名無しさん
垢版 |
2024/11/18(月) 19:42:42.62ID:uqz705Or
「実数εを任意に選べる文脈で、項と極限値の差をε未満に抑えるNを選ぶことができる」ことを示すのがイプシロンデルタ論法

それを記号論理で扱える処理系を実装すればいいだけ

εは「正の実数である」という情報しか持っていない
浮動小数点数や多倍長整数の誤差なんか全く無関係
681デフォルトの名無しさん
垢版 |
2024/11/18(月) 19:43:14.48ID:uqz705Or
>>679
>>655
682デフォルトの名無しさん
垢版 |
2024/11/18(月) 19:47:34.77ID:uqz705Or
>>679
それはお前の理解力が低すぎるだけ

コンピュータで文字列を扱うのに文字コードの実装をすべて見せなくたって
「たとえば文字の'0'に整数48を割り当てる」のように説明すれば、ふつうの理解力があれば理解できる

自分の知性の問題を責任転嫁しないでくれ
683デフォルトの名無しさん
垢版 |
2024/11/18(月) 19:47:39.20ID:cmnYUiAb
>>681
verify()の中身。
あと、決め打ちって書いてるでしょ。

その100での具体的な近似値求められないと「厳密」にならない。

なので私からの宿題は100の時の具体的な近似値を求めるコードを示すこと。
684デフォルトの名無しさん
垢版 |
2024/11/18(月) 19:51:22.47ID:uqz705Or
>>683
二進法で一の位以下に1が101個並んだ数だよ

こんなんプログラミングしなきゃわからんの?
685デフォルトの名無しさん
垢版 |
2024/11/18(月) 19:53:44.06ID:uqz705Or
s = "1.";
for(int = 0; i < 100; i++) s += "1";
print(s);

以上
686デフォルトの名無しさん
垢版 |
2024/11/18(月) 19:58:41.23ID:uqz705Or
print("2 - (1/2)^100");
687デフォルトの名無しさん
垢版 |
2024/11/18(月) 20:05:19.56ID:cmnYUiAb
>>680
ε自体はな。
でも、真の値aに対して a + ε, a - εって使うのがイプシロンデルタ論法。
数学ではそれで限りなく無限に近くεを小さくしてもその範囲内に真の値が存在することを証明しているが、
プログラミングでは一定の大きさのεまでしか保証されない。

こういえばいいか?
真の値は確かにあるが、プログラミングでは間違った値を返す場合がある。

極限が正しければ厳密じゃない。
途中もすべて正しくないなら、それは厳密ではない。
688デフォルトの名無しさん
垢版 |
2024/11/18(月) 20:12:54.11ID:cmnYUiAb
>>685,686

御大層なこと言っておいてそれで数学を厳密にプログラミング出来ましたってか?
そういうのを決め打ちっていうんだよ。

どんなコードが出るか期待してたら…。
689デフォルトの名無しさん
垢版 |
2024/11/18(月) 20:13:02.34ID:uqz705Or
>>687
こいついつまで同じ間違いを主張し続けるんだろう
わざとなのかな
2024/11/18(月) 20:24:40.45ID:IQFlTfLo
>>687
それは組み込み関数、ライブリライのせいだよ、アホ
2024/11/18(月) 22:59:54.21ID:IQFlTfLo
素人の爺には困ったもんだ
2024/11/19(火) 06:48:48.49ID:EzNMoOuG
>>687
そんなことは70年代には解決されている
2024/11/19(火) 12:52:15.23ID:+rLs2eZU
なんか擬似問題臭くて良くわからんが、非可算無限と可算無限を同列に扱っている?

ε-δ論法の話をしているけど、「対象」が可算集合ならコンピュータでもε-δ論法を扱えるけど、「対象」が実数とかの無限列相当のものは扱えないよね。

ここは同意できているの?
694デフォルトの名無しさん
垢版 |
2024/11/19(火) 14:24:36.15ID:vPThvbnG
>>693
扱えるが
2024/11/19(火) 14:49:59.72ID:BjXbrgPI
発明したな
>「対象」が可算集合ならコンピュータでもε-δ論法
696デフォルトの名無しさん
垢版 |
2024/11/19(火) 15:02:31.77ID:9IpsHqjo
イプシロンデルタは
「正の数εが任意に与えられた文脈で、極限値と第N項の差をε未満にできるNが存在する」
ということを示すもの
浮動小数点数の精度は全く関係ない
697デフォルトの名無しさん
垢版 |
2024/11/19(火) 15:20:30.96ID:Mq7l08eX
数学で証明できることはすべてコンピュータでできる
■ このスレッドは過去ログ倉庫に格納されています
5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。

ニューススポーツなんでも実況