| New Reply |
3d plot in scilab |
Share Thread | Thread Tools |
| Feb15-12, 02:43 PM | #1 |
|
|
3d plot in scilab
I just downloaded scilab because Wolfram Alpha wouldn't want to plot the function I'd like.
In a physics problem I've found the temperature distribution of a 2 dimensional system. I'd like to visualize this function in 3d. The function I want to plot is [itex]u(x,y)=\frac{1}{\pi} \arctan \left ( \frac{y+a}{x} \right )+\frac{1}{\pi} \arctan \left ( \frac{a-y}{x} \right )[/itex]. I've read the help file of scilab of how to plot but I'm getting lost very quickly. Any help is appreciated! Edit: so far I have Code:
x=[0:0.1:12]'; y=[0:0.1:12]'; z=atan((y-2)/x)+atan((2-y)/2); plot3d(x,y,z) |
| Feb15-12, 05:19 PM | #2 |
|
|
Don't know scilab, but your second 'atan' has a '2' in the denominator...shouldn't that be 'x'?
what do the single apostrophes do? what do you think you are accomplishing with z=... ? are x and y traversed independently as if they were in 2 nested do-loops...or is it just a one-to-one? In other words, is z also just a vector? or are you getting a matrix? try to input one line at a time and find out what you get back after each....don't jump all the way to plotting...baby steps, baby steps! |
| Feb15-12, 06:45 PM | #3 |
|
|
Here is an example they give, from which I've been inspired: Code:
// simple plot using z=f(x,y) t=[0:0.3:2*%pi]'; z=sin(t)*cos(t'); plot3d(t,t,z) |
| Feb15-12, 07:13 PM | #4 |
|
|
3d plot in scilab
ok, so, did the example work? Did you get a surface plot?
I think the apostrophe means transpose. In the example where they multiply sin times cos, notice how they pass t to one function and t' to the other...the fact that these two vectors are orthogonal (one is a column vector and the other a row vector) may be what makes it produce a square matrix for z....in other words, the expression is evaluated as in a double loop. So, go back to your own problem and pass y and x' and see what you get...see if you can display the z matrix before plotting to see if in fact is a square matrix. |
| Feb15-12, 08:24 PM | #5 |
|
|
look at the function meshgrid if it exists in scilab (it is a matlab function), you need a 2-d grid to properly plot in 3-d
|
| Feb15-12, 08:40 PM | #6 |
|
|
Code:
-->x=[0:0.1:12]'; -->y=[0:0.1:12]'; -->z=atan((y-2)/x)+atan((2-y)/x); -->plot3d(x,y,z) |
| Feb15-12, 09:03 PM | #7 |
|
|
In analogy to their working example:
Code:
x = -1:0.1:1;
y = -1:0.1:1;
[X,Y] = meshgrid(x,y);
for i=1:size(X,1)
for j=1:size(X,2)
Z(i,j) = sinc(2*%pi*X(i,j)*Y(i,j));
end
end
surf(X,Y,Z)
Code:
-->x = 1:0.1:12; -->y = 1:0.1:12; --> -->[X,Y] = meshgrid(x,y); --> -->for i=1:size(X,1) --> for j=1:size(X,2) --> Z(i,j) = atan((Y(i,j)-2)/X(i,j))+atan((2-Y(i,j))/X(i,j)); --> end -->end --> -->surf(X,Y,Z) |
| Feb15-12, 10:05 PM | #8 |
|
|
I think the reason you are getting a flat surface is because you have yet another typo which effectively makes the summation be zero...
in your numerators, you have Y-2 and 2-Y ...you should have Y+2 and 2-Y and, for completeness, you may want to put back the division by PI |
| Feb15-12, 10:23 PM | #9 |
|
|
Using the meshgrid I get a somehow decent surface, but doesn't work well for the plot3d command so far. Here are 2 screenshots. |
| Feb15-12, 11:36 PM | #10 |
|
|
Hhhmm...here it is what it looks like with python and matplotlib.
|
| Feb16-12, 09:08 AM | #11 |
|
|
|
| New Reply |
| Thread Tools | |
Similar Threads for: 3d plot in scilab
|
||||
| Thread | Forum | Replies | ||
| i need help for scilab? | Math & Science Software | 0 | ||
| Rasterized density plot + countour plot in Mathematica (to solve EPS issues) | Math & Science Software | 0 | ||
| [help] using scilab to plot the direction fiel of ode | Precalculus Mathematics Homework | 0 | ||
| ode (scilab) problem | Engineering, Comp Sci, & Technology Homework | 0 | ||