# MatLab Plot

1. Mar 13, 2015

### joshmccraney

Hi PF!

I am trying to run the following plot:

k = .001;
figure;
hold on
[X,Y]=meshgrid(-4:0.01:4);
a = 5.56*10^14;
b = .15/(2*.143*10^(-6));
for n = 1:8
k = k*2^(n-1);
Z = a./(X.^2+Y.^2).*exp(b.*(X-sqrt(X.^2+Y.^2)))-k;
contour3(X,Y,Z)
end

which works great if a = b = 1. But now when the numbers are big, I'm not getting a good plot. Any ideas how to remedy this?

Thanks so much!

Josh

2. Mar 13, 2015

### soarce

I think that there was a parameter to control the number of contour levels, somehow it was also possible to explicitly give the conour level values to be ploted. What do you mean by "not a good plot" ?

3. Mar 13, 2015

### joshmccraney

Sorry for the ambiguity. By "not a good plot" I mean the new plot looks nothing even remotely similar to the original. I know constants will change the graph, but not to this extent.

Are you suggesting I change the k values?

4. Mar 14, 2015

### soarce

The values of a and b resamble some physical constants, you should normalize your function and reduce the number of constants involve. Normalize x and y in terms of a and normalize the function value in terms of k and a/b ratio. In this way you have a better control of the ranges of x, y and f(x,y). Otherwise rapidly changing regions may receive a poor samplig and will look not so good.

5. Mar 14, 2015

### joshmccraney

Ahhhh, good idea! So you saying let the function equal itself divided by a, right? and then let (X-sqrt(X.^2+Y.^2)) equal itself divided by b?

6. Mar 15, 2015

### soarce

We introduce new variables $x_1=x/\sqrt{b}$ and $y_1=y/\sqrt{b}$ and the new function let's say $f_1(x_1,y_1)$ will read

$$f_1(x_1,y_1)=\frac{c}{x_1^2+y_1^2} \exp(x_1 -\sqrt{x_1^2 + y_1^2} )$$

with $c=a/b$. We are left with only one constant in the function, $c$ beeing a scaling factor for the values of the function.
How do you handle the origin, i.e. $(x,y)=(0,0)$ ? The function $f$ goes to infinity!

On the other hand I think that you don't need to rest the $k$ value in order to obtain the contour level. The contour3() function receives a fourth parameter which alter the contour levels (step number, interval). You must read the matlab help to see whether any option may result useful in your case. I remember that several years ago I was forced to use Gnuplot insead of Mathlab because some specific plot options were not available.

7. Mar 16, 2015