プログラミング演習B ML編 第3回 2010/6/15 (コミ) 2010/6/16 (情報・知能) 住井 ~sumii/class/proenb2010/ml3/

Slides:



Advertisements
Similar presentations
SPSSによるHosmer-Lemeshow検定について
Advertisements

確率と統計 - 確率2回目 - 平成 18 年 11 月 1 日. 2 今日の内容 1. 確率の復習(再整理) 2. 加法の定理 3. 乗法の定理へのイントロ.
レポート書き方. おしいレポート よく調べてある それぞれの、1文の言っていることは正 しい しかし、全体として、何が言いた いのかわからない 内容の重要だが、全体の構成も重 要である.
7.n次の行列式   一般的な(n次の)行列式の定義には、数学的な概念がいろいろ必要である。まずそれらを順に見ていく。
9.線形写像.
3.多項式計算アルゴリズム べき乗の計算 多項式の計算.
時間的に変化する信号. 普通の正弦波 は豊富な情報を含んでいません これだけではラジオのような複雑な情報 を送れない 振幅 a あるいは角速度 ω を時間的に変化 させて情報を送る.
情報処理A 第10回 Excelの使い方 その3.
5.連立一次方程式.
相関.
1 情報量(2章). 2 物理的概念との対比1(入れ物と中 身) 塩水 塩 データ 情報 情報の量? 塩分の量! 情報の量は見た目ではわ からない。データと情報 は異なる概念。 塩分の量は見た目 ではわからない。 しかし、本質的な もの。
―本日の講義― ・平均と分散 -代表値 -ぱらつき(分散・標準偏差等) ・Excelによる演習
論理回路 第2回 今日の内容 前回の課題の説明 数の体系 – 数の表現 – 代表的な数 – 基数の変換 – 補数.
ノイズ. 雑音とも呼ばれる。(音でなくても、雑 音という) 入力データに含まれる、本来ほしくない 成分.
広告付き価格サービ ス 小園一正. はじめに 世の中には様々な表現方法の広告があり ます。その中でも私たち学生にとって身 近にあるものを広告媒体として取り入れ られている。 価格サービス(無料配布のルーズリー フ)を体験したことにより興味を惹かれ るきっかけとなった。主な目的は、これ.
素数判定法 2011/6/20.
フーリエ係数の性質. どこまで足す? 理想的には無限大であるが、実際に はそれは出来ない これをフーリエ解析してみる.
1章 行列と行列式.
本宮市立白岩小学校. 1 はじめに 2 家庭学習プログラム開発の視点 ① 先行学習(予習)を生かした 確かな学力を形成する授業づく り ② 家庭との連携を図った家庭学習の習慣化.
プログラミングⅠ( 1 組) 第 9 回
フーリエ級数. 一般的な波はこのように表せる a,b をフーリエ級数とい う 比率:
プログラミング入門2 第4回 式文 代入式 論理演算子 ループの脱出、スキップ 情報工学科 篠埜 功.
3.エントロピーの性質と各種情報量.
9.通信路符号化手法1 (誤り検出と誤り訂正の原理)
Excelによる積分.
1 6.低次の行列式とその応用. 2 行列式とは 行列式とは、正方行列の特徴を表す一つのスカ ラーである。すなわち、行列式は正方行列からスカ ラーに写す写像の一種とみなすこともできる。 正方行列 スカラー(実数) の行列に対する行列式を、 次の行列式という。 行列 の行列式を とも表す。 行列式と行列の記号.
計算のスピードアップ コンピュータでも、sin、cosの計算は大変です 足し算、引き算、掛け算、割り算は早いです
線形符号(10章).
1 0章 数学基礎. 2 ( 定義)集合 集合については、 3セメスタ開講の「離散数学」で詳しく扱う。 集合 大学では、高校より厳密に議論を行う。そのために、議論の 対象を明確にする必要がある。 ある “ もの ” (基本的な対象、概念)の集まりを、 集合という。 集合に含まれる “ もの ” を、集合の要素または元という。
10.PとNP完全問題との境界.
複素数.
4.プッシュダウンオートマトンと 文脈自由文法の等価性
1 0章 数学基礎. 2 ( 定義)集合 集合については、 3セメスタ開講の「離散数学」で詳しく扱う。 集合 大学では、高校より厳密に議論を行う。そのために、議論の 対象を明確にする必要がある。 ある “ もの ” (基本的な対象、概念)の集まりを、 集合という。 集合に含まれる “ もの ” を、集合の要素または元という。
システムプログラム論 課題 大村 廉. 課題 Java を用いて Producer / Consumer 問題を解決する MyBuffer クラスを –Synchronized キーワード –Semaphore クラス (java.util.concurrent.Semaphore) を用いてそれぞれ作りなさい.
信号測定. 正弦波 多くの場合正弦波は 0V の上下で振動する しかし、これでは AD 変換器に入れら れないので、オフ セットを調整して データを取った.
1 9.線形写像. 2 ここでは、行列の積によって、写像を 定義できることをみていく。 また、行列の積によって定義される写 像の性質を調べていく。
通信路(7章).
3.プッシュダウンオートマトンと 文脈自由文法
6.符号化法(6章).
ビット. 十進数と二進数 十進数  0から9までの数字を使って 0、1、2、3、4、5、6、7、8、9、 10、11、12 と数える 二進数  0と1を使って 0、1、10、11、100、101、11 0、111 と数える.
正弦波.
3.正方行列(単位行列、逆行列、対称行列、交代行列)
論理回路 第1回. 今日の内容 論理回路とは? 本講義の位置づけ,達成目標 講義スケジュールと内容 受講時の注意事項 成績の評価方法.
Bar-TOP における光の 群速度伝播の解析 名古屋大学 高エネルギー物理研究室 松石 武 (Matsuishi Takeru)
データベース入門 日進高等学校 情報化推進委員会. 表計算ソフトとの比較 表計算ソフト (Excel) データベース ( Access ) 編集 二人目はデータの編集が ロックされる 複数の人が同時にデータ を 編集できる 信頼性 ファイルの数だけ データが存在する データは一つ データ処理 自由.
C言語応用 構造体.
3.多項式計算アルゴリズム べき乗の計算 多項式の計算.
プログラミング演習B ML編 第3回 2006/7/4 (通信コース) 2006/7/12 (情報コース) 住井 ~sumii/class/proenb2006/ml3/
JPN 312 (Fall 2007): Conversation and Composition 文句 ( もんく ) を言う.
HKS Analysis Log Jul 2006 Part1 D.Kawama. 第壱部 HKS Sieve Slit Analysis.
HSPによる学習機能付き シューティングゲームの製作
1 中野研究室 4 年ゼミのイロハ 斉藤(修士 2 年) ( 2009 年 ”4 年ゼミのイロハ ” を参考に作りました)
1 プログラミング言語論 第13回 プログラムの意味論と検証 (2) 表示的意味論 担当:犬塚. 2 表示的意味論 denotational semantics  表示的意味論では、プログラムの要素とそれが 意味するものを対応付ける。 変数 式 文 A B … A+2 2B+C A:=A+2 if.
プログラミングⅠ( 2 組) 第 1 回 / pLB1.pptx.
「ネット社会の歩き方」レッスンキット プレゼンテーション資料集 15. チャットで個人情報は 言わない プレゼンテーション資料 著作権は独立行政法人情報処理推進機構( IPA )及び経済産業省に帰属します。
プログラミング入門2 第3回 複合文、繰り返し 情報工学科 篠埜 功.
メニューに戻る メニューに戻る | 前表示スライド 前表示スライド G*power 3 の web ページ Windows はこちら Mac はこちら ダウンロード後,実行してインストール.
第14回 プログラムの意味論と検証(3) 不動点意味論 担当:犬塚
実験5 規則波 C0XXXX 石黒 ○○ C0XXXX 杉浦 ○○ C0XXXX 大杉 ○○ C0XXXX 高柳 ○○ C0XXXX 岡田 ○○ C0XXXX 藤江 ○○ C0XXXX 尾形 ○○ C0XXXX 足立 ○○
ことばとコンピュータ 2007 年度 1 学期 第 1 回. 2 ことばとコンピュータ 授業科目名:言語情報処理論 授業題目名:ことばとコンピュータ 履修コード: 5067 教室: 323 一学期開講 授業の進め方 – 基本的に講義中心ですすめ,時々コンピュー タを使う.
プログラミング演習( 1 組) 第 8 回
1 アルゴリズムの高速化. 2 アルゴリズムにおける 大幅な性能アップ 多項式時間アルゴリズム VS 対数時間アルゴリズム (最大公約数の問題) 指数時間アルゴリズム VS 多項式時間アルゴリズム (フィボナッチ数列を求める問題)
携帯電話でのコミュニ ケーションについて 1班真田 出水 佐伯 堺. 仮説  女性のほうが携帯電話を使ったコミュニ ケーションを重要視する。
音の変化を視覚化する サウンドプレイヤーの作成
プログラミングの基礎知識 プログラミングの手順と重要概念 アルゴリズム. プログラミングの手順 コーディング エディタなどでコードを記述 コンパイル・インタープリタ 実行可能な形に翻訳 デバッグ(虫取り、不具合の調整) 完成!
Self-efficacy(自己効力感)について
本文. 考えながら読みましょ う 「いろいろなこと」( 3 行目)は何で すか 「①電話料金はコンビニで支払いをしていま す。いつでも払えますから、便利です。」 「②夕食はコンビニで買います。お弁当やお かずがいろいろありますから。」今、若者に 人気のあるコンビニは、いろいろなことをす るのに非常に便利な場所になった。
今日の内容 高階関数  関数を値として扱う 関数を引数にとる 関数を返す関数 プログラミングの例題  クイックソート.
英語勉強会 名手⇒詫間 2015/10/22. 原文 This study says acquiring motor skills support system. There is how to acquire moor skills that coach advises learner. Motor.
腎臓移植 腎臓移植の前に、ドナー両方の腎臓は機 能的に良好でなければならない。ドナー の両方の腎臓が機能的に健康であること を保証するために、多数の試験が行われ ている。
Presentation transcript:

