How to Plot y=sin(x)/log(x) in MATLAB Without Imaginary Errors?

  • Context: MATLAB 
  • Thread starter Thread starter MathematicalPhysicist
  • Start date Start date
  • Tags Tags
    Plot
Join the discussion
Registration is free. Ask a follow-up in this thread, or start your own.
11 replies · 4K views
Science Advisor
Gold Member
Messages
4,662
Reaction score
372
Hi I want to plot the function ##y=\sin(x)/\log(x)## in MATLAB but I get the next error message:
Matlab:
Warning: Imaginary parts of complex X and/or Y arguments ignored

Here is the script that I used:
Matlab:
x = -2*pi:pi/100:2*pi;
y = sin(x)/log(x);
plot(x,y)
How to fix this that I'll get the plot on the real line?

Thanks!
 
Physics news on Phys.org
What happens to the denominator when ##x=1##?
 
MathematicalPhysicist said:
@kuruman Yeah, it's not defined there, then how plot this function?
when I type it in google I get a nice plot.
Can you do a piecewise plot? (I am not familiar with MATLAB).
 
@jedishrfu when I try to plot for the domain [2,10] I still don't get a graph, I do get the plot window but without the graph line, it doesn't show up.

Matlab:
x = 2:1/100:10;
y = sin(x)/log(x);
plot(x,y)
 
MathematicalPhysicist said:
@jedishrfu when I try to plot for the domain [2,10] I still don't get a graph, I do get the plot window but without the graph line, it doesn't show up.
Use this:
Matlab:
y = sin(x)./log(x);
The thing I added is "./" so that ##y## becomes a matrix. Now you should get a good plot.
Figure 2019-02-14 08_11_58.png
 

Attachments

  • Figure 2019-02-14 08_11_58.png
    Figure 2019-02-14 08_11_58.png
    9.5 KB · Views: 952
  • Like
Likes   Reactions: MathematicalPhysicist and jedishrfu
the dot before the operator says to do an element by element evaluation.

as an example:

x=0:0.1:10
y=x.*x

generates the y=x^2 function and this plots it

plot(x,y)

In other programming languages, this simple convenience would be implemented as a for loop

Python:
for i in range(0, 100):
    x[i] = i / 10.0

for i in range(0, 100):
    y[i] = x[i] * x[i]
 
jedishrfu said:
as an example:

x=0:0.1:10
y=x.*x

generates the y=x^2 function
Note that the dot also works for exponential operators:
Code:
y = x.^2