2010-03-01から1ヶ月間の記事一覧

オブジェクトの操作その1(テキスト)

タグの中のテキストを文字列として取得したり変更したりするメソッドについて。 <html> <head> <script type="text/javascript" src="http://www.google.com/jsapi"></script> <script type="text/javascript">google.load("jquery", "1.3.2");</script> <script type="text/javascript"> $(function() { //取り出す。 var div1 = $("#div1").text(); var div2 = $("#d…</head></html>

オブジェクトの操作その0

前回までのjQuery関連では、セレクターを一通りやった。 次の段階として、セレクターで選んだオブジェクトに対して何らかの操作を行う方法について学習する。 ま、既に少しやってるんだけど。スタイルを変更するって形で。基本的なやり方は次の通り。 <script type="text/javascript"> $(fun</script>…

ふっか〜つ

今週はとてつもなく疲れた。。 ほぼ毎日終電で自宅に帰って寝るだけの生活だったので平日の進捗はなし。 昼休みも机に突っ伏して寝てしまった。。 で、一段落したのでこの3連休はjQueryをやろうと思う! 久々の学習だぜ♪

SICP 問題 1.46 (反復改良法)

【問題】 本章に述べた数値計算法のいくつかは、反復改良法(iterative-improvement)という、非常に一般的な計算戦略の特殊化である。反復改良法では何かを計算するのに、答えに対する最初の予測値から始め、予測値が十分良好であるか調べ、そうでなければ…

SICP 問題 1.45 (n乗根を求める)

あ〜、昨日エントリ書けなかったなぁ。。一番時間が掛かっちまった。 問題を適切に抽象化して分解できるかどうかが決め手という感想。 【問題】 1.3.3節で y├→ x/y の不動点を素朴に見つけることで平方根を計算する試みは収束せず、 平均緩和が役立つことを…

SICP 問題 1.44 (関数の平滑化)

例によって、先に問題文だけでも。。 【問題】 関数の平滑化(smoothing)の考えは信号処理に重要な概念である。 f を関数、dxを微小な値とすると、fの平滑化したものは、xでの値がf(x-dx), f(x), f(x+dx)の平均であるような関数である。 入力としてfを計算す…

SICP 問題 1.43 (動的に合成関数を生成する方法)

これも普通に手続きを値として扱う問題。 だけど重要なのはその手続きの合成方法を動的に変更できるというところなんじゃなかろうか。 これってすごいことだよねぇ? 【問題】 f を数値関数、n を正の整数とすると、x での値が f(f(...(f(x))...)) である f …

SICP 問題 1.42 (合成関数)

もひとつできた。 【問題】 f と g を一引数の関数とする。g の後の f の合成関数 (composition) は関数 x ├→ f(g(x))と定義する。 合成関数を実装する手続き compose を定義せよ。 例えば inc が引数に 1 を足す手続きとすれば ((compose square inc) 6) 49…

SICP 問題 1.41 (手続きを引数、返り値として渡す)

例によって休み時間のうちに・・・ 【問題】 引数として一引数の手続きを取り、受け取った手続きを二回作用させる手続きを返す手続き double を定義せよ。 例えば inc が引数に 1 を足す手続きとすれば、 (double inc) は2を足す手続きとなる。 (((double (…

SICP 問題 1.40 (三次式の零点近似をNewton法を用いて求める)

【問題】 newtons-method の手続きと一緒に、 (newtons-method (cubic a b c) 1) の形の式で使い、三次式 x^3 + a・x^2 + b・x + c の零点を近似する手続き cubic を定義せよ。 【解答】 f(x) = x^3 + a・x^2 + b・x + c = 0って考えて、普通にlambda使って…

SICP § 1.3.4 値として返される手続き(Newton法)

結局今日1エントリ。。しかも内容はセクションのまとめ。まぁしょうがないか。 途中で諦めそうになったけど、とにかく手を動かしている内に少なくともどこが分かりにくいのか、は分かった。気がする。書いてる内に、自分の中で理解できてないところが明らか…

あと少し

なんかすんげー疲れてて集中力がすぐ切れちまう。 今週末で1章終わらせる予定だったんだけどなぁ〜。とりあえず最後のセクションであるNewton法まできた。 ざっと読んでみたところ、1章における抽象化の集大成みたいな感じ。 数学的な話は理解できてない箇所…

SICP 問題 1.39(k項有限連分数を使って、正接関数tanの近似値を求める)

【問題】 正接関数の連分数展開は1770年にドイツの数学者 J.H.Lambert が発表した。 x をラジアンで表し、 x tan(x) = ──────── x^2 1 - ────── x^2 3 - ──── 5 - ...Lambert の式に基づいて正接関数の近似値を計算する手続き (tan-cf x k) を定義せよ。 k …

SICP 問題 1.38(k項有限連分数を使って、自然対数の底の定数を求める)

【問題】 1737年、スイスの学者 Leonhard Euler は、De Fractionibus Continuis というメモを発表した。その中に e を自然対数の底として e-2 の連分数展開がある。 この分数では N_i は全て 1、D_i は順に 1, 2, 1, 1, 4, 1, 1, 6, 1, 1, 8, ... 問題1.37の…

SICP 問題 1.37(k項有限連分数を求める式を使用して「1/黄金比」を求める。)

問題文長え。。 【問題】 a) 無限の連分数(continued fraction)は、 N_1 f = ───────────── N_2 D_1 + ────────── N_3 D_2 + ────── D_3 + ....の形の式である。例えば N_i と D_i が全て 1 の無限連分数展開が 1/Φ になることが示せる。 Φは(1.2.2節で示…

SICP 問題 1.35(不動点を求める方法を使って黄金律を算出する)

【問題】 (1.2.2節の)黄金比Φが、変換 x ├→ 1 + 1/x の不動点であることを示し、 この事実を使い、fixed-point 手続きによりΦを計算せよ。 【解答】 まずこの問題を解くに当たって必要な情報を記載する。 「黄金比」 Φ = (1 + √5) / 2 Φ^2 = Φ + 1「├→」 …

SICP § 1.3.3 一般的方法としての手続き(区間二分法による方程式の零点の探索)

あんまり意味ないかもしれないけど、一応学習したのでもったいないから晒す。 【区間二分法による方程式の零点の探索】 二点 a, b が f(a) 零点をみつけるのに x を a と b の平均とし、f(x) を計算する。 f(x) > 0 なら f の零点は a と x の間にある。 f(x…

SICP 問題 1.36(不動点を求める方法を使ってx^x=1000の解を見つけ)

【問題】 問題1.22で示した基本の newline と display を使い、生成する近似値を順に印字するようfixed-pointを修正せよ。 次に、x├→ log(1000)/log(x) の不動点を探索することで、x^x = 1000 の解を見つけよ。 (自然対数を計算するschemeの基本log手続きを…

SICP 問題 1.34 ((f f)を評価した場合)

【問題】1.34 手続き、 (define (f g) (g 2)) を定義したとする。その時、 (f square) 4 (f (lambda (z) (* z (+ z 1)))) 6 解釈系に組み合わせ (f f) を(意地悪く)評価させるとどうなるか。説明せよ。 【解答】 gaucheは作用的順序で評価する?ハズ?なの…

SICP 問題 1.33 (accumulateにfilter要素を加えて更に抽象化)

【問題】 組み合わせる項にフィルタ(filter)の考えを入れることで、accumulate(問題 1.32)の更に一般的なものが得られる。 つまり範囲から得られて、指定した条件を満たした項だけを組み合わせる。 出来上がった filtered-accumulate を手続きとして書け…

SICP 問題 1.32 (sumとproductを更に抽象化)

例によって休み時間のうちに。。 【問題】 a) sum と (問題 1.31 の)product は、一般的なアキュムレーションの関数: (accumulate combiner null-value term a next b) を使い、項のあつまりを組み合わせる accumulate という更に一般的なものの特殊な場合…

SICP 問題 1.31 (抽象的総積演算)

休み時間のうちに・・・ 【問題】 a) sum手続きは高階手続きとして書ける、同様な数多い抽象の最も単純なものに過ぎない。 与えられた範囲の点での関数値の積を返すproductという似た手続きを書け。 productを使って、factorialを定義せよ。 また式、 π 2・4…

SICP 問題 1.30 (抽象的総和演算のsumを末尾再帰にする)

くっそ〜、仕事忙しすぎて帰りがおそくなっちまった。。 3月3日付けでエントリー書けなかったなぁ。って思ったら3月3日の扱いになってる! ・・・でも記入時刻は0時すぎてんぞ?どーなってんだ?まぁいいや。 【問題】 上のsumの手続きは線形再帰を生成…

SICP 問題 1.29 (Simpsonの公式を使った積分計算)

【問題】 Simpsonの公式は上に示したのより更に正確な数値積分法である。 Simpsonの公式を使えば、a から b までの関数 f の積分は、 偶整数 n に対し、h = (b-a)/nまた、 y_k = f(a+kh) として、(h/3)[y_0 + 4・y_1 + 2・y_2 + 4・y_3 + 2・y_4 + ... + 2・…

セレクターその22(jQueryの独自フィルター headerフィルター/containsフィルター/hasフィルター/parentフィルター)

header :h1〜h6要素のこと。独自フィルターにするほど使うのか? contains:特定の文字列が含まれている要素。 has :特定の「要素」が含まれている要素。 parent :子要素やテキストを含む要素を指定可能。IsParent?みたいなニュアンスかな。とりあえず競…

セレクターその21(jQueryの独自フィルター eqフィルター / gtフィルター / ltフィルター)

これは今までのセレクターでは代用できないかなぁ。覚えてた方が便利だろ。 <html> <head> <script type="text/javascript" src="http://www.google.com/jsapi"></script> <script type="text/javascript">google.load("jquery", "1.3.2");</script> <script type="text/javascript"> $(function() { $("li:lt(2)").css("color","red"); $("li:eq(2)").css("col…</head></html>

セレクターその20(jQueryの独自フィルター evenフィルター / oddフィルター)

このセレクターは前にnth-child擬似クラスでちょっと出てきたからまぁ迷わんだろう。 <html> <head> <script type="text/javascript" src="http://www.google.com/jsapi"></script> <script type="text/javascript">google.load("jquery", "1.3.2");</script> <script type="text/javascript"> $(function() { $("li:odd").css("color","red"); $("li:even").cs…</head></html>

セレクターその19(jQueryの独自フィルター firstフィルター / lastフィルター)

う〜ん、わかんねぇ。。 first-child/last-childセレクターが共通の親要素を持つ要素から最初(または最後)の要素を選択するのに対して、 last/firstフィルターは指定したセレクターで最初(最後)に登場する要素を指定できます。first-child、last-child…

セレクター飽きてきた。。

あと少しなんだけど今日はもう疲れたので終わろう。。 残りのセレクター全部まとめたらSICPに戻ろっと。でもこのセレクター、多分CSSだーイベントだーを操作するのに必須だから、 それこそ手足のように使いこなせるようになる必要があると予想。 みっちりや…

セレクターその18(CSSの属性セレクター[attribute^='value'],[attribute$='value'],[attribute*='value'],[attributeFilter1][attributeFilter2](複合タイプ) [CSS3])

属性値を文字列とみなして、「^」は先頭、「$」は末尾、「*」は含むかどうか、複合タイプは全ての条件をandで、 それぞれ判定する。 んで、合致する場合のみ抽出する。 <html> <head> <script type="text/javascript" src="http://www.google.com/jsapi"></script> <script type="text/javascript">google.load("jquery", "1.3.2");</script> <script type="text/javascript"> $(function() { //先頭が'f'で…</head></html>