필터 지우기
필터 지우기

Nested for loop for contour plotting of Laplace equation

조회 수: 3 (최근 30일)
John Doe
John Doe 2019년 7월 26일
댓글: Star Strider 2019년 7월 26일
Capture.JPG
I am trying to plot the "contour" of this solution.
The code I have written using "nested for loop" :
  1. One for loop for varying x,
  2. Second inner for loop for varying y,
  3. And the final for loop for varying k.
I need to sum over k for fixed values of (x,y), that's why I have initialized two variables : sum and sumprev.
clc
clear all;
close all;
v0=100;
a=10;
b=5;
k=1:70;
n=(2*k)-1;
x=1:10/100:10;
y=1:5/100:5;
[X,Y,N]=meshgrid(x,y,k);
sumprev=0;
sum=0;
for i=1:length(X)
for j=1:length(Y)
for m=1:length(N)
sum(i,j,m)=sumprev+(4.*v0./pi).*(sin(m.*pi.*i./a).*(sinh(m.*pi.*j./a)./(m.*sinh(m.*pi.*b./a))));
sumprev=sum(i,j,m);
end
end
end
contour(X,Y,sum);
With meshgrid, I tried to create appropriate sizes of matrices. But after running the code, I get this error on my final line of the code:
Input arguments must have at most 2 dimensions.
Error in C5 (line 22)
contour(X,Y,sum);
Also, I checked my workspace and found that my variable sumprev is containing NaN value which seemed odd to me.
How to resolve this problem? Kindly help out if you can.
Thanks!

채택된 답변

Star Strider
Star Strider 2019년 7월 26일
There are more problems that that one line. When I ran your code, I discovered that most of your (unfortumately-named) ‘sum’ matrix were NaN, so there was no plot. (Please do not give your variables names tthat conflict with MATLAB functions. Naming variables that conflict with MATLAB functions is termed ‘overshadowing’ and makes the function completely useless if you want to use it later. This is what your ‘sum’ variable would do.)
The loops are also unnecessary. You can take advantage of vectorization. Try this version of your code:
v0=100;
a=10;
b=5;
k=1:70;
n=(2*k)-1;
x=1:10/100:10;
y=1:5/100:5;
[X,Y,N]=meshgrid(x,y,k);
Ve = (sin(N.*pi.*X/a).*sinh(N.*pi.*Y/a)) ./ (N.*sinh(N.*pi.*Y/a));
V = (4*v0/pi) * sum(Ve,3);
It works, however it does not likely produce the sort of contour you want, so I leave that to you to sort out.

추가 답변 (0개)

카테고리

Help CenterFile Exchange에서 Loops and Conditional Statements에 대해 자세히 알아보기

Community Treasure Hunt

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

Start Hunting!

Translated by