coverting fortran to matlab
    6 次查看(过去 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. 
另请参阅
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!




