情報とコンピュータ 静岡大学工学部 安藤和敏 2005.10.31.

Slides:



Advertisements
Similar presentations
プログラミング Ⅱ 第2回 第1回(プログラミングⅠの復 習) の解説. プログラムの作り方 いきなり完全版を作るのではなく,だんだ んふくらませていきます. TicTa cToe1.
Advertisements

情報とコンピュータ 静岡大学工学部 安藤和敏 1章 プログラミング入門 ― 決定木のコーディング.
情報基礎実習 I (第6回) 木曜4・5限 担当:北川 晃. Stream クラスを用いたファイルの接続 … Dim インスタンス名 As New IO.StreamReader( _ “ ファイルの絶対パス ”, _ System.Text.Encoding.Default) … s = インスタンス名.
5.制御構造と配列 場合分け( If Then Else , Select Case ) 繰返し( Do While ) 繰返しその2( For Next )
オブジェクト指向言語・ オブジェクト指向言語演習 中間試験回答例. Jan. 12, 2005 情報処理技術基礎演習 II 2 オブジェクト指向言語 中間試験解説 1  (1) 円柱の体積(円柱の体積 = 底面の円の面積 x 高さ) を求めるプログラムを作成しなさい。ただし、出力結果は、入 力した底面の円の半径.
情報とコンピュータ 静岡大学工学部 安藤和敏
第3回:ボールを上下に動かそう! (オブジェクトの移動、一次元)
Fortran と有限差分法の 入門の入門の…
6 空間図形 1章 空間図形 §4 空間における平面と直線         (2時間).
遺伝的アルゴリズム  新川 大貴.
データ構造とアルゴリズム論 第6章 探索のアルゴリズム
ファーストイヤー・セミナーⅡ 第8回 データの入力.
データ構造とアルゴリズム 第10回 mallocとfree
数値計算及び実習 第3回 プログラミングの基礎(1).
プログラミング基礎I(再) 山元進.
3 一次関数 1章 一次関数とグラフ §3 一次関数の式を求めること          (3時間).
第2回ネットワークプログラミング 中村 修.
情報基礎実習I (第5回) 木曜4・5限 担当:北川 晃.
情報とコンピュータ 静岡大学工学部 安藤和敏
C言語 配列 2016年 吉田研究室.
情報とコンピュータ 静岡大学工学部 安藤和敏
情報科学1(G1) 2016年度.
プログラミング言語論 第4回 手続きの引数機構 変数の有効範囲
4 関数 y=ax 2 1章 関数とグラフ §3 関数 y=ax 2 の値の変化         (5時間)
問題 1 キーボードから入力した数の合計を計算するプログラムを 作成せよ。最初に、何個の数を入力するかその数を入力 するようにする。
基礎プログラミング演習 第7回 繰り返し.
第7回 条件による繰り返し.
整数データと浮動小数データ 整数データと浮動小数データの違い.
繰り返し計算 while文, for文.
プログラミング言語論 第9回 Hoare論理の練習問題 手続きの引数機構 変数の有効範囲
アルゴリズムとプログラミング (Algorithms and Programming)
高度プログラミング演習 (03).
情報とコンピュータ 静岡大学工学部 安藤和敏
情報とコンピュータ 静岡大学工学部 安藤和敏
第7回 条件による繰り返し.
情報とコンピュータ 静岡大学工学部 安藤和敏
情報とコンピュータ 静岡大学工学部 安藤和敏
プログラミング言語論 第四回 理工学部 情報システム工学科 新田直也.
情報基礎Ⅱ (第5回) 月曜4限 担当:北川 晃.
プログラミング 4 探索と計算量.
情報とコンピュータ 静岡大学工学部 安藤和敏
アルゴリズム論 (第12回) 佐々木研(情報システム構築学講座) 講師 山田敬三
プログラミング言語論 第5回 手続きの引数機構 変数の有効範囲
第5章 計算とプログラム 本章で説明すること ・計算の概観と記述法 ・代表的な計算モデル ・プログラムとプログラム言語.
情報とコンピュータ 静岡大学工学部 安藤和敏
復習 一定回数を繰り返す反復処理の考え方 「ループ」と呼ぶ false i < 3 true i をループ変数あるいはカウンタと呼ぶ
プログラムの基本構造と 構造化チャート(PAD)
本時の目標 いろいろな立体の体積を求めることができる。
アルゴリズムとデータ構造 2011年7月8日課題の復習
情報とコンピュータ 静岡大学工学部 安藤和敏
データ構造とアルゴリズム 第11回 リスト構造(1)
統計ソフトウエアRの基礎.
データ構造とアルゴリズム (第5回) 静岡大学工学部 安藤和敏
プログラミングⅡ 第2回.
情報とコンピュータ 静岡大学工学部 安藤和敏
情報工学Ⅱ (第2回) 月曜4限 担当:北川 晃.
復習 if ~ 選択制御文(条件分岐) カッコが必要 true 条件 false 真(true)なら この中が aを2倍する 実行される
情報処理Ⅱ 2006年11月24日(金).
プログラミング基礎演習 第4回.
円の復習.
「データ学習アルゴリズム」 第3章 複雑な学習モデル 報告者 佐々木 稔 2003年8月1日 3.2 競合学習
cp-3. 計算 (C プログラミング演習,Visual Studio 2019 対応)
Cプログラミング演習 ニュートン法による方程式の求解.
3 一次関数 1章 一次関数とグラフ §4 方程式とグラフ         (3時間).
プログラミング入門2 第5回 配列 変数宣言、初期化について
場合分け(If Then Else,Select Case) 繰返し(Do While) 繰返しその2(For Next)
コンピュータの高速化により, 即座に計算できるようになってきたが, 手法的にはコンピュータ出現以前に考え出された 方法が数多く使われている。
本時の目標 いろいろな立体の表面積を求めることができる。
情報処理Ⅱ 第3回 2004年10月19日(火).
アルゴリズム ~すべてのプログラムの基礎~.
Presentation transcript:

