Trying to Create a Riemann Sum function from scratch, keep getting function error.

So i have to create a riemannsum calculator function, its been a little bit since ive used MatLab, but this seems right i just dont understand why i keep getting this error.
function [ Result ] = RiemannSum(Fun,a,b) %This function will calculate the riemann sum of a function defined from an %interval from a to b. This will be done using 10 subintervals.
dx=(b-a)/10;
XS=(a+(dx/2):dx:b-(dx/2));
Result=sum((feval(Fun,XS)).*dx);
The error i get is : RiemannSum(2*x,1,10) Undefined function or variable 'x'.
Even if i set x=XS it doesnt fix the error, im really stuck here.
Or when i tinker around and first run x=[] ill get this error instead.
Error using feval Argument must contain a string or function_handle.
Error in RiemannSum (line 6) Result=sum((feval(Fun,XS))*dx); end

 Accepted Answer

Please type the following at the MATLAB Command Prompt:
F = @(x) 2*x;
R = RiemannSum(F,1,10);

7 Comments

That's fine and dandy but for this assignment I need the function to take the function I want evaluated as an input. Or is there no way to do this without defining it beforehand. What i need is for me to type RiemannSum(x^2,1,10) and it'll calculate the riemann sum for x^2 from 1 to 10. I know what it needs to do mathematically but MatLab isn't cooperating with my brain haha.
That is exactly what this solution does. It takes any function as an input argument.
Please try:
G = @(x) 3*x^2;
R = RiemannSum(G,1,10);
H = @(x) cos(x);
R = RiemannSum(H,1,10);
That is the whole point of using an anonymous function.
Okay, now is there any way instead of storing the function in H or G or declaring it beforehand, it THE FUNCTION ITSELF would be the input argument?
I don't know if this will work, but you could try:
R = RiemannSum(@(x) 2*x, 1, 10)
I am not sure why it matters. What difference does it make?
Yes it did finally, thank you very very much. I know it must have been a bit annoying.

Sign in to comment.

More Answers (1)

I was told by an individual to just put my function in '' and that did not work, i now get this error: Invalid function name '2*x'.
Error in RiemannSum (line 6) Result=sum((feval(Fun,XS)).*dx);

1 Comment

Please do not post answers to your own question. Instead, post a comment to your question or to an answer, or edit your question.

Sign in to comment.

Categories

Find more on Mathematics in Help Center and File Exchange

Asked:

on 31 Aug 2014

Commented:

on 1 Sep 2014

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!