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
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.
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 件のコメント
Julia
2014 年 8 月 5 日
But you can use a for-loop in this fashion. The error that occurs is because of h(k).
Dhines
2014 年 8 月 5 日
Hikaru
2014 年 8 月 5 日
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 で Logical についてさらに検索
製品
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!