情報とコンピュータ 静岡大学工学部 安藤和敏 2005.10.31

3章 数値計算と関数の学習 数値計算をしてみよう 単純な計算 関数 ループの作成と関数の学習 最適値の探索 情報を配列に格納する 3章 数値計算と関数の学習 数値計算をしてみよう 単純な計算 関数 ループの作成と関数の学習 最適値の探索 情報を配列に格納する 総和,極小,極大を求める プログラミングのパターン

数値計算をしてみよう(1) 20歳の青年が60歳までに1億円貯めるには,毎月いくら貯金しなければならないか?

数値計算をしてみよう(2) 1000㎡の錫(すず)の板で円柱をつくるとき,その円柱の体積が最大になるのは正確にどの寸法のときか? 最適化:ある状況におけるパラメータの最適値を求める作業.

2倍関数(d(x) = 2x)の計算 x := 1; d := 2 * x; writeLn(x, d); x := 2; x := 3; … x = 1, x = 2, x = 3, …. d := 2 * x; writeLn(x, d);

2倍関数の計算(ループの例) var x, d: real; begin x := 1; while true do d := 2 * x; writeLn(x, d); x := x +1; end; end. d 4.0 6.0 2.0 x 1.0 2.0 4.0 3.0 1 2 2 4 3 6

while 構文 Pascal の while文 は例えば,以下のような書式を取る. while 条件式 do 複合文; 条件式とは,answer = ‘yes’ や x <= 20 などのような式で,真(true)か偽(false)のどちらかの値をとる. 複合文とは,beginとendで挟まれた文の並びである.(これは前にも教えた.)

2倍関数の計算のプログラム program Double(input, output); var d, x: real; begin while x <= 10.0 do d := 2.0*x; writeLn(x:6:2,d:6:2); x := x + 1.0; end; end. d 4.0 20.0 2.0 18.0 x 11.0 10.0 9.0 3.0 1.0 2.0 1 2 2 4 3 6 4 8 5 10 6 12 7 14 8 16 9 18 10 20

円柱の体積の計算 πを円周率,r を円柱の底面の半径,h を円柱の高さとすると,この円柱の体積 V は 一方で,この円柱の表面積 A は, だから,

円柱の体積の計算のプログラム program CyllinderVolumes(input, output); var r, V: real; begin r := 1.0; while r <= 10.0 do V := 500*r - 3.14159*r*r*r; writeLn(r:8:2,V:8:2); r := r + 1.0; end; end.

Vのグラフ

金利計算の公式 金利は少数で表されているとする.(12% = 0.12) 今月末の預金残高 = 前月の預金残高 + (前月の預金算残高*金利) + 今月の積立額 savings を預金残高,monthint を金利とすると,Pascal の計算は, savings := savings + (savings*monthint) + payment;

