######## 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 ###

Similar documents
Microsoft PowerPoint - Lecture7II.ppt

ENGG1410-F Tutorial 6

Microsoft Word - template.doc

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

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

C/C++ 语言 - 循环

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

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

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

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

untitled

Untitled-3

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

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

PowerPoint Presentation

软件测试(TA07)第一学期考试

Lorem ipsum dolor sit amet, consectetuer adipiscing elit

2

tech_atmn_h1h4_E

C o n t e n t s Acceptance Allow Love Apologize Archangel Metatron Archangel Michael Ask for

家长讲师团案例之一


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

Microsoft Word - 3D手册2.doc

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

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

Microsoft PowerPoint _代工實例-1

Microsoft Word - 武術合併


2 毓秀视点 本编辑 然 本报讯 记者 晓风 卢梅 沈燕花 今年学校总体升学率高达 20% 作为每年 考研的命脉之一 数学 在其中发挥了 至关重要的作用 据了解 学校建立的完 备的考研数学辅导体系 成为考研同学们 攻克数学难关的 利器 除考研之外 多 年来我校学生数学竞赛成绩稳居同类院校 前列 获奖

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

93年度推薦甄選考古題

untitled

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

2015 Chinese FL Written examination

BC04 Module_antenna__ doc

Microsoft Word - Final Exam Review Packet.docx

高中英文科教師甄試心得

92 (When) (Where) (What) (Productivity) (Efficiency) () (2) (3) (4) (5) (6) (7) em-plant( SiMPLE++) Scheduling When Where Productivity Efficiency [5]

第一章

Open topic Bellman-Ford算法与负环

Microsoft Word - 09.數學 docx

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

CC213

Microsoft PowerPoint - STU_EC_Ch08.ppt

Chapter 9: Objects and Classes

_12-17.QXD

Introduction to Hamilton-Jacobi Equations and Periodic Homogenization

哺 餵 母 乳 - 對 媽 咪 的 好 處 1. 藉 由 寶 寶 吸 吮 乳 房, 可 刺 激 媽 咪 子 宮 收 縮 預 防 產 後 出 血 及 幫 助 子 宮 的 恢 復 2. 幫 助 媽 咪 儘 快 恢 復 窈 窕 好 身 材 3. 母 乳 餵 越 久 者, 停 經 前 乳 癌 機 會 越 少

Microsoft Word - 11月電子報1130.doc

大 綱 一 了 解 市 場 法 則 重 要 的 工 作? 二 人 力 單 位 用 人 策 略 與 測 驗? 三 企 業 用 人 的 思 考 策 略? 四 用 人 單 位 如 何 找 到 喜 歡 的 人 力? 五 履 歷 撰 寫? 六 面 試 技 巧? 七 提 升 競 爭 力 的 秘 方?

ebook14-4

穨control.PDF

山东建筑大学学分制管理规定(试行)

Fun Time (1) What happens in memory? 1 i n t i ; 2 s h o r t j ; 3 double k ; 4 char c = a ; 5 i = 3; j = 2; 6 k = i j ; H.-T. Lin (NTU CSIE) Referenc

C

<4D F736F F D20B6B3AA4CBFA43938A67EABD7BAEBB669B1D0AE76BDD2B0F3B1D0BEC7AFE0A44FAD5EBB79B1D0AED72E646F63>

Microsoft Word doc

第5章修改稿

Microsoft Word - TIP006SCH Uni-edit Writing Tip - Presentperfecttenseandpasttenseinyourintroduction readytopublish

<4D F736F F F696E74202D20312EB9FEB6FBB1F5B9A4D2B5B4F3D1A7D5E7C1BCA3BAC3E6CFF2D1D0BEBFC9FAB8B4CAD4B5C4BDE1B9B9BBAFC3E6CAD4BFBCBACBCCBDCBF7D3EBCAB5BCF92E BBCE6C8DDC4A3CABD5D>

GCSE Mathematics Question Paper Unit 2 March 2012

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

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

EP 的 准 备 考 完 高 科 到 EP 面 试 也 就 一 个 月 的 时 间, 所 以 我 建 议 大 家 立 即 准 备 起 来, 只 要 GPA 够, 材 料 都 没 有 缺 的 话, 拿 到 面 试 的 机 会 是 不 难 的, 而 且 向 今 年 我 是 号 面 试,23

Microsoft Word - 新加坡手冊封面.docx

CONTENT / 003 Part One / 010 / 019 / 032 Part Two O / 0 A / 0 B / 110 AB / 10

lnag_ch_v2.01.doc

Microsoft Word - 2AF63內文.doc

3.1 num = 3 ch = 'C' 2

Lorem ipsum dolor sit amet, consectetuer adipiscing elit

