# I don't get the correct output from my function

3 views (last 30 days)

Show older comments

Thomas Hammer
on 19 Feb 2020

Commented: Steven Lord
on 19 Feb 2020

Hello community. I've struggled for a bit now with this.

I don't understand how I can get elementwise multiplication and addition to work here. The graph is not what it should look like when I run this program. I've tested with other software, such as Geogebra. Other than that, when I change the range from -5 to -10, the graph shifts with it.

I just don't see how to fix this problem. I would love help on this. Thanks.

values = -5:0.1:5;

f = @(x)(exp(1-2.*x).*(x+cos(2.*x)));

plot(values, f(values))

##### 5 Comments

Adam Danz
on 19 Feb 2020

Edited: Adam Danz
on 19 Feb 2020

"I don't understand how I can get elementwise multiplication and addition to work here."

What's not working with your current code? The only addition I see is (x+cos(2.*x)) which is doing element-wise addition.

"The graph is not what it should look like"

What should it look like?

"when I change the range from -5 to -10, the graph shifts with it"

Do you mean -5 to +10? If the x values are changed, the range of data should shift horizontally according to the new x values.

### Accepted Answer

Turlough Hughes
on 19 Feb 2020

Edited: Turlough Hughes
on 19 Feb 2020

The function is correct. However, because this function outputs very large numbers depending on your range (in terms of absolute value), you end up with missing the details that you appear to be looking for.

Try the following:

f = @(x) exp(1-2*x).*(x+cos(2*x))

fplot(f,[-5 15])

ylim([-2 4])

##### 2 Comments

Steven Lord
on 19 Feb 2020

Note the limits of the axes in the geogebra diagram: the lower X limit is -1.5 or -2, not -5 or -15. If you do what Turlough Hughes did but use [-1.5 6] as the limits instead of [-5 15] it looks pretty similar to the geogebra diagram. If I tweak it a little more the resemblance is even stronger.

Let's enable the major and minor grids:

grid on

grid minor

make the axes rulers cross at the origin:

ax = gca;

ax.XAxisLocation = 'origin';

ax.YAxisLocation = 'origin';

and have the tick locations match:

xticks(-1.5:0.5:6)

yticks(-1.5:0.5:3)

Adjust the size of the figure window with the mouse (dragging the sides or one of the lower corners) to the same size as the picture on imgur and they agree pretty well.

### More Answers (1)

M
on 19 Feb 2020

### See Also

### Categories

### Community Treasure Hunt

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

Start Hunting!