coverting fortran to matlab

1 回表示 (過去 30 日間)
hasan damaj
hasan damaj 2019 年 11 月 29 日
回答済み: hasan damaj 2019 年 12 月 11 日
Code.JPG
  5 件のコメント
hasan damaj
hasan damaj 2019 年 11 月 29 日
ok no problem.
line 22 to line 28.
but i need ur help to continue the code and thank u
hasan damaj
hasan damaj 2019 年 11 月 29 日
please continue this code program for me..knowing i will attach the picture for the results and thank youcode2.JPG

サインインしてコメントする。

回答 (2 件)

J Chen
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
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
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.

サインインしてコメントする。


hasan damaj
hasan damaj 2019 年 12 月 11 日
h=zeros(nx,ny);
amax = 0;
h(1,:) = [ 8.04 , 7.68 , 7.19 , 8.53];
h(end,:) = [6.82 , 7.56 , 7.99 , 8.29 ];
h(2:3,1) = [7.68;7.19];
h(2:3,end) = [8.41; 8.33];
while amax >= 0.01
for j = 2 : nx-1
for i = 2 : ny-1
oldval = h(i,j);
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;
if e > amax
amax = e;
end
end
end
end
h
its giving me zeros in h(2,3) h(3,2) h(3,3) h(2,2)
how can i get to the results same as above

カテゴリ

Help Center および File ExchangeNumber Theory についてさらに検索

タグ

製品


リリース

R2016a

Community Treasure Hunt

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

Start Hunting!

Translated by