プログラミング演習B ML編 第3回 2010/6/15 (コミ) 2010/6/16 (情報・知能) 住井 ~sumii/class/proenb2010/ml3/

今日のポイント 1. 局所定義 2. 高階関数 (higher-order functions) 整数や浮動小数点数と同じように、 関数も「値」として扱える 3. 多相関数 (polymorphic functions) 「どんな型についても使える」関数

レポートについて 電気・情報系内のマシンから (情報・知能) (コミ) にアクセスし、画面にしたがって提出せよ。締め切りは一週間後厳守。 初回は画面にしたがい自分のアカウントを作成すること。 「プログラム」のテキストボックスがある課題では、 プログラムとして sml に入力した文字列のみを 過不足なく正確にコピー&ペーストして提出せよ。 ( sml の出力は「プログラム」ではなく考察に含めて書くこと。) プログラムの課題でも必ず考察を書くこと。 提出したレポートやプログラムの実行結果は「提出状況」から 確認できる。 – 質問は にメールせよ。 – レポートの不正は試験の不正と同様に処置する。

復習:変数・関数定義 変数定義 val 変数名 = 式 関数定義 fun 関数名 引数名 1 … 引数名 n = 式

ポイント1:局所定義 let 定義 1 in 式 1 end – 定義 1 は式 1 の中でのみ使える local 定義 1 in 定義 2 end – 定義 1 は定義 2 の中でのみ使える 「その場だけ必要な」定義に用いる let と local は何が違うの? ⇒ in の中が違う  let... in... end は全体として式に、 local... in... end は全体として定義になる

