# MATLAB and M-Files

1. Sep 17, 2007

### qspeechc

I have this assignment:
https://vula.uct.ac.za/access/content/group/317a243a-d926-4470-804c-7d46e296ab63/ass3_07.pdf

Although, I don't know if you'll be able to access that.
I am busy with task 2 in the file above.
Anyway, I am trying to write an M-File for a function g. g has two input arguments, a function f(x), and a x-value of the function. The file is then meant to use Newton's Method to approximate the gradient at x.

Here is my code:

>>function y = g(f(x), x)
>>y = (f(x+h) - f(x))/h;

I have found the best value for h in a previous bit of code.

In the command window I try to evaluate a functions' gradient at a point thus:

>>g(x^2, 2)

Meaning f(x) = x^2 and x = 2, but I get the error:
??? Error: File: F:\My Documents\MATLAB\Numerical Methods\g.m Line: 1 Column: 17
Unbalanced or misused parentheses or brackets.

The same for
>>g(x.^2, 2)
>>g('x^2', 2)
>>g('x.^2', 2)

But I can not see where I have "Unbalanced or misused parentheses or brackets" in the line:

>>function y = g(f(x), x)

What is my error, and how do I correct it? Thanks.

2. Sep 17, 2007

### CEL

You should make
function y = g(f,x,h)
y = (f(x+h) - f(x))/h;

and a function f:
function y = f(x)
y = x^2;

And call

g(@f,2,h)

3. Sep 17, 2007

### qspeechc

It works if, when you call g you do it as such:

g(inline('x^2'), 2)

h is not an input variable, it is calculated according to the computer's computing power (?)

Sorry, I do not get that.

Anyway, it doesn't really matter because I found a way I understand to make it work. I would like to get rid of having to write "inline" though.

4. Sep 17, 2007

### CEL

Unless you declare h to be global, there is no means for your function g to know its value, unless you calculate it inside your g function.
The symbol @ is a handle to a function. If you have a function called myfun, you pass it as a parameter for another function using the handle.
for instance:
foo(@myfun, x)

5. Sep 17, 2007

### qspeechc

Yes, h is calculated inside the function file.
We have not covered the topic of handles. I thinks it's best I stick to inline objects, which we have covered, as I do not fully understand handles yet. Maybe I try again tomorrow.
Thank you very much for your help CEL!