数学

ある双曲線の整数解

36*x^2-4*x-71*y^2+8=0 の整数解の導出。Ruby でできるだけ解いてみる。 solve.rb dir = [[1, 0], [0, 1], [-1, 0], [0, -1]] x = y = 0 step = 1 f = ->{p [x, y] if 36 * x ** 2 - 4 * x - 71 * y ** 2 + 8 == 0} add = ->(i) { dx, dy = dir[i] x += dx y…

スプライン曲線(メモ)

3次スプライン補間(PDF) Ruby - 3次スプライン補間! - mk-mode BLOG http://d.hatena.ne.jp/mscp/20091228/1261968512 Ruby実用例 〜スプライン補間〜 - [物理のかぎしっぽ] setup diary(2012-02-18) 直接は関係ないが、Ruby で GSL(GNU Scientific Li…

ルンゲ−クッタ法(メモ)

google検索 微分方程式+数値計算 google検索 運動方程式+数値計算 EMANの物理学・物理数学・常微分方程式の数値解法 運動方程式の数値計算法

謎の集合演算

とか はいいのだが。では より、 なんだが、こんなのって公式として役に立つ?って計算したのでとりあえず書いてみた。

行列式の展開

を x で展開するととなるというのがよくわからない… ・線形という構造へ―次元を超えて (大人のための数学) p.114

Linux で GRAPES

WelCome to GRAPES Linux で関数のグラフを描くツールを検索してみたところ、GRAPES というのを発見。主に高校数学が対象ということだが、自分には充分そうでしかも簡単っぽい。本来は Windows 用だが、Linux の Wine で試してみたところ問題なく動く。陰関…

Sympy 展開計算例

>>> from sympy import * >>> x = Symbol('x') >>> y = Symbol('y') >>> expand(6*(x/40 + 3045684*y)**2 + 4*(x/40 + 3045678*y)**2 + 10*(x/40 + 3045660*y)**2 + y*(121826832*y - 1)) x**2/80 + 15228354*x*y/5 + 185522334268704*y**2 - y >>> from sym…

Linux Mint 18 で Wxmaxima

インストールは「ソフトウェアの管理」で。 ※参考 Maxima入門 Maximaのインストールから簡単な数式、グラフ作成まで 虎の備忘録: Ubuntu Maxima

Linux Mint 18 で imaxima

Emacs から imaxima を使う。表示される式が Tex で表示される。Emacs は「ソフトウェアの管理」からインストール。 $ sudo apt-get install texlive texlive-math-extra maxima maxima-emacs 起動は $ emacs -f imaxima でOK。

gnuplot 出力例

陰関数の表示。 require 'bundler/setup' require 'numo/gnuplot' Numo.gnuplot do set term: {png: {size: [600, 600]}} set output: "output.png" set "multiplot" set xrange: -10..10 set yrange: -10..10 set "contour" set "cntrparam levels discrete…

双対パッポスの定理

パッポスの定理の「点」と「直線」を入れ替えたもの(参照)。 Width = 400; Height = 400 #main gray = [0.5, 0.5, 0.5] blue = [0, 0, 1] green = [0, 1, 0] li1 = Point.new(-1, -5) li2 = Point.new( 0, 6) b1 = Line.new(li1, Point.new(-1, 5)).draw(c…

パッポスの定理の図示

screen.rb require 'bundler/setup' require 'cairo' require './cairo_gtk' include Math Width = 400; Height = 300 Xrange = [-10.0, 10.0] ScaleX = ScaleY = Width / (Xrange[1] - Xrange[0]) CPX = 0; CPY = 0 Surface = Cairo::ImageSurface.new(Cair…

区間2分法と1変数方程式

区間 [left, right] で、関数 f は必ず単調増加あるいは単調減少でなければならない。 def binary_search(f, left, right) up_down = (f[right] > f[left]) ? 1 : -1 while (left - right).abs > 0.000000000000001 a = (left + right) / 2.0 if f[a] * up_d…