coverting fortran to matlab
1 次查看(过去 30 天)
显示 更早的评论
回答(2 个)
J Chen
2019-11-29
The following statements are wronng
h(i,j) = ( h(i-1,j) + h(i+1,j) + h(i,j-1) + h(i,j+1)/4) ;
..
e = abs(h(i,j)) - oldval;
It should be
h(i,j) = ( h(i-1,j) + h(i+1,j) + h(i,j-1) + h(i,j+1) ) /4 ;
..
e = abs( h(i,j) - oldval );
Change while amax > 0.01 to
while 1
..
if ( amax > 0.01 )
amax = 0;
else
break
end
end
One end statement has been missing in your code.
6 个评论
dpb
2019-11-29
编辑:dpb
2019-11-29
Where is the looping structure in the original? That's what you need to emulate.
I don't quite agree with the other poster's suggestion (not that it won't work but it isn't my "cup of tea" in how I'd write it).
I pointed out above the modifications needed to write the while as
amax=1;
while amax>E % set E to desired tolerance value
...
end
Walter Roberson
2019-11-29
while 1 .... ???????
.. (what is this)??????
In MATLAB, if and while are considered true provided that all of the values in the condition are non-zero. The constant 1 there will always be non-zero, so this code is expressing an infinite loop.
MATLAB happens to use the numeric value 1 for the logical value true so a directly equivalent way of writing while 1 is while true -- which is a form I am more likely to write.
另请参阅
类别
在 Help Center 和 File Exchange 中查找有关 Number Theory 的更多信息
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!