預金残高計算のアルゴリズム 指定された毎月の積立額(payment)を読み込む. savings = 0,monthint = 0.01 (年率12%)と設定する.. 480ヶ月の各月の残高を savings := savings + (savings*monthint) + payment; で計算する. 4.40年後の残高を出力する.

40年後の預金計算のプログラム program Savings40Years(input, output); var payment, savings, monthint, month: real; begin writeLn('毎月いくらずつ積み立てますか?(単位:万円)'); readLn(payment); savings := 0; monthint := 0.001; month :=1; while month <= 480 do savings := savings + (savings*monthint) + payment; month := month +1; end; writeLn('40年後の預金残高は,',savings:10:2,'万円です.'); end.

最適値の探索(円柱の体積)

円柱の体積 r = 6 のとき,V = 500×6 – 3.14159 × 63 = 2321.42 r = 6.01 のとき,V = 500×6.01 – 3.14159 × 6.013 = 2323.02 r = 6.02 のとき,V = 500×6.02 – 3.14159 × 6.023 = 2324.61 ・・・ r を繰り返し増やしていき,Vが減少したところで停止すればよい!

最適値の探索の方法 r を適当な初期値に設定する. r をどのくらいづつ増加するかを決定する. V を求める. r を増加する. ・・・ そのときのVが最適値である.

最適値の探索の方法 r を適当な初期値に設定する. r をどのくらいづつ増加するかを決定する. V を求める. r を増加する. その直前のVが最適値である.

最適値の探索の方法 r を適当な初期値に設定する. r をどのくらいづつ増加するかを決定する. V を求める. r を増加する. Vが直前のVより小さければ停止する. 直前のVが最適値である.

最適値の探索のアルゴリズム(1) r を適当な初期値に設定する. r をどのくらいづつ増加するかを決定する. V を求める. Vが直前のVより小さければ停止する. r を増加する. V を求める. 直前のVが最適値である.

最適値の探索のアルゴリズム(2) r を適当な初期値に設定する. r をどのくらいづつ増加するかを決定する. V を求める. Vが直前のVより小さければ停止する. r を増加する. V を求める. 直前のVが最適値である.

最適値の探索のアルゴリズム(3) r を適当な初期値に設定する. r をどのくらいづつ増加するかを決定する. V を求める. Vが直前のVよりければ停止する. r を増加する. V の値を「直前のV」に代入する. V を求める. 直前のVが最適値である.

円柱体積の最適値探索のプログラム program FindBest(input, output); var r, V, previousV, increase: real; begin writeLn('r の初期値はいくつですか?'); readLn(r); writeLn('毎回 r をいくつずつ増やしますか?'); readLn(increase); previousV := 0; V := 500 * r - 3.14159 * r * r * r; while V >= previousV do r := r + increase; previousV := V; writeLn(r:10:2,V:10:2); end; writeLn('V の最大値は,', previousV:10:2); end.

Vが以下のような関数だったら?

最適値の探索のアルゴリズム r を適当な初期値に設定する. r をどのくらいづつ増加するかを決定する. V を求める. Vが直前のVよりければ停止する. r を増加する. V の値を「直前のV」に代入する. V を求める. 直前のVが最適値である.

最適値の探索のアルゴリズム (計算のための初期条件の設定). 次の項目を得るための繰返し作業 見つかった項目の出力. 項目が見つからない間は繰り返す 次の項目を得るための繰返し作業 見つかった項目の出力.

1億貯めるための毎月の積立額を求めるアルゴリズム 最初の毎月の積立額を決定する. 各繰返しで,積立額をどれだけ増加するかを決定. 最初の預金残高を 0 に設定する. 預金残高が1億未満の間は繰り返す 毎月の積立額を増加. Savings40years を使って,40年後の預金残高を計算. 毎月の預金残高と40年後の残高を出力.

プログラム MillionDollarAnswer program MillionDollarAnswer(input, output); var payment, increase, savings, monthint, month: real; begin writeLn('最初の積立額は何万円ですか?'); readLn(payment); writeLn('毎回,積立額は何万円ずつ増やしますか?'); readLn(increase); savings :=0;

プログラム MillionDollarAnswer(続き) while savings < 10000 do begin payment := payment + increase; savings := 0; monthint := 0.01; month := 1; while month <= 480 do savings := savings + (savings*monthint) + payment; month := month +1; end; write('積立額 ', payment:10:2, '万円, '); writeLn('預金残高 ',savings:10:2,'万円'); writeLn(payment:10:2, '万円ずつ積み立てれば,1億貯まります.'); end.