例 - let val pi = 3.14 in = pi * 10.0 * 10.0 end ; val it = : real - local val pi = 3.14 in = fun area r = pi * r * r end ; val area = fn : real -> real - area 10.0 ; val it = : real - pi ; stdIn: Error: unbound variable or constructor: pi

課題3. 1 以下の定義や式を順番に入力し、 結果を考察せよ。 1. val pi = let val pi = 3.14 in pi * 10.0 * 10.0 end 3. local val pi = 3.14 in fun area r = pi * r * r end 4. pi * 10.0 * area 10.0

ポイント2:高階関数 例題: 「浮動小数点数から浮動小数点数への関 数 f を受け取って、それを微分した関数 f' を返す」という関数 diff を書け。 – 微分は と近似せよ。

解答例 fun diff f = (* 関数 f を引数として受け取る *) let fun f' x = (* 関数 f' を定義 *) (f (x ) - f x) / in f' (* f' を結果として返す *) end このように「関数を引数として受け取る」 あるいは「関数を結果として返す」関数を 高階関数という

実行例 - fun diff f =... ; (* 前のページと同じ *) val diff = fn : (real -> real) -> real -> real - val g = diff Math.sin ; val g = fn : real -> real - g 0.0 ; val it = : real - g 3.14 ; val it = ~ : real - (diff Math.sqrt) 1.0 ; (* 括弧は省略可能 *) val it = : real 引数の型が関数型 返値の型も関数型

