Ryan Tully-Doyle
ifft
#Symbolic math in Octave/Matlab -- #September 4, 2019 #Numerical Analysis #to use symbolic math, we first need to load the symbolic package #using the command pkg load symbolic #once the package is installed and loaded, we can use the symbolic capabilities #installed in Octave syms x; #defines x as a symbolic variable fun = sin(x); #defines the variable fun as a symbolic object sin(x) #one useful command that works on symbolic objects is diff #which is Octave's built in command for differentiation. #diff(fun) takes the symbolic derivative of the symbolic function #sin(x). diff(fun); #this can be stored as another variable dfun = diff(fun); #note that this object cannot be evaluted. If we want to turn it #into a function, we can use the command function_handle. dfun = function_handle(dfun); dfun(pi/3) #evaluates the derivative at pi/3 #dfun is now a function that can be evaluated on scalars or arrays. #it can also be plotted. the simplest possible plotting command is #ezplot, which takes care of a lot of the mechanics for you. ezplot #doesn't care if an expression is symbolic or a function ezplot(dfun) #if you want to plot multiple graphs on the same figure, you can use the # hold command to keep the figure in place before the next plot ezplot(fun) hold on; ezplot(dfun) hold off; #another useful mathematical command is factorial factorial(3) #putting this together, we might plot sin x against a Taylor #polynomial fun = sin(x); T = x - x.^3/factorial(3) + x.^5/factorial(5) - x.^7/factorial(7); ezplot(fun) hold on; ezplot(T) hold off; #we will look at more powerful visualizations in the next set of #notes. ezplot is fast, but very limited in what can be controlled. #we want to work numerically in general.
#Loops and arrays #Numerical Analysis #9/5/2019 #Ryan Tully-Doyle #This set of examples will focus on loops and arrays, which are structures #that we will be using constantly. #A for loop runs over an index that goes through a prescribed set of numbers. #The formatting is slightly different than other languages, but powerful #in a mathematics context. #the following loop will run for values of i starting at 1 and ending at 10. #Each iteration will perform the same command. for i = 1:10 disp(i) #display the current value of i end #unlike other langauges, non-integer indicies can be used in octave/matlab. for i = 1:.1:10 #starts at 1, counts by .1 until reaching 10 disp(i) #display the current value of i end #it is useful to be able to exit a loop on a condition. in octave, this #command is called break for i=1:10 disp(i) if i == 5 printf("You have to stop now!\n") #\n tells printf to break the line break end end #Next, we'll look at how octave deals with arrays, or lists of numbers. #Functions in octave by default can act on arrays or scalars without using loops X = 12:17; disp(X) #you might wish to know how long an array is length(X) #you might like to know the largest element in an array max(X) #If you want to refer to a specific element in an array, you can extract it #by invoking its index. X(3) #calls the third entry of X #You can take slices of arrays by using index ranges X(3:5) #calls the third through fifth entry of X #As octave is natively an array based language, vector operations are natural. #arrays of the appropriate sizes can be added, subtracted and multiplied by scalars. X=1:10; Y = 2:11; X + Y Y - Y 2*X #since mathematical functions are natively array functions, you can apply a function #to an array. sin(X) #Every time you use an operation that might be ambiguous (things involving #multiplication and subtraction, add a . to the operation to specify that you #want the operation to be applied to each entry. X.^2