くだすれFORTRAN(超初心者用)その5at TECH
くだすれFORTRAN(超初心者用)その5 - 暇つぶし2ch868:デフォルトの名無しさん
12/04/24 23:36:35.80
設問に1/1は入っていないのだが

869:デフォルトの名無しさん
12/04/24 23:58:21.64
答えをそのまま書いては学習にならんだろう

870:デフォルトの名無しさん
12/04/25 23:27:40.03
FortranとOpenCLの組み合わせの場合も、やっぱGPU側に送るルーチンは特殊なCで書くのか?

871:デフォルトの名無しさん
12/04/26 01:55:24.39
整数Nを読み込み、1+1/1!+1/2!+1/3!+・・・+1/n!の値を計算して出力するプログラム
このプログラムを級数の項数Nを入力するかわりに、DO WHILE文を用いて級数の項の大きさが10**(-4)以下になったとき、級数の和の計算を止めるプログラムに書き換える
さらに、結果の出力として
       1)収束した時の項番N
       2)級数の和S
       3)級数の和SとEXP(1.0)との差
を表示する

夜遅くにすいません。よろしくお願いします

872:デフォルトの名無しさん
12/04/28 01:10:24.07
宿題スレなのか?

n = 1
s = 1
x = 1
do while (log10(x) < 4.0D)
 ! 階乗の逆数を s に足し込み
 ! n と x を更新
end do
! 結果出力

873:お願いします
12/04/30 19:21:28.96
fortranについて

2次元配列において(1000,1000)このデータのうち(200:300、100:400)だけ取り出しました。
このときwrite文で書きだす時、取り出したデータだけでなく、配列の個数自体とりだしたいのですがどうすれば
よろしいでしょう?
たとえば
結果が
200 100 10.4←これは配列の中身のデータ
201 100 2.0
202 100 4.8
203 100 5.7



200 101 5.6
201 101 7,9
202 101 7,9
203 101 8,0



200 102 6.8
201 102 15.9
202 102 26.1



298 400 2.2
299 400 3.2
300 400 3.6
このような感じです。よろしくお願いし


874:デフォルトの名無しさん
12/04/30 19:40:00.17
質問の意味がよく分からんが、取り出した部分の総要素数という事なら、COUNT命令でおk?
COUNT( x(200:300, 100:400) )

875:デフォルトの名無しさん
12/05/03 21:48:11.69
初期値X(0)=1としてK=1,2,3・・・の順にX(K)=cos(X(K-1))を繰り返して、|X(K)-X(K-1)|<0.00001になったら反復を打ち切り、
1)反復回数K、2)Xの近似解、3)近似解の誤差を出力するプログラム。DO WHILE文を用いる

876:デフォルトの名無しさん
12/05/03 22:09:42.36
簡単過ぎる。もっと難しいの持って来い。

877:デフォルトの名無しさん
12/05/04 00:01:35.98
基礎演習の宿題なんでお願いします

878:デフォルトの名無しさん
12/05/04 10:11:32.40
program twochannel
implicit none
real :: x
integer :: k
k = 0
x = 1.0
do while ( abs(cos(x) - x) >= 0.00001 )
k = k + 1
x = cos(x)
end do
print *, 'number of iterations', k, ' root', x, ' error', abs(x - cos(x))
stop
end program twochannel

879:デフォルトの名無しさん
12/05/08 11:36:16.14
もう一つあったFortran スレ落ちたねw

880:デフォルトの名無しさん
12/05/09 01:30:31.73
二次探索法のアルゴリズムに従って、解の存在範囲の上限XRと下限XRの初期値を入力し
f(x)=x-cos(x)=0の解を繰り返し処理(DO WHILE)で求め、
1)近似解、2)繰り返し計算の回数、3)方程式f(x)の誤差を表示するプログラム(収束の許容精度EPSは10の-5乗)


881:デフォルトの名無しさん
12/05/09 01:36:39.70
二分探索法だろ、問題分もまともに写せないのかよ。小学校からやり直せ!

882:デフォルトの名無しさん
12/05/09 01:57:45.71
適当に問題文を書き写して末尾に「プログラム。」と書くと
頼まなくても答を書いてくれるプログラム。

883:デフォルトの名無しさん
12/05/09 02:16:52.55
教員側もこのスレ見てたりして

884:デフォルトの名無しさん
12/05/09 02:20:11.69
答え書いてとお願いしているわけではないからセーフ。

885:デフォルトの名無しさん
12/05/09 13:45:54.29
答えもらって丸写ししたら
カンニングと同じなんだけど
底辺大学あたりだと
「人に聞いた」事が評価されるからなぁ

886:デフォルトの名無しさん
12/05/09 19:04:29.06
>>883
見ているw

887:デフォルトの名無しさん
12/05/09 23:58:47.57
program twochan
implicit none
real, parameter :: eps = 1.0e-5
real :: x, xroof, xfloor, xr, xf
integer :: i
1 print *, 'input lower and upper range of x'
read *, xfloor, xroof
if ( f(xfloor) * f(xroof) > 0.0 ) then
print *, 'inappropriate inputs! '
goto 1
end if
xf = xfloor
xr = xroof
x = 0.5 * (xf + xr)
i = 0
do while ( abs( f(x) ) > eps )
i = i + 1
if ( f(x) * f(xr) > 0.0 ) then
xr = x
else
xf = x
end if
x = 0.5 * (xf + xr)
end do
print *, 'a root of equation x - cos(x) = 0 ', x, ' no. of iterations =', i, ' absolute difference ', abs(f(x))
stop
contains
real function f(x)
real, intent(in) :: x
f = x - cos(x)
end function f
end program twochan

888:デフォルトの名無しさん
12/05/10 00:01:01.37
入力例
input lower and upper range of x
0.5 0.7
inappropriate inputs!
input lower and upper range of x
0.5 0.8
a root of equation x - cos(x) = 0 0.7390808
no. of iterations = 13
absolute difference 7.1525574E-06
続行するには何かキーを押してください . . .

先生! おれ DO WHILE 嫌いなんで、条件緩めて下さいw IF () EXIT ; END DO の REPEAT UNTIL 派なんです。


最新レス表示
レスジャンプ
類似スレ一覧
スレッドの検索
話題のニュース
おまかせリスト
オプション
しおりを挟む
スレッドに書込
スレッドの一覧
暇つぶし2ch