17838 福 建 省 宁 德 市 福 鼎 市 福 鼎 市 第 二 中 学 陈 钰 群 沉 淀 溶 解 平 衡 甘 肃 省 定 西 市 临 洮 县 定 西 市 临 洮 县 文 峰 中 学 聂 江 芳 文 化 的 继 承 性 与 文 化 发 展 甘 肃 省 平 凉 市 泾 川

DR2010.doc

实数集的程序数子集

Earthquake_Ch

硕士论文正文

(baking powder) 1 ( ) ( ) 1 10g g (two level design, D-optimal) 32 1/2 fraction Two Level Fractional Factorial Design D-Optimal D

Spyder Anaconda Spyder Python Spyder Python Spyder Spyder Spyder 開始 \ 所有程式 \ Anaconda3 (64-bit) \ Spyder Spyder IPython Python IPython Sp

AN INTRODUCTION TO PHYSICAL COMPUTING USING ARDUINO, GRASSHOPPER, AND FIREFLY (CHINESE EDITION ) INTERACTIVE PROTOTYPING

VASP应用运行优化

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

bbc_bond_is_back_worksheet.doc

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


級 任 介 紹 班 主 任 其 他 級 任 2A 羅 彩 岫 主 任 吳 毅 蕙 老 師 2B 徐 玲 老 師 陳 詠 詩 老 師 2C 梁 麗 興 老 師 尹 南 老 師 2D 曾 康 老 師 李 樂 雯 老 師 2E 黃 蕙 明 老 師


LEETCODE leetcode.com 一 个 在 线 编 程 网 站, 收 集 了 IT 公 司 的 面 试 题, 包 括 算 法, 数 据 库 和 shell 算 法 题 支 持 多 种 语 言, 包 括 C, C++, Java, Python 等 2015 年 3 月 份 加 入 了 R

1.ai

生活 成长 先锋

000

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

第 一 节 认 识 自 我 的 意 义 一 个 人 只 有 认 识 自 我, 才 能 够 正 确 地 认 识 到 自 己 的 优 劣 势, 找 出 自 己 的 职 业 亮 点, 为 自 己 的 顺 利 求 职 推 波 助 澜 ; 一 个 人 只 有 认 识 自 我, 才 能 在 求 职 中 保 持

科学计算的语言-FORTRAN95

PowerPoint Presentation

一 課 後 社 團 名 稱 :B02. 直 排 輪 校 隊 C 班 ( 校 隊 班 ) 二 授 課 教 師 : 劉 輔 人 助 教 : 杜 翊 嘉 世 界 盃 滑 輪 溜 冰 錦 標 賽 世 界 冠 軍 榮 獲 VOUGE 時 尚 雜 誌 專 訪 同 週 一 校 隊 班 介 紹

避孕篇

書本介紹


Microsoft Word

Microsoft Word - Book9

Transcription:

流程控制 : if, for, while, repeat Textbook reading: Chapter 7. 條件執行 :if 指令或 if-else 指令. 當條件 A 為 TRUE 時, 執行命令 C 的語法為 if ( A ) C 當條件 A 為 TRUE 時執行命令 C, 否則執行命令 D 的語法為 if ( A ) C else D A simple example. x <- 0.5 y <- 0 if ( x > 3 ) y <- 2 y ## (x>3) is FALSE, so y is 0 if ( x > 3 ) y <- 2 else y <- 10 y ## (x>3) is FALSE, so y is 10 Example 1. Write an R function called add that asks the user to enter from screen two numbers and enter the sum of the two numbers. If the user enters the correct sum, print Your answer is correct. Good job!. If the user fails to enter the right sum, print the correct answer on the screen. add <- function() x <- readline("please enter a number: \n") y <- readline("please enter another number: \n") question <- paste("please enter the sum of ", x," and ", y, ": \n", sep="") z <- readline(question) x <- as.numeric(x) y <- as.numeric(y) z <- as.numeric(z) if (z==(x+y)) cat("your answer is correct. Good job!\n") else cat( paste("the sum of ", x, " and ", y," should be ",x+y, "!\n", sep="") ) add() #test the function Be sure that "else" appears at the same line where the "if" part ends ( 使用 else 時, else 必須和 if 部分結尾的 在同一行 ). Run the two sets of commands below to see which one yields an error message. 1

######## 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 ### 注意 : else 移到了 if 部分的最後一行, 這樣才行 y <- 2 Example 2. 寫一個函數 abs0.fun 計算絕對值. ### define abs0.fun abs0.fun <- function(x) if (x>0) return(x) else return(-x) ### compute -1 and 1 abs0.fun(-1); abs0.fun(1) 在函數運算時, 一旦執行了 return 指令, 所有運算就結束了. 因此 Example 2 的函數 abs0.fun 也可改寫如下 abs1.fun <- function(x) if (x>0) return(x) return(-x) abs1.fun(-1); abs1.fun(1) Example 3. Suppose that 0 if x < 0; f(x) = x if 0 x 1; 1 if x > 1. Define a function f in R that returns f(x) for a input value x. Solution. 2

