「説明しましょう。または、なぜ数学者のプログラマが必要なのでしょうか。」 数学の授業を見逃さないための本

TL; DR プログラマ向けの数学に関する小さな本。 参照による電子版および紙版。



私は大学で9年間教えています。 この間に、学生は変わりました。 私の主観的な印象は、現代の新入生は自分の時間をもっと感謝しているということです。 無料参加の条件では、優秀な学生でも、KaggleまたはCourseraでの1.5時間に相当する特定の講義が彼らに利益をもたらすことを確認する必要があります。 品質の保証された説明の入手可能性はすでに古典的な講義形式を殺しているようです 。 したがって、多くの講師向けのコースの2回目の講義は、通常、非常に少ない聴衆の前で行われます。 対象者が少ない場合、学生は質問に対するより大きな操作を行います。アルゴリズムと離散化に関して私がペアで聞いた最も一般的な質問は「理由」です。



組み合わせ論理式が必要な理由 これらのすべての条件付き確率のキャッチは何ですか?通常、バスケットとボールで説明されていますか? なぜ行列を掛けるのですか? そして、なぜ逆行列が必要なのですか? さてさて、ここで幅優先検索、そしてチョですか?



私自身のIT学生の間に、これらすべての質問に対する明確な答えを受け取ったとは言いません。 しかし、まったく異なるタイプの企業での経験により、部分的に理解に近づきました。 私のペアでは、明確な類推を構築せず、一般的に業界を数学に近づけるために、猫ではなく例を示します。 同時に、長年にわたる私のすべての研究の総聴衆が1000人を超えることはほとんどありません。 だから私はたくさんの説明を思いつき、プログラマー向けの例を使って本を書きました。



以下に小さな断片を示します。 リンクをクリックすることで、本を紙または電子形式で所有できます。 フィードバックは大歓迎です! 追われた。



モスクワのアイスリンク



モスクワ 外は冬で、あまり寒くなく、晴れています。 日曜日の朝。 線形代数のテストまたは試験に合格し、独自のスケート靴を持っています。 幸せには他に何が必要ですか?



リンクに行きたいですか?



お茶を飲みながら、あなたは計画を立てました。 あなたは家に十分近いスケートリンクに興味がありますが、これは十分ではありません、あなたはまだアメニティが必要です。 Wi-Fiとトイレを使用して、これらのスケートリンクを無料にしましょう。



近くの多くのアイススケートリンクAと便利なリンク-Bを呼び出しました また、近接性と利便性の両方に関心があるため、これらのセットA intersect Bを交差させることが目標です これらのセットはどこで入手できますか?



リンクサイトを通過したり、ポスターのレビューを読んだりすることはあなたの方法ではありません。 したがって、 モスクワのオープンデータポータルにアクセスするか、Pythonスクリプトを使用して実行します。その例は、本のWebサイトのドキュメントM02-vectors(skating)にあります。 モスクワ-1350には多くのアイススケートリンクがあることがわかります。どのように検索しますか。 ここでは、線形代数の教科書を思い出し、必要な標識の2つのスペースにローラーを表示する必要があることを理解します。2次元座標(緯度、経度)と3次元-アメニティ(Wi-Fi、トイレ、無料)です。



2番目のスペースでは、属性の存在は統一され、不在はゼロになります。つまり、このデータを正規化する必要はなくなります。 緯度で比較できるため、座標も正規化しません(そうでなければ、基準点を選択して度をメートルに変換する必要があります)。 そして、最も興味深いオプションのみを選択してください-街の反対側にある、または明らかにアメニティがない明らかにスケートリンクが必要なのはなぜですか? 任意のスペースについて、ターゲットまでのユークリッド距離が最小のデータのみを取得します。



def topN(expected, data, N): norms = list(map( lambda row, number: (np.linalg.norm(row - expected), number), data, range(len(data)))) #  (, ) norms.sort(key=lambda r: r[0]) #  return set(map(lambda r: r[1], norms[:N])) #  
      
      





すべて準備完了です。 私たち自身の座標のどこかを覗き込んで(今ではマップを使ってどんなアプリケーションでも行うことができます)、適切なスケートリンクをすべて見つけるだけです

セットABの交差点:



 me_geo = np.array([37.676289, 55.772266]) #     me_conv = np.array([1.0, 1.0, 1.0]) # : Wi-Fi, ,  depth = 1 A, B = set(), set() #      —   while not A & B: A = topN(me_geo, latlon, depth) B = topN(me_conv, convenience, depth) depth += 1 for rink in A & B: print(rinks[rink]["Address"])
      
      





この例のデータでは、最も近い30のリンクのうち、Staraya Basmannayaに1つのリンクがありますが、すべての設備があります。 そして、あなたも歩くことができます。







モスクワのオープンデータポータルを使用して、最も近いオープンWi-Fi、夏の映画館、または屋外監視カメラを見つけてください。



All Articles