2007-07-01から1ヶ月間の記事一覧

Lmap/filter の引数に $_ を

Lmap/filterの第一引数には sub を省略した無名サブルーチンを使えますが,そのサブルーチンの引数は一個で,$_[0] を使います.一方,Perlの組み込みのmap/grepでは,デフォルトの $_ を使います.そこで,Lmap/filterでも同じように $_ に変更してみます.…

有限リンクトリストのgrep,filter

mapの次はgrep.名前をfilterにします. sub filter(&$){ my ($f,$l) = @_; return unless $l; my $temp=head($l); if ($f->($temp)){ node($temp, &filter($f,tail($l))); }else{ &filter($f,tail($l)); } } filterはリンクトリストのノードを一個一個たど…

有限リンクトリストのmap

sub Lmap(&$){ my ($f, $l) = @_; return unless $l; node ($f->(head($l)), Lmap($f, tail($l)) ); } listのmapということで,Lmapとしました.Higher-Order Perlでは,transformという名前になっていますが,mapの方が短いので(^^;.これを実行してみると …

半角カタカナ

TeX

2007-07-28さんのところで発見.TeXネタ.いわゆる「半角カタカナ」*1ASCIIでいうところの128番から256番の文字はTeXでは鬼門です.日本で標準的なpTeXでは,ソースの文字コードによって SJISの場合は無視(組版には現われない) JISの場合はエラー(コンパイル…

疲れた

仕事が忙しかった.疲れた.頼むから25日のPM3:00と26日のPM2:00に持ってきて,27日のPM3:00までに223ページ+53個の図版修正なんてやめてくれ.他の案件がほとんど止まってしまったではないか.カレンダをみると,ここに何か書いてる日とそうでない日が見事…

有限リンクトリストの連結

二つの有限リンクトリストを連結してみます.つまり, $list1= [ 1, [ 2, [ 3, undef] ] ]; $list2= [ 10, [20, [30, undef] ] ]; から $list = [ 1, [ 2, [ 3, [ 10, [20, [30, undef] ] ] ] ] ]; を作る操作です. sub concat{ my ($a,$b)=@_; my $c = $a;…

リンクトリストの定義

HOP(Higher-Order Perl)にしたがって,リンクトリスト*1を考えます.HOPでいうところのリンクトリストは,それらしく書くと以下のものです. linked_list = node node | [ head, tail ] | [ head, undef] tail = node 言葉でいうと次のどちらかが成り立つ…

有限リンクトリストの生成と簡単な例

毎回手動で作っていては大変なので,規則に応じて自動的にリンクトリストを生成することを考えます.基本となるのは次の関数です. sub node{ my ($head, $tail)=@_; return [$head, $tail]; } ノードの要素と次の要素へのポインタ(ここでは無名配列)を与…

自然数の累乗の和の公式(3)

補遺1 自然数の累乗の和を出す途中でという値を考えて,さらにという関数を考えました.そして,このはであることも示しました.そして,ベルヌーイ多項式というのを導入したのですが,これはで定義されるものでした.したがって,とすると,,つまり, です…

自然数の累乗の和の公式(2)

差分の続き*1 一昨日はなんとか計算方法を導きました.もうちょっと考えてみます.累乗の和を求める多項式を求めているのですが,直接の差分をとったらどうなるでしょうか.任意の自然数に対して,が成立するので,これは任意の実数に対して,,が成り立ちま…

駿台の広告の問題・・・わからない→解けた

新・無題ドキュメント@はてなさん経由. 駿台の広告でこんな問題がでていたそうです. 問い を自然数とする。 とするとき、がで割り切れないことを示せ。 ということで,下のように書いたのですが,予想通り,明後日の方向に旅立ってました(予想はおそらく…

自然数の累乗の和の公式(1)

OKwaveの数学カテゴリに自然数の「累乗の和の公式」の質問があったので,それにつられてみます. 自然数とに対して,を計算せよ. という問題です.,1,2,3では次のようになります. 高校の教科書風の計算 高校の教科書にはを利用した解法がでていることが…

リンクトリストを考える

また,HOPに戻って考えてみます.Perlでのリンクトリストを考えるときに,一番自然なのは,ノードとポインタからなる要素が二つの無名の配列を使うことだと思います. $N1 = [ Node 1, $N2へのリファレンス] $N2 = [ Node 2, $N3へのリファレンス] .... とい…

隣接n項間漸化式

昨日,zipWithAnyなんてものを考えたのは,Perlでも考えた隣接n項間漸化式をHaskellでも考えようとしたためです.例えば,隣接4項間で考えてみます. | a0 a1 a2 a3 a4 a5 a6 a7 a8 a9 a0 | a1 a2 a3 a4 a5 a6 a7 a8 a9 a10 (a0) a1 | a2 a3 a4 a5 a6 a7 a8 …

zipを考える

Haskellのzip,zipWith関数はこんな感じで定義することができます. zip :: [a] -> [b] -> [(a,b)] zip [] ys = [] zip xs [] = [] zip (x:xs) (y:ys) = (x,y):zip xs ys zipWith :: (a->a->a) -> [a] -> [a] -> [a] zipWith f [] ys = [] zipWith f xs [] =…

フィボナッチがあまりに遅いのでなんとかします.

昨日のフィボナッチはあまりに遅いのです.辛抱できません.遅い理由は簡単で,同じことを何度も何度もしてるからで,Perlの場合はハッシュのクロージャでキャッシュしてました.けど,Haskellじゃそういうことはきっとできません*1.どうして同じことを繰り…

型に嵌まる

Haskell初心者のお約束(「ふつける」読了程度)なんでしょうが,案の定「型に嵌まり」ました.やりたいことは $> fib 10 55 のように,コマンドラインで引数で番号を与えると,対応するフィボナッチの項を返すというだけです.悩んだ結果は以下の通り. imp…

弾さんの「数学ガール」

ほぼ同感.結城さんのバランス感覚はとにかく見事としか思えません.ただ,数学英語に関するくだりについては反論.「ガール」か「ガールズ」かは単なる主観です. 404 Blog Not Found まず「数学ガール」とはなんですか、hyukiさん、これじゃ「僕」はミルカ…

隣接n項間漸化式

キャッシュを使ったフィボナッチをもう一段抽象化してみます.初期値は引数にできますし,無名サブルーチンを使えば,漸化式そのものも引数にすることができます. use strict; use warnings; no warnings 'recursion'; use bigint; {my %cache; sub receq{ …

キャッシュを使う

キャッシュとかいっても計算した値を保存しておくというだけです.Perlの場合,ハッシュで保存するのが楽です.第項を計算したら,その結果ををキーとするハッシュの値として保存しておくだけです.このハッシュをグローバル変数にしてしまっても構わないの…

フィボナッチの呼び出し回数を数えてみる

単純な再帰でフィボナッチを計算させると,とても時間がかかります. my $count; sub fib1{ my $n = shift; $count++; return 0 if $n==0; return 1 if $n==1; return fib1($n-1)+fib1($n-2); } なんてすれば,fib1が何回呼ばれるか数えることもできますが,…

みんなが大好きなフィボナッチ

フィボナッチ数列というのは,大抵のプログラムの本,それも再帰を扱っているものなら,まず出ているといってもよいほどの,人気者です.高校の数学の本にもまずでています.出ていなかった,きっと著者がフィボナッチが嫌いか,ウサギが嫌いなのに違いあり…

漸化式をPerlで(1)---シンプルなフィボナッチ

MJDの``Higher-Order Perl''という本がとにかく面白いです.ということで,``HOP''のテクニックをいろいろ応用してみます

「数学ガール」重版待ち多数。。すごいなぁ

あんまり知られてないようなので少し説明しておきます.多分,結城さんクラスの著者だと,どんなに少なくても初版10,000部くらいはいってるでしょう.部数や印刷屋,製本屋の規模・体力・残業耐久力(笑)に依存しますが,6/6に表紙がお目見えしたそうですの…

最小値が0でないならば,実は最小値ではない

昨日,多項式関数の絶対値は複素平面全体で最小値を持つことを示しました.この最小値がであることを示します.これによって,最小値をとる複素数が存在する,つまり,の解の存在が示せます.さて,の最小値をとして,としましょう.そして,複素数をとなる…

結城さんからトラックバック

結城浩のはてな日記 意図的といえば意図的ですが、Knuth先生の真似っこをしたがっているところもあります。内容がオイラー的になったのは、以下のインタビューでも話したように自然な流れでした。書いているうちに、オイラー的な要素に気づいたというか。 初…

複素平面上の関数は最小値をもつ

どこまでさかのぼればよいのかが問題ですが, 閉円板上で連続な関数は最大値・最小値をもつ を土台にすることにします.大学一年生の最初の方で習う定理でしょうが,高校生でも納得できるものだと思います.これをつつきはじめると,あっという間に実数の定…

代数学の基本定理の証明の方針

「ミルカさんの証明」を推測するということで,代数学の基本定理の証明を考えるのですが, 複素平面上の関数は最小値をもつ その最小値が0ではないとすると,その値よりも小さい値をとるが存在する この流れでいきます.

は発散する.

またまた昨日の補足. 以下,青空学園を参考にしています. 複素係数の多項式とする.のとき,である. ちょっと技巧的ですが,不等式で評価しましょう. ここで,最後は三角不等式です.を一つ中に残しているのがポイントです.今,を考えているのですから…

複素関数論での代数学の定理の証明

昨日,「代数学の基本定理」の証明云々を書きましたが,高校生に分かるレベルの証明を考えてみようかと思います. まずは定理のそのものを. 代数学の基本定理 , , とする.このとき,方程式は複素数を少なくとも一つ持つ とりあえず,個人的に一番しっくり…