アメリカの大学で奮闘中

アメリカの大学でプログラミングを学ぶべくコンピューターサイエンス学部に留学したものの挫折し数学科に転部した著者が、自分の挫折ポイントを踏まえて数学、プログラミング、アルゴリズムついてできる限り分かりやすく解説してみるブログ。*できる限り記事の内容は技術的な間違いをしないように気をつけていますが、もし間違いがあれば教えていただけると助かります。

2020-01-01から1年間の記事一覧

Geometry 相似の証明

中学の時に習ったであろう、2つの角が同じなら相似を証明していきます。 事前準備 そもそも相似とは そもそも相似(similarity)の定義は... 大学で使っているテキストブックによると... Two triangles are similar if their corresponding angles are equ…

大学の確率入門〜確率分布、確率変数、確率密度関数〜

大学で習う確率では関数で表して、微積も使います。 高校での確率の知識を持って大学の授業を受けた時にカルチャーショックのようなものを感じたので、そのような人が少なくなることと、確率をもっと詳しく学んでみたい人の入り口になることを願ってこの記事…

グラフ理論の超基礎とイメージが分かる記事

コンピューターサイエンスでも扱われるグラフ理論がどんなものなのかと、それの基礎的な知識を解説することが目的です。 少し特殊な数学なのでなれるまで少し時間がかかるかもです。 グラフと聞くとy=f(x)のグラフなどを思い浮かべるかもしれませんが、ここ…

<高校数学>高次方程式(3次以上)の解の探し方

今回は数2の内容です。 高次方程式を解く時に必要なマインドセットは”とりあえず解を一つ見つける"です。 解 α一つでも見つかると因数定理より x-α が因数であることが分かります。そこで元の関数 f(x) をその因数で割ることで、少し簡単な式を得れます。こ…

数学、哲学、プログラミングで異なる正しい

雑談回です。 僕の知っている中で最もロジックを使い、ロジカルシンキングを必要とする学問は数学、哲学、プログラミングだと思っています。 ですが、自分の知る限りこの3つはロジカルシンキングでも異なるマインドセットが学問の中にあるように感じます。 …

Hash Tableのアルゴリズム

Hash Tableはデータをハッシュ関数で変換したキーの示すテーブル(表)に埋め込むデーター構造です。 5個のハッシュテーブルの場合 ________ |________| ← キー0のデータ |________| ← キー1のデータ |________| ←…

プログラミング初心者にはPythonがおすすめな理由

僕の記事では一貫してpythonでアルゴリズムを紹介しています。それは僕が得意だからなのもありますが、何より読みやすさ書きやすさが理由です。 いろんなサイトでpythonは読みやすい言語だと紹介されていますが、なぜなのかをJavaと比べて紹介したいと思いま…

なぜ効率のいいアルゴリズムが大切なのか(Time Complexityの誘い)

まずは例題から alist = [1,11,5,9,13,4,3,7] このリストから13のインデックスを探すコードを考えてみてください。 今回は具体的なコードは書きませんが、おそらくforループで要素全体をインデックス0から調べる方法を考えたと思います。 この方法を使った…

<勉強法>プログラミングのエラーが起きたときのマインドセット  by python

以前プログラミングの上達法として自分の実際に行っている勉強法を紹介しました。 astrostory.hatenablog.com 今回はこの記事の続きです。 ですが、今回は勉強法ではなくマインドセットという少し怪しそうなものを紹介します。 自分はこのマインドセットを取…

選択ソート(Selectionsort)を丁寧に 解説してみた by Python

選択ソートとはデータの集合をある決まりに従って並び替えるソートアルゴリズムの一種です。 今回は array = [5,4,6,9,2,7,8,1,3] → array = [1,2,3,4,5,6,7,8,9] arrayの中身をリストを数字の小さい順に並び替える選択ソートを考えます。 ちなみにもしリス…

ベクトル空間のイメージを大学生がめっちゃ簡単に解説してみた

僕がベクトル空間を勉強したのは線形代数の授業で、定義や公理やらが多くていまいちよく理解できなかったことを覚えています。 最近やっと(本当に今更ですが)なんとなく大まかにどんなものかイメージできるようになったので、それをシェアしたいと思います…

連結リスト(Linked List)を大学生が解説してみた by python

連結リストとはデーター構造の一種で、イメージしやすくいうとノードという箱のようなものにデータを格納してを他の箱と連結している構造をとっています。 図解するとこのような感じになります。 連結リストの図解 ノードを実際にコードで書いてみる class L…

一年生植物の発芽による数理モデル

*数Bの漸化式を知っている人向けですが、理解するのにそこまで数学の知識はいりません。ただし数学的な考え方は必要。 今回はプログラミングではなく、数学関連で数理モデルのことを書きたいなと思います。 大学の授業で数学に関するトピックについて調べて…

再帰(Recursion)を使ってバイナリーサーチを書く by python

再帰(Recursion)について既に2個ほど記事を書きましたが、今回は再帰を使って二分探索(Binary Search)のコードを書いていこうかなと思います。 再帰とは何かを知りたい方向け。 astrostory.hatenablog.com 再帰の実践的な使い方を知りたい方向け。 astr…

フィボナッチ数列を再帰を使ったコードで書く  by python

*今回は再帰(Recursion)の少し発展的なでも有名な内容です。 もし再帰(Recursion) ってなに?ってなっている方はこちらを先にお読みください. astrostory.hatenablog.com 今回のテーマはタイトル通りフィボナッチ数列をプログラミングで表現するというも…

<超基礎>プログラミングの変数の使い方by python

レベル1 変数って何? まずは簡単な問題から Hello everyone, my name is Amy Hello everyone, my name is Kohei Hello everyone, my name is Muhammad と表示するコードを書いて見てください。 print() だけを使う方法 print("Hello everyone, my name is …

プログラミングの変数の定義と数学の=の違い 

今大学の2回生で数学とコンピュータサイエンスを勉強しています。 その知識を生かして、今回は「プログラミングの変数の定義と数学の=の違い」という問いを考察してみました。 プログラミングの変数の定義と数学の=の違い 多くの人が変数を定義の仕方を見…

<Recursion 再帰>コードをできるだけ短く書く技 by python

*この記事はforループと関数の知識がある人に向けて書いています 簡単な問題を出させてください。 「n!(nは任意の自然数) の計算結果を返す関数(factorial)をかいてください」 一番最初に思いつく方法はこれだと思います。 def factorial(n): num = 1 for…

<勉強法>プログラミング上達法 by python

*この記事は実際にプログラミングを勉強しているけど上達しないといった初心者に向けて書いています。 さらに前提として実際にコードをかけるようになりたい人を対象にしています。 今回は自分が実践して有効だったプログラミング(python)の勉強法を紹介…

プログラミングのエラーメッセージーの直し方(Python)

*この記事は実際にプログラミングを勉強しているけど、コードを書くときに躓いている人向けです。 僕がプログラミング初学者だった時、いつもエラー(Runtime Error)が直せず苦戦していました 今回の記事ではそんな経験から、エラーメッセージの読み方と有…