f <- function(x) if ( x<0) return(0) if ( (0 <= x)&(x <= 1) ) return(x) return(1) f(-1); f(0.5); f(3) 固定次數迴圈 : for 指令. 假設有 k 個指令 C(1),..., C(k) 要依序完成. 語法為 for ( i in 1:k) C(i) 通常在 for 迴圈開始前, 會定義一個存結果的物件, 而在迴圈執行時更新物件. Example 4. 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 5. 當 x 為數值向量時, Example 2 的函數 abs0.fun 無法計算 abs0.fun(x). 寫一個函數 abs.fun 計算絕對值, 而且函數 input 可為一 numeric vector. abs.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]) return(ans) 可用 abs.fun(c(-1,1,-2)) 測試計算結果. 3

R 中使用迴圈比較慢. 所以如果能避免使用迴圈就避免. 例如以下函數 abs2.fun 未使用迴圈也可計算絕對值, 而且函數 input 可為一 numeric vector. abs2.fun <- function(x) ans <- x ans2 <- -x ans[x<0] <- ans2[x<0] return(ans) 測試計算時間 x <- 1:5000000 t1 <- proc.time() y1 <- abs2.fun(x) t1 <- proc.time() - t1 t2 <- proc.time() y2 <- abs.fun(x) t2 <- proc.time() - t2 t1 t2 在 R 中內建計算絕對值的函數叫做 abs, 其函數 input 可為一 numeric vector. 矩陣相關指令用法 X <- matrix(0, 4,3) #define X as a zero matrix with 4 rows and 3 colunms dim(x)[1] #number of rows of X dim(x)[2] #number of columns of X X[,2] #X 的第 2 個 column 形成的向量 X[2,] #X 的第 2 個 row 形成的向量 X[2, c(1,3)] #X 的第 2 個 row 的第 1,3 個元素形成的向量 Example 6. 寫一個函數 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) 4

測試 A <- matrix(1:6, 3,2) B <- t(a) A %*% B m.prod(a, B) 畫 z = f(x, y) 的函數圖形, 其中 (x, y) x 1,..., x m y 1,..., y n. R 指令 : persp(xlist, ylist, z) xlist 為向量 (x 1,..., x m ) ylist 為向量 (y 1,..., y n ) z 為 m n 矩陣, z 的第 (i, j) 位置為 f(x i, y j ). Example 7. Plot z = x 2 + y 2 for (x, y) 0.9, 0.8,... 0.9 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 8. 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. 5

n <- 100 M <- matrix(0, n, n) for (i in 1:n) M[i,i:n] <- 1:(n-i+1) M 當迴圈次數不固定, 而是在條件下停止執行時, 可使用 while 或 repeat. 假設當條件 A 為 TRUE 時要執行工作 B, 而在條件 A 為 FALSE 時停止執行. while 語法為 while(a) B 假設要重複執行工作 B, 直到條件 A 為 TRUE 時停止執行. repeat 語法為 repeat B if (A) break Example 9. 重複執行 Example 1 中的 add 函數, 每次詢問使用者是否繼續, 直到使用者輸入 N 時停止執行. 先定義 add 函數和詢問字串 S. add <- function() x <- readline("please enter a number: \n") y <- readline("please enter another number: \n") question <- paste("please enter the sum of ", x," and ", y, ": \n", sep="") z <- readline(question) x <- as.numeric(x) y <- as.numeric(y) z <- as.numeric(z) if (z==(x+y)) cat("your answer is correct. Good job!\n") else cat( paste("the sum of ", x, " and ", y," should be ",x+y, "!\n", sep="") ) S <- "Do you want to play this game again? \n" S <- paste(s, "Enter N to stop or something else to play again: \n", sep="") 用 repeat 加上 break 寫法如下 : repeat add() conti <- readline(prompt=s) if (conti=="n") break 6

用 while 寫法如下 : conti <- "Y" while( conti!="n" ) add() conti <- readline(prompt=s) Example 10. 以牛頓法計算 x 2 2 = 0 的正根. 取起始解為 1. 當本次疊代的解和前一次疊代的解相差 < 0.001 時停止疊代. 上述問題可改寫如下. 令 x n 為第 n 次的疊代解, 則 x 1 = 1 且 令 m 為一正整數使得 x n+1 = x n x2 n 2 2x n for n 1. x m+1 x m < 0.001 and x k+1 x k 0.001 for 1 k < m. 令 x = x m+1. 求 x. 用 while 寫法如下 : x <- 1 d <- 1 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; d <- 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 7