数学

マンデルブロ集合を描いてみる(Ruby)

このサイトのそのままパクリです(ありがとうございます!)。やったのは Java から Ruby へ移植しただけ。 def mandelbrot_count(c) z = Complex(0) 100.times do |i| z = z ** 2 + c return i if z.abs > 10 end 100 end Diff = 0.001 io = open("mandelbr…

コッホ曲線を描く(Python, Ruby)

自己相似図形であるコッホ曲線を Python と Ruby で描いてみました。 Python では手軽にタートル・グラフィックスが使えるので、これを利用するのが簡単です。 3次のコッホ曲線を描きます。 from turtle import * def draw(length, depth): if depth == 0: f…

Ruby でローレンツアトラクタを描画する

Ruby + gnuplot でローレンツアトラクタを描いてみました。 全体的にここなどを参考にしました。微分方程式はオイラー法(参考)で数値計算しています。gnuplot での描画は numo/gnuplot という Gem を使っています。 require 'numo/gnuplot' fx = lambda {|…

「孤独の7」を Ruby で

rscの日記さんのところで、「孤独の7」という虫喰い算を知りました。問題は右の画像のとおりです。ここで回答を募集していたようです。 Ruby で解きました。かかった時間はほぼ 0.1秒です(答えの uniqueness のチェックなし。チェックすると 0.7秒程度)。R…

複素フィボナッチ数列と GTK+ お絵かき

GTK+でお絵かきしてみた(Ruby) - Camera Obscura これまで mygtk.rb と言っていた GTK+ お絵かきモジュールを、Gem 'oekaki' として RubyGems.org に登録いたしました。よろしかったら使ってやって下さい。 oekaki | RubyGems.org | your community gem ho…

コンウェイのライフゲームを Ruby で実装してみた

有名な「コンウェイのライフゲーム」を素朴に実装してみました。一種の生態系シミュレーションですね。ルールは簡単です。「セル」が集まって長方形領域を形成しているとき、それぞれの「セル」はまわりの 8つの「セル」の状態によって「生きる」か「死ぬ」…

Python の Turtle でヒルベルト曲線

タートルグラフィックスは再帰的な図形を描くのに適しています。Python では組み込みで簡単にタートルグラフィックスが利用できるので(参照)、ヒルベルト曲線を描いてみました。5次のヒルベルト曲線です。 コードは以下です。驚くほど簡単ですね。 from tu…

GTK+でヒルベルト曲線(Ruby)

前記事の Ruby/GTK+ 用のモジュールを使って、ヒルベルト曲線を描いてみました。Ruby/Tk 版(参照)と殆ど同じです。 require './mygtk' class Draw def initialize(n, slot) @lgth = Width / 2 ** n @y = (Width - @lgth * (2 ** n - 1)) / 2 #見栄えを整え…

gnuplot で陰関数の表示(Ruby)

Python の matplotlib の plot_implicit による陰関数の描画がどうも信用ならないので、gnuplot でやってみることを考えた。しかし gnuplot 自体には陰関数を直接描画する機能はないので、工夫が必要となる。gnuplot で陰関数を描く 基本的には上サイトでや…

Python で陰関数のグラフの表示

ここを参考にしました。関数は id:mathnb さんの出題されたものです(参照)。コードはこんな感じ。plot_implicit というのが陰関数の表示なのでしょうね。 from sympy import * x, y = symbols("x y") f = x ** 6 + 3 * x ** 4 * y ** 2 + 6 * x ** 4 * y -…

Python に連立方程式を解かせる

定点を通る球の接平面 - オベリスク備忘録 上では手計算で解いたのですが、Python で機械的に解けるようなので。Sympy というライブラリを使っています。おお、すごい。これ、ライブラリはどうやっているのかな。 ※参考 Pythonを使って一瞬で連立方程式を解…

いわゆる「ビュフォンの針」の同心円バージョンについて

いつも拝読している「完全無欠で荒唐無稽な夢」というブログがあるのですが、そのコメント欄にこんなことが書いてありました。 こんにちは ^^ またお願いなんですが…^^; ビュフォンの針:平行線の間隔の半分の長さの針が平行線と交わる確率が1/πというもので…

シンプソンの公式による数値積分(Ruby)

Rubyによる情報科学入門作者: 久野靖出版社/メーカー: 近代科学社発売日: 2008/12メディア: 単行本 クリック: 5回この商品を含むブログ (13件) を見る f(x) = x^2 を [1, 10] の区間で数値積分してみます。ここでは区間を100分割します。ちなみに、正しい答…

1変数方程式を数値計算で解く(Ruby)

Rubyによる情報科学入門作者: 久野靖出版社/メーカー: 近代科学社発売日: 2008/12メディア: 単行本 クリック: 5回この商品を含むブログ (13件) を見る方程式 f(x) = 0 を ある区間 [a, b] において、f(x) が単調増加、連続、f(a) 0 であるとして、数値計算で…

「rscの日記」さんが紹介されていた問題を解く(Ruby)

またまた「rscの日記」さんが紹介されていた問題を Ruby で解いてみました。問題はこちらです。 A~Eの5人はある事業所に勤務する派遣社員である。この5人のある月曜日から金曜日までの出勤状況について次のことがわかっているとき、正しくいえるのはどれ…

Ruby の C拡張で約数を求めるメソッドを書いた

なぜか Ruby 本体には、約数を求めるメソッドがないようですので、C拡張で作ってみました。以前書いた Utilsc への機能追加です。コードは必要な部分だけ載せます。全体のコードはここ です。 #include "utilsc.h" #include "math.h" VALUE divisors(VALUE s…

Ruby で OpenGL

Ruby でも OpenGL が使えるようですが、日本語ではぐぐっても古い情報が多いので、できるかやってみました。Linux Mint 17.2, Ruby 2.2.3 で確認しました。'OpenGL' という Gem(公式HP)を入れればいいのですが、その前に Linux の OpenGL 関係のライブラリ…

プロジェクト・オイラーの Problem 68, 69

Problem 68。 def sum(i); @b[i].inject(:+); end max = 0 @b = Array.new(5) [10, 9, 8, 7, 6, 5, 4, 3, 2, 1].permutation(10) do |a| next unless a[0] == 10 or a[1] == 10 or a[2] == 10 or a[3] == 10 or a[4] == 10 @b[0] = [a[0], a[5], a[6]] @b[1]…

Ruby で gnuplot を使い関数グラフを描く

Python の pylab で簡単に関数グラフが描けたので(参照)、Ruby でも出来ないかとぐぐってみたところ、なかなか簡単なやつがありました。Linux で使える Gnuplot というツールのラッパーGem があったので使ってみます(ソースコード)。すでにここにとても…

Python 3.4 に matplotlib を入れる

T_NAKA さんのブログを拝見していたら(参照)、Python で簡単に数学の関数グラフが描けるようである。これはいいというので、自分も試してみました。コードはこんなに簡単。 from numpy import * import pylab as plt x = linspace(-10, 10, 100) y = x plt…

Tree構造を利用して問題を解いてみる(Ruby)

前回実装した Tree構造を使って、プロジェクト・オイラーの問61を解いてみました。問題はこれです。

不等式の一問題

また rscの日記さんのところからです。もとの問題はこちら。 ある塾のA組からC組までの3つの組には、合計105人の生徒が在籍しており、それぞれの組の生徒数に関して、次のア、イのことがわかっている。 ア B組の生徒数の3倍は、A組の生徒数の2倍より5人以上…

質問投稿サイトの問題を解く

また rscの日記さんのところにあった問題です。おもしろそうなので Ruby で解いてみました。元の問題はこれです。問題をコピペしておきます。 円卓の判断推理 問題 A~E の5人が円卓に等間隔で着席している。5人のうち女性は2人で、この2人の席は隣り合…

google の入社試験

rscの日記さんのところで知りました。 Googleの入社試験です。次の覆面算を解きなさい : IT速報 WWWDOT - GOOGLE = DOTCOM ただし、EとMは交換可能。Ruby で解いてみました。 def to_int(a, b, c, d ,e, f) a * 10 ** 5 + b * 10 ** 4 + c * 10 ** 3 + d * 1…

分数を循環小数に直すメソッドを作った(Ruby)

※注記 のちに全面的に書き直しました。 割り算をするとき、場合によっては割り切れず、小数部分が循環して無限に続くことがあります。これが「循環小数(recurring decimal)」です。これを扱うメソッドを作ってみました。 Rational クラスのインスタンス・…

プロジェクト・オイラーで遊ぶ(3)

ここの続きです。Ruby でやっています。 ※追記 本家サイトに登録すると、答えがチェックできるのですね。ここまではすべて正しいことを確認しました。答えは消しておきます。

プロジェクト・オイラーで遊ぶ(2)

ここの続きです。Ruby でやっています。

整数を2数の積に分ける/約数を求める

例えば 48 は、2 * 24, 3 * 16, 4 * 12, 6 * 8 に分けられますね。これを Ruby の Integer#divide2 メソッドとして実装しました。ペアを配列に格納して返します(そのようなペアがなければ、空の配列を返します)。引数に true を取れば、自明な 1 * 48 のよ…

プロジェクト・オイラーで遊ぶ(Ruby)

Project Euler - PukiWiki プロジェクト・オイラーというのは、数学の問題をプログラムで解いてみようというものです。全部解こうとか、そういう殊勝な決意ではないのですが、ちょっとだけ Ruby で遊んでみました。結果は保証の限りではありません。

質問の線形代数の行列の問題を Ruby で

質問の線形代数の行列の問題をPythonで解いてみた。 - rscの日記 rsc さんが Python でやっているのを、Ruby でやってみました。元の問題はこれです。自力では解けませんでした。組み合わせの数を劇的に減らすのがコツですね。 ans = [] target = [12, 20, 2…