Help with nesting subfunctions?

1 view (last 30 days)
Tyler
Tyler on 25 Sep 2012
I have an assignment that requires me to use a nested subfunction to produce a plot, and am not sure how to incorporate it. The exact problem states:
Recall Euler’s formula from analytical calculus: ei·x = cos(x) + i · sin(x), where i is the imaginary unit. A slight rearrangement yields:
cos(x) = ei·x i · sin(x)
Create a nested subfunction that accepts one input argument x (which may be
a vector) and returns the cos function defined as above. Call this function and plot its output from −π ≤ x ≤ π using π/100 increments. Label axes and title it ”Euler Output”.
So far, I have not even been able to do this without a nested subfunction. MATLAB tells me that, "Subscript indices must either be real positive integers or logicals," but the given equation clearly needs to make use of imaginary roots.
  3 Comments
Tyler
Tyler on 25 Sep 2012
%% Part 1 - Euler
x=-pi:pi/100:pi;
cos(x)=exp(1i.*x)-1i*sin(x);
figure1(x,cos(x));
title('Euler Output')
And that returns with
"Subscript indices must either be real positive integers or logicals."
Tyler
Tyler on 25 Sep 2012
I know that isn't a nested function at all, but shouldn't that still work just so I can get an idea of which direction to go?

Sign in to comment.

Accepted Answer

Wayne King
Wayne King on 25 Sep 2012
Edited: Wayne King on 25 Sep 2012
Your problem is here:
cos(x)=exp(1i.*x)-1i*sin(x);
You should spend some time reading the MATLAB Getting Started material, but you just assign the output to a variable.
cosx = exp(1i*x)-1i*sin(x);
Of course you have another problem with figure1( ) unless you have written a function called figure1().
  2 Comments
Tyler
Tyler on 25 Sep 2012
How would I go about making that an anonymous function and calling it through the script? Just by making the above:
h=@cosx exp(1i*x)-1i*sin(x);
?
What benefit does that have when writing code?
Wayne King
Wayne King on 25 Sep 2012
cosx =@(x) exp(1i*x)-1i*sin(x);
that gives you a function handle.
Then you can do:
x = -pi:0.01:pi;
y = cosx(x);

Sign in to comment.

More Answers (0)

Categories

Find more on Mathematics in Help Center and File Exchange

Community Treasure Hunt

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

Start Hunting!