Linear to logarithmic scale conversion

Join the discussion
Ask a follow-up here, or get your own question answered by working scientists, mathematicians and engineers — people, not an autocomplete.
Real named experts · corrections over time · the nuance an AI answer skips
4 replies · 40K views
jocasa
Messages
4
Reaction score
0
Hi!

I'm making a computer program that represents some quantities in a graph in this way:

x'i=(xi-xmin)/(xmax-xmin)

so that the possible values of x range from 0 to 1. This is a linear scale. I want to do the same with the logarithmic values of xi. That is, I want to implement a log scale in my graphs, also in the range from 0 to 1.

Can anyone tell me how to do it?

Thanks!
 
Physics news on Phys.org
jocasa said:
Hi!

I'm making a computer program that represents some quantities in a graph in this way:

x'i=(xi-xmin)/(xmax-xmin)

so that the possible values of x range from 0 to 1. This is a linear scale. I want to do the same with the logarithmic values of xi. That is, I want to implement a log scale in my graphs, also in the range from 0 to 1.

Can anyone tell me how to do it?

Thanks!

Welcome to the PF.

What language are you programming in? Does it have any math libraries that cover logarithms?
 
I'm using C++ and it has both log and log10 functions, that is, log in base e and log in base 10.

I'm not sure if I made myself clear in my first post. I want to be able to make log-log plots, transforming the resulting plot into the [0,1] interval.
 
jocasa said:
Hi!

I'm making a computer program that represents some quantities in a graph in this way:

x'i=(xi-xmin)/(xmax-xmin)

so that the possible values of x range from 0 to 1. This is a linear scale. I want to do the same with the logarithmic values of xi. That is, I want to implement a log scale in my graphs, also in the range from 0 to 1.

Can anyone tell me how to do it?

Thanks!
I think this will work:

x'i = (log(xi)-log(xmin)) / (log(xmax)-log(xmin))​
As a test, we can see that if xmin,max are 1 and 100, then xi=10 gives x'i=0.5. As it should, since 10 is halfway between 1 and 100 on a log scale.
 
Thanks! It makes sense to me. Now the problem is to implement it in the program, but I won't bother you with such a thing. Thanks again from Spain!