迴圈控制 : for, while, repeat Textbook reading: Chapter 7. 固定次數迴圈 : for 指令. 假設有 k 個指令 C(1),..., C(k), 而我們要依序完成其中的 C(m),..., C(n), 語法為 for ( i in m:n) { C(

Similar documents
######## First set of commands x <- 0.5; y <- 0 if (x>3) y <- 1 else y <- 2 ######## Second set of commands x <- 0.5; y <- 0 if (x>3) y <- 1 else ###

(Microsoft Word - \256g\275b\252\354\305\351\305\347.doc)

C/C++ - 字符输入输出和字符确认

Microsoft PowerPoint - Lecture7II.ppt


7. 小 星 星 一 閃 一 閃 亮 晶 晶, 滿 天 都 是 小 星 星 ; 掛 在 天 空 放 光 明, 好 像 許 多 小 眼 睛 ; 一 閃 一 閃 亮 晶 晶, 滿 天 都 是 小 星 星

C/C++语言 - 运算符、表达式和语句

Microsoft Word - SURF支持下的信息时代深层阅读与沟通【孙众】

93年度推薦甄選考古題

C/C++ 语言 - 循环

翻 那 本 日 记, 好 像 和 自 己 赌 气, 好 像 那 个 人 还 在 乎 一 样, 里 面 的 内 容, 因 为 在 较 着 劲, 就 是 不 愿 意 去 看 那 些 甜 蜜 的 过 往 小 小 的 日 记 本 塞 在 行 李 箱 的 底 部, 安 静 地 呆 在 那 儿, 只 是, 不

Windows RTEMS 1 Danilliu MMI TCP/IP QEMU i386 QEMU ARM POWERPC i386 IPC PC104 uc/os-ii uc/os MMI TCP/IP i386 PORT Linux ecos Linux ecos ecos eco

Outline Speech Signals Processing Dual-Tone Multifrequency Signal Detection 云南大学滇池学院课程 : 数字信号处理 Applications of Digital Signal Processing 2

新北考區105年國中教育會考簡章

ENGG1410-F Tutorial 6

(Microsoft Word - \277\357\262\325\252\272\246\322\266q.doc)

105 年 國 中 教 育 會 考 重 要 日 期 項 目 日 期 及 時 間 報 名 1. 集 體 報 名 :105 年 3 月 10 日 ( 星 期 四 ) 至 3 月 12 日 ( 星 期 六 ) 每 日 8:00~12:00 13:30~17:00 2. 個 別 報 名 : 於 上 網 填

1.3

56,,,,, :,, 1953,, 1953,1953,,1953,,,,,,,,, () ,30118, 34, ;,4912 %,5614 %, 1,1953, 1119, ,, , , 1111 (

C/C++ - 函数

國立桃園高中96學年度新生始業輔導新生手冊目錄

〇〇考區105年國中教育會考簡章

<4D F736F F F696E74202D20312EB9FEB6FBB1F5B9A4D2B5B4F3D1A7D5E7C1BCA3BAC3E6CFF2D1D0BEBFC9FAB8B4CAD4B5C4BDE1B9B9BBAFC3E6CAD4BFBCBACBCCBDCBF7D3EBCAB5BCF92E BBCE6C8DDC4A3CABD5D>

Open topic Bellman-Ford算法与负环

Microsoft Word - 2AF63內文.doc

甄選入學howhow作印刷校過版

第一章

Microsoft Word - 197次行政會議紀錄.doc

Python a p p l e b e a r c Fruit Animal a p p l e b e a r c 2-2

【主持人】:给大家介绍一下,这次的培训是我们画刊部的第三次培训,当然今天特别有幸请来著吊的摄影家李少白老师给我们讲课


中国科学技术大学学位论文模板示例文档

C/C++语言 - C/C++数据

Important Notice SUNPLUS TECHNOLOGY CO. reserves the right to change this documentation without prior notice. Information provided by SUNPLUS TECHNOLO

数据结构与算法 - Python基础

000

國 立 政 治 大 學 教 育 學 系 2016 新 生 入 學 手 冊 目 錄 表 11 國 立 政 治 大 學 教 育 學 系 博 士 班 資 格 考 試 抵 免 申 請 表 論 文 題 目 申 報 暨 指 導 教 授 表 12 國 立 政 治 大 學 碩 博 士 班 論


書本介紹

untitled

sktl00007_read.pdf

<4D F736F F D DA5BFA6A1C476C1C92DBEC7ACECB8D5A8F728B57BB35D292E646F63>



目 錄 壹 青 輔 會 結 案 附 件 貳 活 動 計 劃 書 參 執 行 內 容 一 教 學 內 容 二 與 當 地 教 師 教 學 交 流 三 服 務 執 行 進 度 肆 執 行 成 效 一 教 學 課 程 二 與 當 地 教 師 教 學 交 流 三 服 務 滿 意 度 調 查 伍 服 務 檢

硕士论文正文

C

ebook14-4

请在此输入标题

Microsoft Word - 1- 封面

SDP

Microsoft Word - template.doc

Microsoft PowerPoint - STU_EC_Ch02.ppt

2014春小学、幼儿园校本教研总结.doc

CHAPTER VC#

16 标 本 缓 急 的 护 理 原 则 不 包 括 ( 扶 正 祛 邪 法 ) 17 顺 从 疾 病 假 象 而 进 行 护 理 的 方 法 为 ( 反 护 法 ) 18 下 列 属 于 正 护 法 的 是 ( 虚 则 补 之 ) 19 因 中 气 不 足 脾 阳 不 运 而 致 的 腹 胀 便

???p???????????i?h?h?D???N_?s_

yy.xls


穨finaldiss.doc

13. 下 列 植 物 的 向 性 或 運 動, 哪 些 是 受 到 生 長 素 作 用 的 影 響?(5-4) 甲. 睡 蓮 的 花 到 了 晚 上 會 合 起 來 ; 乙. 黃 瓜 的 捲 鬚 攀 附 竹 竿 向 上 生 長 ; 丙. 含 羞 草 的 葉 經 碰 觸 後 閉 合 ; 丁. 紅 豆


第十二章 角色转换 走向成功

國立和美實驗學校103學年度第1次教師甄選簡章

3. 透 過 團 體 小 組 分 別 設 計 出 一 套 自 行 車 伸 展 操 4. 教 師 介 紹 騎 乘 自 行 車 上 座 方 法 煞 車 及 踩 踏 等 要 領. 練 習 自 行 車 運 動 中 基 本 的 上 座 平 衡 直 行 轉 彎 煞 車 等 動 作 ( 二 ) 自 行 車 運 動

104 年 度 推 廣 校 園 正 確 用 藥 教 育 模 式 中 心 學 校 成 果 報 告 書 學 校 : 桃 園 市 中 心 學 校 田 心 國 民 小 學 壹 計 畫 目 的 一 凝 聚 本 市 中 心 學 校 與 重 點 種 子 學 校 正 確 用 藥 教 育 推 廣 共 識, 期 能 培

学做一体手册,餐饮.doc

人体解剖实习指导.doc

硕士论文正文

ZW.PDF

cm 50.5cm

外科手术基础概述

( ) 5. 自 行 車 有 吱 吱 喳 喳 的 聲 音 可 能 是 什 麼 原 因 所 造 成?(1) 鈴 號 的 聲 音 (2) 螺 栓 ( 帽 ) 鬆 動 (3) 腳 踏 板 磨 損 ( ) 6. 下 列 敘 述 何 者 是 對 的?(1) 輪 胎 的 胎 壓 是 愈 高 愈 好, 所 以 填

Java 程式設計初階 第 5 章:基本輸出入 & 流程控制

C C

团 市 委 首 笔 爱 心 捐 款 及 物 资 已 送 至 芦 山 地 震 灾 区 : 近 日, 团 市 委 从 省 青 少 年 发 展 基 会 获 悉, 团 市 委 为 地 震 灾 区 募 集 的 首 笔 爱 心 捐 款 和 捐 赠 物 资 已 送 至 芦 山 地 震 灾 区 4 月 20 日,

TX-NR3030_BAS_Cs_ indd

MATLAB 1

Lorem ipsum dolor sit amet, consectetuer adipiscing elit

2

CC213

世新大學 讀書會

ebook2-24

C/C++ - 文件IO

IP Access Lists IP Access Lists IP Access Lists

例 度 讀 讀 不 不 來 念 來 了 讀 不 不 讀 不 讀行 利 了 說 更 了 讀

untitled

穨SEQ

ebook39-6

第5章修改稿

目 录 CONTENTS 大学化学教学视角浅谈 马晓玲 46 如何构建高效的语文主课堂 高建红 90 浅谈新课标下小学英语教学模式 赵沪君 47 如何打造 动与静 相结合的数学课堂 何张兴 91 浅析如何提高中学英语阅读质量 李彤彤 48 谈高中语文课堂如何激发学生的学习兴趣 陈俊林 92 刍议小学

国 培 简 讯 国 培 计 划 (2012) 示 范 性 集 中 培 训 项 目 国 培 计 划 (2012) 中 小 学 教 师 示 范 性 集 中 培 训 暨 中 西 部 农 村 教 师 集 中 培 训 中 小 学 骨 干 教 师 北 京 外 国 语 大 学 英 语 学 科 研 修 项 目 毕

Untitiled

<4D F736F F D B0D3B77EC3FEA7DEC3C0C476C1C9A5BFA6A1B8D5C3442DB57BA6A1B35DAD702DBEC7ACEC2E646F6378>

840 提示 Excel - Excel -- Excel (=) Excel ch0.xlsx H5 =D5+E5+F5+G5 (=) = - Excel 00

Microsoft PowerPoint - 06_迴圈2.pptx

5. 蜘 蛛 人 吐 絲, 詩 人 寫 詩, 絲 詩 之 間, 雖 略 有 諧 音 之 趣, 但 並 不 是 吐 露 語 絲, 編 織 網 狀 結 構, 黏 附 諸 般 事 物 以 成 作 品 的 人 就 是 詩 人, 這 終 究 只 是 個 文 字 編 織 工 作 而 已 在 我 看 來, 蜘 蛛

华南理工大学广州学院

2014 EduG subject effect the effect of object of measurement 2 item effect 3 4 random error error confounding 3 universe of admissible observati

BW-1101К

Transcription:

迴圈控制 : for, while, repeat Textbook reading: Chapter 7. 固定次數迴圈 : for 指令. 假設有 k 個指令 C(1),..., C(k), 而我們要依序完成其中的 C(m),..., C(n), 語法為 for ( i in m:n) { C(i) 通常在 for 迴圈開始前, 會定義一個存結果的物件, 而在迴圈執行時更新物件. Example 1. Suppose that a sequence {a i i=1 is defined by a 1 = 2 and a i+1 = a i for i 1. (a) Write down R commands that compute a 10. (b) Write down R commands that compute the vector (a 1,..., a 10 ). Solutions. #(a) a <- 2 for (i in 1:9){ a <- sqrt(a) a #(b) a <- rep(2, 10) for (i in 1:9){ a[i+1] <- sqrt(a[i]) a 利用迴圈讓函數輸出向量. Example 2. 而 令 F 為 N(0, 1)CDF, 即 F (x) = x f(t)dt, x (, ) f(t) = e t2 /2 2π, t (, ). 執行以下 R 命令可得 F (0), F (1), F (2): f <- function(x){ exp(-x^2/2)/sqrt(2*pi) F <- function(x){ ans <- integrate(f, -Inf, x)$value #ans 為 f 從負無窮大到的 x 積分值 F(0);F(1);F(2) 1

但是 F(0:2) 無法執行. 寫下一個 R function F.fun, 當 input 為 (x 1,..., x n ) 時, F.fun 的 output 為 (F (x 1 ),..., F (x n )). 執行 F.fun(0:2) 以測試 F.fun. Solution. F.fun <- function(x){ ans <- x #define a vector to store the results n <- length(x) for (i in 1:n){ ans[i] <- F(x[i]) #update ans F.fun(0:2) 注意 : 使用函數繪圖指令 curve(f,a,b) 時, 函數 f 必須能輸出向量. curve(f,-1,1) #get error curve(f.fun,-1,1) Example 3. 寫一個函數 m.prod 計算矩陣相乘. m.prod <- function(a, B){ m <- dim(a)[1] n <- dim(b)[2] if (dim(b)[1]!=dim(a)[2]) return("error!") D <- matrix(0, m, n) ## 定義一個 m x n 的零矩陣 for (i in 1:m){ for (j in 1:n){ D[i,j] <- sum(a[i,]*b[,j]) return(d) 測試 A <- matrix(1:6, 3,2) B <- t(a) A %*% B m.prod(a, B) 畫 z = f(x, y) 的函數圖形, 其中 x {x 1,..., x m, y {y 1,..., y n. R 指令 : persp(xvec, yvec, z) xvec 為向量 (x 1,..., x m ) 2

yvec 為向量 (y 1,..., y n ) z 為 m n 矩陣, z 的第 (i, j) 位置為 f(x i, y j ). Example 4. Plot z = x 2 +y 2 for x { 0.9, 0.8,... 0.9, y { 2.20, 2.19,..., 2.20 using R command persp. x <- seq(-0.9, 0.9, by=0.1) y <- seq(-2.20, 2.20, by=0.01) m <- length(x) n <- length(y) z <- matrix(0, m, n) for (i in 1:m){ for (j in 1:n){ z[i,j] <- x[i]^2+y[j]^2 persp(x,y,z) #You can adjust the viewing angle #by changing the parameters theta and phi in persp. persp(x,y,z, theta=30, phi=15) persp(x,y,z, theta=0, phi=15) persp(x,y,z, theta=0, phi=30) 使用迴圈定義具有規律型態的矩陣 Example 5. Write down R commands that define a 100 100 matrix M, where M is 1 2 3... 100 0 1 2... 99 0 0 1... 98. 0 0 0... 1 Solution. n <- 100 M <- matrix(0, n, n) for (i in 1:n){ M[i,i:n] <- 1:(n-i+1) M R 中使用迴圈比較慢. 所以如果能避免使用迴圈就避免. 以下考慮二個計算絕對值並可輸出向量的函數 abs1.fun 和 abs2.fun. 3

函數 abs1.fun 使用迴圈和函數 abs0.fun, 而 abs0.fun 計算絕對值時只能輸出一個值 : abs0.fun <- function(x){ if (x<0) { return(-x) return(x) abs1.fun <- function(x){ ans <- x #define a vector to store the results n <- length(x) for (i in 1:n){ ans[i] <- abs0.fun(x[i]) #update ans 函數 abs2.fun 未使用迴圈也可計算絕對值並可輸出向量 : abs2.fun <- function(x){ ans <- x ans2 <- -x ans[x<0] <- ans2[x<0] 測試計算時間 x <- 1:5000000 t1 <- proc.time() y1 <- abs1.fun(x) t1 <- proc.time() - t1 t2 <- proc.time() y2 <- abs2.fun(x) t2 <- proc.time() - t2 t1 t2 在 R 中內建計算絕對值的函數叫做 abs, 可輸出向量. 當迴圈次數不固定, 而是在條件下停止執行時, 可使用 while 或 repeat. 假設當條件 A 為 TRUE 時要執行工作 B, 而在條件 A 為 FALSE 時停止執行. while 語法為 while(a){ B 4

假設要重複執行工作 B, 直到條件 A 為 TRUE 時停止執行. repeat 語法為 repeat{ B if (A) break Example 6. 重複執行 add 函數, 每次詢問使用者是否繼續, 直到使用者輸入 N 時停止執行. 先定義 add 函數和詢問字串 S. add <- function(){ x <- readline("please enter a number: \n") y <- readline("please enter another number: \n") qn <- paste("please enter the sum of", x,"and", y, ":\n", sep=" ") z <- readline(qn) x <- as.numeric(x) y <- as.numeric(y) z <- as.numeric(z) if (z==(x+y)) { res <- "Your answer is correct. Good job!" else { res <- paste("the sum of",x,"and", y,"should be",x+y, "!", sep=" ") cat(res, "\n") S <- "Do you want to play this game again? \n" S <- paste(s, "Enter N to stop or ", sep="") S <- paste(s, "enter something else to play again: \n", sep="") 用 repeat 加上 break 寫法如下 : repeat{ add() conti <- readline(prompt=s) if (conti=="n") break 用 while 寫法如下 : conti <- "Y" while( conti!="n" ){ add() conti <- readline(prompt=s) 5

Example 7. 以牛頓法計算 x 2 2 = 0 的正根. 取起始解為 1. 當本次疊代的解和前一次疊代的解相差 < 0.001 時停止疊代. 上述方法疊代公式如下. 令 x n 為第 n 次的疊代解, 則 x 1 = 1 且 用 while 寫法如下 : x n+1 = x n x2 n 2 2x n for n 1. x <- 1 d <- 100 #d can be any number >= 0.001 while ( d >= 0.001 ) { x.new <- x - (x^2-2)/(2*x) d <- abs(x.new - x) x <- x.new x #x 用 repeat 加上 break 寫法如下 : x <- 1 repeat { x.new <- x - (x^2-2)/(2*x) d <- abs(x.new - x) x <- x.new if (d < 0.001) break x #x 6