## MATLAB and M-Files

I have this assignment:
https://vula.uct.ac.za/access/conten...63/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.

 Quote by qspeechc I have this assignment: https://vula.uct.ac.za/access/conten...63/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.
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)

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

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

 You should make function y = g(f,x,h)
h is not an input variable, it is calculated according to the computer's computing power (?)

 And call g(@f,2,h)
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.

## MATLAB and M-Files

 Quote by 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. Thank you for your help.
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)
 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!