CS 121 Engineering Computation Lab Lab 3 Department of Computer Science Drexel University February 2-6, 2009 ©By the author. All rights reserved. Permission is given to CS121 Fall 2008 staff and students to use and reproduce these notes for their own use. Your class instructor and TA • Instructor for this section: Tim Cheeseman Office: UC 147 (CLC) Email: tcheeseman@drexel.edu • Your TAs are: 061 – Cem Sahin, Lloyd Ricks 561 – Pat Lockner Note that verification sheet requires you to put down instructor’s name. Week 3 and 4 retrospective • Lab 2: fourth week • Limited Precision Arithmetic • Data structure, functions • Quiz 2: fourth week • Getting stuck on problems during the quizzes? – Use the Cyber Learning Center (UC147) – Use the discussion board for short questions Lab 3 • Overview • Part 1 Scripts (ch. 4 readings) • Assignments (function) • Part 2 User defined functions • Part 3 Lists, sets and sequences • Operations • Random Number generation • Reading in data from an external file. Assignments • Assignments are of the form name := expression where a is a variable and n can be an expression • Name can be a single letter (upper-/lower- case sensitive), or a combination of a letter followed by letters and numbers and underscores. A a a1 expr L eqn1 my_grade largestScore • Some names are reserved by Maple and cannot be used as something to assign to: Pi for I end quit Demo of Assignments • p := x^2 x^2 • p x^2 • p - 1=0 x ^ 2-1 = 0 • unassign(‘p’) • p p • p-1=0 p-1=0 • p does not stand for “x^2” any more. Scripts • What is a script? – A script is a sequence of operations. Usually, the later operations use the results of the earlier ones. – Labels or assignments are used to make the references convenient. • How are scripts useful? – Scripts are useful when you expect to solve a series of similar problems. – Reuse: cut, paste, edit, re-execute. Pointers on Script Use • Rather than use the clickable interface, it's better to lay out the operations textually one line at a time. • You can create a script using only clickable operations if you don't need to change the operations that are specified by pop-up menu. • Use assignments and labels to refer to results of previous steps. • Place "editable quantities" as assignments at the beginning of the script, rather than scattering the editing task all over the script ("I forget, what do I need to change?") Demo of Script Use • Demo the sheep problem. Compared to the script given in section 4.5, we’re replacing the clickable operations with the function version of the solve, eval, and plot operations. • This solves the problem for sheepEqn :=N = 220/(1+10*.83^t) popSize := 80 • Copy region • Edit sheepEqn := N = 330/(1+10*.79^t); popSize := 85; • Re-execute edited region User Defined Functions • Maple users can define new functions • That is one of the key features that makes Maple less like a calculator and more like a programming language How to define your own function •Through the clickable interface •The general form is from the f:=a->y in the Expression palette •User-defined function textually •function name:= input name-> expression involving inputs •The ( ....) - > .....defines the function. •The function name := gives the function a name Usage of User Defined Functions •Format:function name (values for inputs) •Example: f := (x) -> sqrt(x) + 1 f(9) evaluates to 4 as a result. •Example: g := (a, b) -> (a+b)/2 g(3.5, 6.5) evaluates to 5 as a result. Demo of User Defined Functions • • • • • Define three functions t, s and p t := n -> 1/n*sin(n*Pi*x); s(m) = the sum of t(i) s := m -> sum(t(2^i), i=1..m); p(m) = produces a plot of s(m) for x between 0 and 4 • p := m -> plot(s(m), x=0..4) • Here is one example of its use: • p(1); Demo of sequences, lists, sets • Maple demo of: – – – – – – – – – – Assignment Use of indexing to get at pieces Concatenation of sequences Sequences as "inside" of function invocation: binomial(3,5); versus s := 1,2; binomial(s); Convert sequence to list: [s] Convert sequence to set: {s} Convert list to sequence: op(L) Convert set to sequence: op(S) nops(...) gives number of elements sort(list) sorts in ascending order; sort(list, `>`) descending Script test data in Problem 1.2 • Problem 1.2 asks you to generate a list of random numbers to test your scripts on. Just follow the directions, entering the instructions as listed. You should see a list of random numbers which you can apply your script to. • Don't worry about the random number generator's operating principles yet. This lab, we just want you to use the generator. Script Data for Problem 3.1 • Detailed procedures are in the lab direction • Importing – GradeData1 and GradeData2 • Where are the two files? – Course website -> lab materials – Bb Vista -> Lab Exercises -> Import Data Finishing up – save your work • Save worksheets onto the Desktop. You can call them Lab3Part1, Lab3Part2, etc. Or you could put all the work into one worksheet and just call it Lab 3. • Submit a copy to Blackboard site as evidence that you did the lab. • Email a copy to yourself and/or your lab partners as an attachment so you can look at what you did for review purposes later. • We will use this week's work in the next Lab. Turn in your verification sheet • Make sure your name/user id/section number/ date,time/instructor name are on the verification sheet. • Get the verification sheet signed for all parts you completed and hand it in. Weeks 5 and 6 • Take Quiz 3 Monday-Friday Week 6 – October 27-31 – Maple TA server down for maintenance 910am and briefly at 3pm each day during the week. – Greater penalty if you take the “late version” of quiz. Demo of RandomTools Instructors can use the following slides optionally. > > > > Demo of Import Data Instructors can use the following slides optionally. Demo of Import Data (cont’d) Demo of Import Data (cont’d) Demo of Import Data (cont’d) •Right Click on the Blue Matrix. Click Assign to a name. •The name used here is ‘thelist’ •Convert the matrix to a list using •Mainlist := convert(thelist,list) Perform the required operations on the list