\documentclass[11pt]{article} \usepackage{graphicx} \usepackage{amsmath} \usepackage{amsfonts} \usepackage{amssymb} %TCIDATA{OutputFilter=latex2.dll} %TCIDATA{CSTFile=LaTeX article (bright).cst} %TCIDATA{Created=Mon Aug 27 11:48:44 2001} %TCIDATA{LastRevised=Fri Sep 21 10:59:46 2001} %TCIDATA{} %TCIDATA{} %TCIDATA{Language=American English} \newtheorem{theorem}{Theorem} \newtheorem{acknowledgement}[theorem]{Acknowledgement} \newtheorem{algorithm}[theorem]{Algorithm} \newtheorem{axiom}[theorem]{Axiom} \newtheorem{case}[theorem]{Case} \newtheorem{claim}[theorem]{Claim} \newtheorem{conclusion}[theorem]{Conclusion} \newtheorem{condition}[theorem]{Condition} \newtheorem{conjecture}[theorem]{Conjecture} \newtheorem{corollary}[theorem]{Corollary} \newtheorem{criterion}[theorem]{Criterion} \newtheorem{definition}[theorem]{Definition} \newtheorem{example}[theorem]{Example} \newtheorem{exercise}[theorem]{Exercise} \newtheorem{lemma}[theorem]{Lemma} \newtheorem{notation}[theorem]{Notation} \newtheorem{problem}[theorem]{Problem} \newtheorem{proposition}[theorem]{Proposition} \newtheorem{remark}[theorem]{Remark} \newtheorem{solution}[theorem]{Solution} \newtheorem{summary}[theorem]{Summary} \newenvironment{proof}[Proof]{\textbf{#1.} }{\ \rule{0.5em}{0.5em}} \begin{document} \begin{center} {\Large Integrating functions with \textsc{MatLab}\footnote{\copyright 2004 Winfried Just, Department Mathematics, Ohio University. All rights reserved.}\\ \textsc{MatLab} exercise for MATH263B} \end{center} \bigskip While working through this \textsc{MatLab} assignment, keep a notepad handy to write down the answers to the problems listed in the text. These answers may be collected and graded. In this exercise, you will learn how you can use \textsc{MatLab} to integrate functions; both symbolically and numerically. Along the way, you will learn about some of the pitfalls of using \textsc{MatLab} for these purposes. In order to perform symbolic integration on functions, you need to declare the variables that occur in these functions as so-called \emph{symbolic variables.} Let us declare two variables $a$ and $x$ this way. \smallskip \noindent \verb$>> syms x a$ \smallskip Now let us ask \textsc{MatLab} to find the indefinite integral $\int x^2 \, dx$ \smallskip \noindent \verb$>> int(x^2)$ \smallskip The answer is almost as expected, but not quite: Note that \textsc{MatLab} does not add the constant of integration to the result (of course \textsc{MatLab} doesn't have to take any tests in my MATH263B class). Now let us try to compute the integral $\int \frac{a}{x} \, dx$, where $a$ is a constant. Enter \smallskip \noindent \verb$>> int(a/x)$ \smallskip \begin{problem} How does \textsc{MatLab}'s answer differ from the correct answer that you learned in class? \emph{Hint:} \textsc{MatLab} uses \verb$log(x)$ for $\ln x$; this is \emph{not} the problem. \end{problem} In the above example, although the $dx$-notation is not part of the \textsc{MatLab} command for symbolic integration, the program guessed (correctly) that $x$ was supposed to be the variable of integration and $a$ was supposed to be a constant. \begin{problem} Which command should you enter in order to calculate $\int \frac{a}{x} \, da$, where $x$ is treated as a constant? \emph{Hint:} Enter \verb$>> help int$ to find out more about the syntax of the command \verb$int.$ \end{problem} Now let us use \textsc{MatLab} to find $\int \frac{x}{(x+3)(x-1)(x^2+1)} \, dx$. Enter \smallskip \noindent \verb$>> int(x/(x+3)/(x-1)/(x^2+1))$ \smallskip \textsc{MatLab}'s answer indicates that the program performed a partial fraction decomposition. You can easily find out what the decomposition is by letting the program symbolically differentiate the answer. \smallskip \noindent \verb$>> diff(ans)$ \smallskip \begin{problem} What is the partial fraction decomposition of $\frac{x}{(x+3)(x-1)(x^2+1)}$? \end{problem} You can recover the original form of the integrand by entering \smallskip \noindent \verb$>> simplify(ans)$ \smallskip Theoretically, if $f(x)$ is the simplest formula for any function that can be symbolically integrated, then entering the sequence of commands \smallskip \noindent \verb$>> int(f(x))$ \noindent \verb$>> diff(ans)$ \noindent \verb$>> simplify(ans)$ \smallskip \noindent should give you the original formula for $f(x)$. However, this works not always as expected. Enter \smallskip \noindent \verb$>> int(sin(x)^3*cos(x)^4)$ \noindent \verb$>> diff(ans)$ \noindent \verb$>> simplify(ans)$ \smallskip \begin{problem} Which simplified answer does \textsc{MatLab} give you? How do you explain the discrepancy from what you expected? \emph{Hint:} Recall that $\sin^2 x = 1 - \cos^2 x$. \end{problem} Some definite integrals just cannot be expressed in terms of the elementary functions that you have learned about in class. If you ask \textsc{MatLab} to integrate such functions, you may get answers that contain symbols for exotic functions that are defined in terms of integrals. For example, when you enter \smallskip \noindent \verb$>> int(exp(x^2))$ \smallskip \noindent then your answer is expressed in terms of the so-called \emph{error function} \verb$erf.$ At other times, \textsc{MatLab} will give you an incomplete answer that contains another integral. \begin{problem} Try to symbolically integrate $\sqrt{1 + x^3 - x^5}$. Write down \textsc{MatLab}'s answer in ordinary mathematical notation. \emph{Hint:} \textsc{MatLab}'s command for $\sqrt{x}$ is \verb$sqrt(x)$. \end{problem} \textsc{MatLab} has a built-in command \verb$quad$ for approximate integration using Simpson's Rule. As you learned in class, $\int_0^\pi \sin x \, dx = 2$. Let us see what we get from approximate integration: \smallskip \noindent \verb$>> quad('sin(x)', 0, pi)$ \smallskip Note that the expression for the function now needs to be enclosed in quotation marks. The reason is that for approximate integration, \textsc{MatLab} needs to actually evaluate the function for may arguments rather than treating its formula as a symbolic expression. In fact, you can find out how many function evaluations \textsc{MatLab} performed in order to compute the result by entering \smallskip \noindent \verb$>> [q, n] = quad('sin(x)', 0, pi)$ \smallskip The answer has two components: \verb$q$ is the approximation of the integral, and \verb$n$ is the number of function evaluations. \textsc{MatLab}'s answer seems to be the exact value of the integral, but this is not quite true. Enter \smallskip \noindent \verb$>> format long$ \noindent \verb$>> [q, n] = quad('sin(x)', 0, pi)$ \smallskip Now you can see that the result is accurate only up to eight decimal places (in fact, \textsc{MatLab}'s answer is \emph{guaranteed} to be accurate only up to six decimal places, but in this particular example we get a somewhat better-than-hoped-for accuracy). You can force \textsc{MatLab} to give you answers with greater precision, but this may slow down the calculation. In order to make sure that the answer is correct up to ten decimal places, enter \smallskip \noindent \verb$>> [q, n] = quad('sin(x)', 0, pi, 1.e-10)$ \smallskip \begin{problem} What is the error this time? How does it compare to the maximum allowed error tolerance of $10^{-10}$? What happened to the number of function evaluations? \end{problem} When using the \verb$quad$ command, some extra care needs to be taken when entering the formula of the function. As mentioned above, the formula for $f(x)$ is not treated as a symbolic expression. Instead, it is treated as a \emph{vector} of numbers. \textsc{MatLab} uses slightly different notations for multiplication, division, and exponentiation for individual numbers and for numbers that are part of a vector. In the latter case, the symbols \verb$.*, ./, .^$ are used. For example, in order to approximate $\int_1^3 \frac{x^2\ln x}{x+1} \, dx$ you should enter \smallskip \noindent \verb$>> quad('x.^2.*log(x)./(x+1)', 1, 3)$ \smallskip \begin{problem} What is \textsc{MatLab}'s answer? \end{problem} When using a computer algebra system to numerically integrate a function, you should always make sure beforehand that the integral that you are trying to evaluate is proper. For example, let us try to approximate the improper integral $\int_{-1}^1 \frac{1}{x^2} \, dx$. \smallskip \noindent \verb$>> quad('1./x.^2', -1, 1)$ \smallskip \textsc{MatLab} will complain that you asked it to divide by zero and give you the answer \verb$NaN$, which stands for not a number.'' Since $\int_{-1}^1 \frac{1}{x^2} \, dx = \infty$, you might have expected an answer of \verb$inf$,'' but this is not what you get. Now let us try to use \verb$quad$ for evaluating $\int_{-\pi}^{2\pi} \frac{1}{x^2} \, dx$. Let us also keep track of the number of function evaluations performed by \textsc{MatLab}. \begin{problem} What command do you enter for this? How many function evaluations does \textsc{MatLab} go through? Why does \textsc{MatLab} give you a numerical answer now; whereas it did not give you a numerical answer in the previous example? \emph{Hint:} The last question requires some thought. You will need to remind yourself how Simpson's rule works and use your imagination to second-guess the steps taken by \textsc{MatLab} in executing your commands. \end{problem} \end{document}