知ってるとプログラミングに役立つ数学知識
プログラマーの専門学校卒なのはしゃーないけど
頼むからC++出来るいう前に四捨五入くらい説明せんでも理解しておくれよ
計測器とか計算アプリ作るのにINTで処理するやつおらんやろ…専門学校いらんわ 現役中学生という説が……いや今どきの子は5chなんて来ないか…… 三角関数と集合の初歩くらいは習うかなぁ・・・
教え方がヘッタクソなんで全く意味の分からん暗記科目だったけど >>23
座標系でなにか線があったとして、その線を同じ長さに揃えるのを正規化って言うねんな
二次元平面上だとxとyの移動量の比率で線がどこ向いてるかが分かるねん、z軸も足せば3Dでも同じ事ができる
三角関数ってのはそんな感じの奴やで 高校数学相当をやり直してるが、とりあえずあんま活きるとは思えん・・・ 数学とは意識せずに使ってるからなあ。
それよりも数学的な考え方が出来ない人の方が問題だわな。 15年組込みでやってきて実際使った数学知識を思い出してみると
・三角関数
・微積分
・ベクトル
・行列/行列式
・ラプラス変換
・一次変換とかアフィン変換とか
・円の式
・多角形の面積
こんなものか >>30
数学を勉強しなければ
数学的な考え方は身につかない >>30
慣れているプログラマはほぼこんな感じだろうな
めんどくさいアルゴリズムになるとライブラリ使うことも多いし
意識して使ったことがあるのは三角関数くらいしか思いつかない 2で割った余りで帳票の色を一行ずつ変えるやつ
1ページあたりの出力行数で割った余りがゼロになったとき改ページするやつ
3で割った余りがゼロで四半期計を出すやつ
・・・余りしか使ってねえ!
ていうか最近帳票しか作ってねえぞ! せめてどういう分野で
役に立ったかは書いてくれないと
数学のキーワードが並ぶだけになってしまう 物理ではx/0=∞と定義することもあるよ。
∞^∞とかもあるよ。 三角関数:車のメーターの針をステッピングモーターで滑らかに動かすときに使った >>50
それのどこに三角関数が必要なんだろう... >>40
四則演算は算数の領域では終わらない
複素数、行列、有理式、4元数、...
体論は大学の専門の範疇 三角関数は、歩く時のカメラの上下とか反復で滑らかにする時、とかに使ってるな。 >>49
ただし x≠0 。
関係ないけど、ニュートン法便利。 >>32
測量ソフトを書いていて、それらを勉強した。で、殆ど中学の授業で習っていたと気づいて驚いた。 ラプラス変換がプログラミングに役立つ?
どんなプログラミング? 死ぬほど?
ニュートン法のが使う
単なるルートの計算でも 逆数学
公理的集合論
多様体
ゲーム理論
グラフ理論 いまどき画像圧縮にDCTはないだろ。古代の技術だ。 >>70
だから何?
現存している古代の技術なんだからそりゃ使われてはいるだろ。
馬鹿はこれだから困る。 昔に書かれたコードが残ってたり前例踏襲で使われる事はあっても積極的に取り入れる理由は無いからやめといた方が良いとかそんな事が言いたいのでは
ちな素人 JPEGなんて1992年の技術だからなぁ。JPEG 2000はDCTではなくてDWTだしね。
もう20年以上DCTを活用したものなんて出てきてないだろ。 枯れて先がないものの数学的な知識なんていらないじゃん。
誰かが作った枯れたライブラリを呼ぶだけでしょ。
車輪の再発明みたいな無駄な努力がお好きな人? wavを再生しながらスペアナ表示させたいんだけど、どんな数学知識が
必要ですか?皆目見当もつかず行き詰ってます。
32ビットマイコンで作ってます。
wav再生はできています(PWM使用)。
言語はC or C++で、DSPは搭載してません。
範囲の異なるバンドパスフィルタを使うのかと思いますがどうでしょうか? 今使われてるのに古いから勉強しないとかよく分からん考えだな >>83
おお、レスありがとう。早速しらべてみる! なんとなくイメージがわきました。
Excelで計算中 FTは数学の範疇だけど
FFTは単なるFTのアルゴリズムだから
数学の範疇では無いのでは? HITO -> HUTA
MITU -> MUTU
YOTU -> YATU 趣味でやるなら
極座標やアフィン変換が理解できてれば
いろいろと楽しいことができるぞ ここまで郡数列なし
1列に5個表示する、とかいうやつでよく使うと思うんだが オプティカルドライブへの書込み読込み処理の誤り補正で行列を使ったなぁ。 条件、and、orの関係
否定は全て逆の関係になる (図に書いて考えるとよくわかる)
条件A and 条件B の否定は 条件≠A or 条件≠B
条件A or 条件B の否定は 条件≠A and 条件≠B
条件≠A and 条件B の否定は 条件A or 条件≠B
条件≠A or 条件≠B の否定は 条件A and 条件B
※ 数学の世界だとand=∀、or=∃とも言える >>7
そもそも、intとfloatの違いも怪しい奴が居るから 圏論やるにしても、
・Product/Coproduct
・Exponential
とか基本的なUniversal constructionは、はじめから言語に備わってるし
圏論を意識しなくても使ってるだろうから、圏論を通してこれらを知っても
自分のコードの良し悪しに影響するかと言われると微妙。
圏論の重要概念Adjunctionに関しても、プログラミングに関係してくるのは
Product/Exponential adjunctionだろうけど、これも所詮ただのカリー化だから、
カリー化の背後にはAdjunctionがある!って言われても、ほとんどの人は「で?」で終わりそう。
それでもめげずに
・F-algebra <=> 再帰的データ構造
・Yoneda lemma -- 下記を扱う上で当たり前のように使う
・End/Coend <=> 全称型・存在型の好例
・Kan extenstion <=> Free construction(特にFree functorなんかは魔術的)
あたりまで踏み込むと、このあたりはプログラミングと絡めても面白い。 普通は数学的知識は不要だよ
必要なのは数学的、理論的思考
小学校で算数が得意だったら見込みあり
数学の理論が必要になったときに調べればいい 数学知識が不要なのは底辺くらいじゃね?
「ライブラリが計算してくれるから」が答えだったら、計算が合わない時に何が違うのかわからなくなりそ 俺からすれば
みんな数学的知識や数学的思考力が無い
それ大学の教養レベルだろってことすら知らないヤツばかり
理系の大学院を出て理系の仕事につくのに
今まで何をやって来たんだと言いたい 大学生の大半はカスだけど、1割くらいはまともなのいるから… >>121
大卒なのにZFC公理も知らないとか論外だよな もしかすると有限容量で実数を完全に記録する方法を思いついたかもしれない。 完全にの意味がわからん
どんな実数もデジタルで記録出来る
なんてフォーマットは存在しない
整数の数より実数の数の方が多いのだから当然だが >>119
信頼できるライブラリに投げて「計算が合わない」って自分の設計ミスしかありえない
自分のこだわりで作るとか特殊な状況じゃなければ細かい知識までいらんわ その、
自分の設計ミスの理由がわからん
てことだろ >>119
その理屈で言えば、テレビが壊れた時
何が原因で壊れたのかわからなくなりそ
という、それ普通だよね?って話になる。
それを実現する技術まで知る必要はないんだよ。
お前だってCPUを実現してるシリコンの性質とかしらんやろ? プログラミングも同じ。
誰しもそれを実現してるライブラリや
その先のことまで考える必要はない そもそも数学的アルゴリズムは数学者が考えればいい
数学者はそういうことが得意だろ?餅は餅屋。
プログラマはアルゴリズムをソフトウェアで実装すればいいだけ >>134
プログラミング言語のコードで書いてあればなんでも読めるよw プログラミング言語で記述可能な数式や関数なんて
数学で扱える数式や関数のごくごく一部だから 逆にプログラミングで書かれたものを数式に出来るの?
例えばテトリスとか 数学者は
コンピューターが生まれるずっと前から
プログラム言語での記述の限界の研究をしてる
テトリスの記述くらい簡単 ルービックキューブは群論の研究対象だしテトリスも似たようなもんじゃね? テトリスのコードを数式で書くのと
テトリスのゲームの数学的解明とは全く違う話
ルービックキュブ群
学問としてはあまり価値が無い
昔研究したけど 普通に考えて、中学や高校で習う基本的な数学。
それ以外にない。
もの凄く役に立つ知識もあるけど、中高で数学が駄目だと話にならない。
あと、自分の分野の論文が読めるくらいの英語。 >>141
>中学や高校で習う基本的な数学
微積分は含まれますか?
線形代数、最近はやらないみたいですが、線形代数も含まれますか? >>142
そこで「考え方」を学ぶ。
集合とか写像とか高一でやるアレの方がもっと本質。
お前馬鹿だろ。いや、馬鹿だね。 >>143
集合は高校でやっていても、写像は高校ではやらないのでは?
やるとすれば、平面幾何(解析幾何)による軌跡の求めかた、くらいではないでしょうか >>144
今の高校数学教育は知らんけど俺んときはやった。
写像を知らないと大学レベルでやる群、環、体、束、そういうものすごく基本的なことが全く理解できない。
小手先のテクニックじゃなくて、考え方。演算という考え方。
役に立つとかいうより必須項目なのよ。 SQLについて聞かれて、
「まずは集合を演算する言語だと思った方がいい。オラクルのあれこれはまず見るな」
と答えて「あーなるほど」と得心する人間は少ない。
RDBの考案者のコッホ自身が集合と写像を意識して設計したのにもかかわらず、だ。
20世紀初頭に数学に深刻な課題を突きつけたのも集合論。
集合は基礎の基礎の基礎。
…つっても分からんよな、おまえさんでは。 >>145
写像は、今の標準教科書ですらちょっと雑な感じがしますね
全体集合 N に含まれる集合 A の逆像(逆写像ではありません)f^-1(A) を、あなたならどう定義しますか?
私なら
「f^-1(A) は∀x(x∈f^-1(A)→f(x)∈A) かつ∀x(x not∈f^-1(A)→f(x)not∈A)を満たす」
と定義しますし、そう定義しないとその後の論理展開が不可能なのですが、この定義が教科書に載っているのはみたことがない 大学でゼミの教授が写像と関数の定義は同じで
実数を扱う時に関数、実数以外を扱う時に写像と
言葉で分けてるだけと言っていたのが印象に残っている。 >>147
変な定義
定義の中で自分自身を使ってるし
意味が直接的ではない
● f を以下とする
f :
x |-> f(x)
N -> M
●A⊂M の時 f^-1 を以下で定義する
f^-1(A) := { x∈N | ∃y∈A s.t. f(x)=y } コッホではないコッヅだよ
あと関数は写像の真部分照合 数学の用語をプログラミング言語の用語で説明してくれるものないかなぁw
プログラミング言語で説明されたほうがわかるwww 数学の用語は厳密さか重要だからなあ
プログラミング言語の用語と似ているところがあるけれども
微妙に違うから直観的な理解としてはいいかもしれないけど
厳密にいうと間違い >>154
数学者になりたいわけじゃないんで厳密さはいらんのよ
入門書と同じようにさらっと解説してくれればいい
用語を知らないから難しく感じるだけ。知ってる用語に対比させれば理解が早い
Σとか、ループ、初期値、終了値、ループの中身って
教えればプログラミングしたことのある小学生でも
簡単に理解できるやろ?w >>150
教科書によく掲載されている定義ですが、しかし、この逆像の定義では問題があります
f:N->M, A, B ⊂ M
のとき、
f^-1(A∪B) = f^-1(A)∪f^-1(B)…@
f^-1(A∩B) = f^-1(A)∩f^-1(B)…A
特にAの証明が直感に頼った記述になってしまい、極論をいえば記号論理は記号操作的に処理するべきというある種の理想とは遠い証明になってしまいます
Aの証明を示していただけますか? よく分からんけど数学の証明ってちょいちょい「直感的に明らか」って使うよね 数学の用語とコンピュータ用語対応早見表
数学 コンピュータ
ーーーーーーーーーーーーーーー
集合 型
積 タプル
余積 判別共用体
指数 関数
(自己)関手 ジェネリッククラス
自然変換 パラメトリック多相関数
イコライザ SQL
表現可能関手 メモ化
指数-積随伴 カリー化
F代数 再帰的データ構造の畳み込み操作
他に何かあるかな? >>157
x∈f^-1(A∩B)
<==>
f(x)∈A∩B
<==>
f(x)∈A ∧ f(x)∈B
<==>
x∈f^-1(A) ∧ x∈f^-1(B)
<==>
x∈f^-1(A) ∩ f^-1(B)
そのまんまな気がする >>159
代数学の用語を追加して。あれまんまオブジェクト指向やろ?w >>163
続きはお前に任せた。
数学の用語をプログラミング言語の知識で例えてみてくれ >>160
それは、f が全単射のときにしか使えない証明法ですね、すなわち f^-1が逆写像のときの証明であって逆像のときの証明ではない
その証拠に f^-1 :逆像の定義をまったく使っていないですよね 集合は要素の重複を許さないのが定義の一部だから
HashSet とかあっているんだよなあ >>165
単射や全射の条件など使ってないけど
>>150の定義通り書くと以下だけど
x∈f^-1(A)
<==> x∈ { x∈N | ∃y∈A s.t. f(x)=y }
<==> ∃y∈A s.t. f(x)=y
<==> f(x)∈A
ていうか、定義も以下で良かった
f^-1(A) := { x∈N | f(x)∈A } >>161
代数学がオブジェクト指向というのはよくわからない。
単純に俺がオブジェクト指向を知らないだけかもしれないけど。
オブジェクト指向のクラスポリモーフィズムの根底にあるのは存在量化型だと思うけど、
存在量化型は数学というより型理論だから、そのさらに背後にある数学とかはもっと詳しい人に譲る。 >>169
http://hooktail.sub.jp/algebra/FieldDef/
> ある集合があって,その集合が,四則演算(加法,減法,乗法,除法)に関して閉じているとき,この集合を 体 と呼びます.
数値オブジェクトには、add, sub, mul, div メソッドがあって、+, -, *, / という演算子で
メソッドをよびだすことが出来ます。
https://ja.wikipedia.org/wiki/%E9%A0%86%E5%BA%8F%E9%9B%86%E5%90%88
> 数学において順序集合(じゅんじょしゅうごう、英: ordered set)とは「順序」の概念が定義された集合の事で、
つまりcompareインターフェースを実装したもの とりあえず数学もプログラミングも専門家(プロ)の俺からしたら
>>159はめちゃくちゃ 具体的な事と抽象的な事があれば、具体的な事の方が理解しやすい。
それは数学が得意な人でも得意じゃない人でも同じ
だけど数学が得意というか好きな人は具体的な事を
抽象化する作業が好き、つまり自分が好きな事をやっている。
だけど数学が好きではない人が数学を理解する時
抽象化する作業は好きではないのですっ飛ばす。
すっ飛ばした上で抽象化された結果から見る。
抽象化された結果から見ても、理解するのは難しい。
だから具体的な事で話せと言うのに、数学が得意な人は
俺が好きな抽象化はお前も好きだろ?ということで
具体的な事から抽象化する作業の話をする。
違うんだよ。俺らが求めてるのは抽象化されたものを理解するために
より具体的な事に持っていきながら説明しろって事なんだ。
お前らが好きな事の話をしろと言ってるんじゃない。 これとこれは実は原理は同じなんだよ
というのが数学なので
具体例に限ってしまうとありがたみがなくなるんだよな
この具体例は数学の何々が使えるから
という推論ができないとダメ 四つの種類の選択の中から重複ありで、二つを二回選んで、求めてる四つと順序と種類が合致する確率の計算式ってどう書けばいい? >>177
数学のありがたみを感じたいんじゃない。
数学を学びたいだけ。
数学を学ぶことは〜とかいう話ではない
数学の本質を知りたいのではなく
数学の本に書いてある数式を読みたいだけ >>174
だからどのへんがめちゃくちゃなのか言ってみろやw
圏論的積の意味もわからない自称専門家くんww 例え話は100%一致していない。
だからめちゃくちゃである。 >>186
まだまだいろんな解釈が出来るからいろんな式が出てくる
手順をちゃんと具体的に書いて >>187
疑似コードだとこんな感じ
cards = ['A', 'B', 'C', 'D']
choices = cards.pick_random(2).join(cards.pick_random(2))
ans = ['D', 'C', 'A', 'A']
asesrt choices == ans アルゴリズムの中に数学的な手法を使った部分が含まれる
ものによってはアルゴリズムの大部分が数学的な手法になっているものもある
という扱いでいいだろう
テトリスの複雑な回転アルゴリズムとか数学とは思えないからね
回転アルゴリズムなんて数学そのものだろ!と言ってくるやつが
いそうだから先に言っておくと「テトリスの複雑な回転アルゴリズム」
というのはこういうもの
http://www13.plala.or.jp/TETRiS_TGM/kouza/12.htm バンド数が多いなら窓かけてFFT
少ないならバンドパスフィルタ 算数も数学もほぼ忘れたんだけどやり直したほうがいいのかな・・ テンソルと行列が同じだと言ってる人と
違うものだから気をつけろと言ってる人が居て
混乱する >>200
納期に近づけば近づくほどバグが増えて完成が遅くなる法則? 単独の数がスカラー
複数の数の並びが(1つでもいい)がベクトル、ベクター
二次元以下の配列(スカラーとベクトルを含む)が行列
一般の配列(三次元、四次元の配列、行列、ベクトル、スカラーを含む)がテンソル
定義自体は難しくもなんともない
演算も実はそんなに難しくない
難しいと思い込んでいるだけ 単に数を複数並べてもそれがいつもベクトルになるとはかぎらない
「ベクトルの成分」にはなるかもしれないが、それが本当にあるベクトルの成分であるためには
座標の変換に対してある決まった規則に従って変換されなければならない
しかしもしそれらの数が正しい変換則に従って変換されるとしても、それ自体はベクトルではなく、
ある決まった座標の上での成分にすぎない。その座標の基底と合わせてはじめてベクトルになる。
テンソルと行列の関係は、上でいうベクトルと「ベクトルの成分を並べた数の集まり」の関係と同じ。 直線(1) y = -x + 9 と
直線(2) y = x/2 - 3 と
直線(3) x=2 がある
(1) と (3) の交点を A
(2) と (3) の交点を B
(1) と (2) の交点を P
とするとき
点P を通り三角形 ABP の面積を二等分する直線の式を求めよ
python + matplotlib で線形代数を使って解いてください >>210
面白い問題だね
プログラミングのお題スレで出題したほうがいいのでは 役に立つのは
組み合わせ、確率、線形代数
役に立たないのは
圏論、ラムダ計算 >>210
紙と鉛筆で解いた方が早いような気がするが 問題を読むのに20秒
解き方を考えるのに5秒
Pを求めるのに10秒
傾きを求めるのに2秒
y切片を求めるのに3秒
計40秒 直線の式は OP↑ + t(PA↑ + PB↑)
A=(2, 7), B=(2, -2), P=(8, 1) は安産なので
(8, 1) + t((-6, 6) + (-6, -3)) が直線の式
T = 3t と置いて x = 8 - 4T, y = 1 + T
Tを消すと x = 8 - 4(y-1)
x + 4y = 12 が答え
ここから sympy / matplotlib 使う方法は知らん ひょっとして自然言語で放り込んで
式が出力として出てくるpythonのプログラムを求めているとか? int main() {
printf(“私はこの問題について真に驚くべき証明を発見したが、ここに記すには余白が狭すぎる。”);
return 0721;
} >>222
確かに数学は苦手です…
何を勉強すればいいか、是非ご教示くだされば幸いです >>223
数学は才能だから
凡人は何をやっても凡人 >>228
数学はどの辺まで?
知っている分野を言ってみて >>231
お前偉そうだけど
お前は数学の何を知ってるの? >>212
周囲に対して数学マウント取るのに、圏論は「役に立つ」じゃん? 大浦版実数離散FFTの縦軸の単位ってどうなっているのでしょうか?
例えば1Hzで±0.5の振幅を入れた時に、
複素数の二乗和の平方根【√(N[0]^2 + N[1]^2)、√(N[2]^2 + N[3]^2)、・・・】を取って2倍しても
1Hzが0.5にならないのですが、何か間違えていますでしょうか? FFTサイズのルート倍
FFTサイズ倍
が考えられそう 離散ウェーブレット変換のマザーウェーブレットにガボールって組み合わせを
解析ソフトや実際に使っている論文を見ないのですが、
何か理由でもあるのでしょうか?