what is error actually in my code, any one solve this?

xdim=50;
ydim=50;
v_now=zeros(xdim,ydim);
v_prev=zeros(xdim,ydim);
for i=1:1:ydim
v_now(i,xdim)=20;
end
x=0.01;
for k=[0.01,0.001,0.0001,0.00001]
iter=0;
iter_error=max(max(abs(v_now-v_prev)));
while(iter_error>k)
iter=iter+1;
for i= 2:1:xdim-1
for j=2:1:ydim-1
v_now(i,j)=(v_now(i-1,j)+v_now(i+1,j)+v_now(i,j-1)+v_now(i,j+1))/4;
end
end
iter_error=max(max(abs(v_now-v_prev)));
v_prev=v_now;
end
h(k)=iter;
end
plot(k,h(k));

답변 (2개)

Julia
Julia 2014년 8월 5일

0 개 추천

Your problem is that k is not an integer. Matlab considers h as an array and you must use integers to access the entries of arrays.
Hikaru
Hikaru 2014년 8월 5일
편집: Hikaru 2014년 8월 5일
A for loop will repeat a statement for a specified number of times. The line
for k=[0.01,0.001,0.0001,0.00001]
should be fixed. You can use decimal as increments in for loop, but for indexing, you need to use other variables.
h(k)=iter; %the elements in k are not integers, so you cannot use them as index.

댓글 수: 3

But you can use a for-loop in this fashion. The error that occurs is because of h(k).
i modified it.. but the graph comes blank
Thanks Julia, I edited my statement to make it clearer. I meant to say it's not okay for indexing.
OP, can you update the modified code? We can try to see where the problem is.

댓글을 달려면 로그인하십시오.

카테고리

도움말 센터 및 File Exchange에서 Loops and Conditional Statements에 대해 자세히 알아보기

제품

태그

질문:

2014년 8월 5일

댓글:

2014년 8월 5일

Community Treasure Hunt

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

Start Hunting!

Translated by