Difference between revisions of "Software tutorial/Functions as objects"
m |
|||
Line 1: | Line 1: | ||
From this point onward in the course we will often have to deal with an arbitrary function, such as finding the function's zeros, or integrating the function between two points. It is helpful if we can write MATLAB or Python code that can operate on '''any''' function, not just a specific function, | From this point onward in the course we will often have to deal with an arbitrary function, such as finding the function's zeros, or integrating the function between two points. It is helpful if we can write MATLAB or Python code that can operate on '''any''' function, not just a specific function, | ||
For example, if we write a Python function to find the zero of | For example, if we write a Python function to find the zero of | ||
<syntaxhighlight lang="python"> | <syntaxhighlight lang="python"> | ||
def my_function(x): | def my_function(x): | ||
Line 11: | Line 12: | ||
lower = 0.1 | lower = 0.1 | ||
upper = 3.0 | upper = 3.0 | ||
root = | root = bisection(my_function, lower, upper) | ||
</syntaxhighlight> | </syntaxhighlight> | ||
Python (or MATLAB) will see that <tt>my_function</tt> isn't an ordinary variable, it is | Python (or MATLAB) will see that <tt>my_function</tt> isn't an ordinary variable, it is another function that will return the value of | ||
== MATLAB: inline and anonymous functions == | == MATLAB: inline and anonymous functions == |
Revision as of 02:48, 18 October 2010
From this point onward in the course we will often have to deal with an arbitrary function, such as finding the function's zeros, or integrating the function between two points. It is helpful if we can write MATLAB or Python code that can operate on any function, not just a specific function,
For example, if we write a Python function to find the zero of
def my_function(x):
"""
Returns the value of f(x) = 3x - x/2, at the given x
"""
return 3*x - 2/x
lower = 0.1
upper = 3.0
root = bisection(my_function, lower, upper)
Python (or MATLAB) will see that my_function isn't an ordinary variable, it is another function that will return the value of
MATLAB: inline and anonymous functions
f = inline('1/x - (x-1)')
fzero(f,1)
roots(...)
Python: functions are objects
In Python, everything is an object. All four of these variables, my_string, my_integer, my_float and my_function are objects.
my_string = 'abc'
my_integer = 123
my_float = 45.6789
def my_function(x):
return 3*x - 2/x
You can use the type(...) function to determine a variable's type:
>>> type(my_string) # string object
<type 'str'>
>>> type(my_integer) # integer object
<type 'int'>
>>> type(my_float) # floating point object
<type 'float'>
>>> type(my_function) # function object
<type 'function'>
Find zeros of a nonlinear function
- scipy.optimize.brentq
- scipy.optimize.newton
- brenth,
- ridder,
- bisect,
- newton
- fsolve
- fixed_point