課題3. 2 1. Math.sqrt, Math.sin, Math.cos, Math.tan, Math.exp, Math.ln など の関数について、先の diff を用いて微 分を計算し、結果を確認せよ。 2. 浮動小数点数から浮動小数点数への適 当な関数を自分で定義して、先の diff を用いて微分を計算し、結果を確認せ よ。 定義する関数によっては次頁に注意

ちょっと微妙な注意 … SML では、 + や * など一部の演算が、 int と real の両方について オーバーロード(多重定義)されている しかし、ユーザが定義した関数は オーバーロードされない – 曖昧な場合は、デフォルトで int が優先される - fun square x = x * x ; val square = fn : int -> int – real にしたい場合は「式 : 型」などの構文で 型を指定する - fun square (x : real) = x * x ; val square = fn : real -> real

課題3. 3 整数から整数への関数 f に対し、 g(n) = f(n) - f(n-1) なる関数 g のことを f の階差という。 f を引数として受け取り、 f の階差 を結果として返す関数 delta を書 け。

課題3. 4 整数から整数への関数 f と、正の整数 n を引 数として受け取り、 f(1) + f(2) + f(3) f(n) を結果として返す関数 sigma を書け。 下のようになれば良い - fun square x = x * x ; val square = fn : int -> int - sigma square 10 ; val it = 385 : int

ヒント 前回の再帰関数 sum を参照 たとえば次のような形で書ける fun sigma f = let fun sum n = (* f(1)+... +f(n) を求める *) in sum end – 他の形で書いても OK

課題3. 5 (optional) 浮動小数点数から浮動小数点数への関数 f を受け取って、 f を 0.0 から 1.0 まで積分し た結果を返す関数 integral を書け。 – 積分は と近似せよ。 ヒント:「浮動小数点数 x を受け取って、 f (x) + f(x ) + f(x ) f(0.999) を返す」再帰関数 g を局所定義し、 (g 0.0) * を返す。 integral Math.exp の値が 1.72 ぐらいになれば良い。

課題3. 5の注意 浮動小数点数には誤差がありうるので、 = で比較しては いけない。誤差も考慮して、例えば x > 等のよ うに比較すること。 = 0.3 ; stdIn: Error: operator and operand don't agree [equality type required] operator domain: ''Z * ''Z operand: real * real in expression: = > 0.3 ; val it = true : bool

ポイント3:多相関数 例題: 「関数 f と関数 g を受け取って、 f と g の合成関数を返す」という 関数 compose を書け。

解答例 - fun compose f g = = let fun h x = g (f x) in = h end ; val compose = fn : ('a -> 'b) f の型 -> ('b -> 'c) g の型 -> 'a -> 'c h の型 'a, 'b, 'c は「何でも良い」(型変数)

実行例 - (compose Math.exp Math.ln) 1.23 ; val it = 1.23 : real - fun square x = x * x ; val square = fn : int -> int - (compose square square) 10 ; val it = : int この compose のように「どんな型について も使える」関数を多相関数という。

課題3. 6 以下の関数は多相関数である。どのよ うな型を持つか確認して考察せよ。ま た、実際に様々な型で使ってみよ。 1. fun id x = x 2. fun first x y = x 3. fun second x y = y 4. fun twice f x = f (f x)

課題3. 7 (optional) 課題3. 4の関数 sigma と、課題 3. 3の関数 delta を、前出の compose で合成したら、どのよう な関数になるか。いくつかの例を 実際に試して確認せよ。 – 合成の順番に注意すること

課題3. 8 (optional) 1. 「関数 f と非負整数 n を受け取り、 f を n 個合成した関数を返す」という 関数 repeat を書け。 2. 上述の repeat と前出の diff を使っ て、浮動小数点数から浮動小数点数 への様々な関数のn階微分(n≧2) を求め、結果を確認せよ。