くだすれFORTRAN(超初心者用)その6

レス数が900を超えています。1000を超えると表示できなくなるよ。
2012/08/16(木) 20:58:00.31
このスレッドは、他のスレッドでは書き込めない超低レベル、
もしくは質問者自身何が何だか分からない質問を勇気を持って書き込むスレッドです。
FORTRAN使いが優しくコメントを返しますが、
お礼はFORTRANの布教と初心者の救済と次期Fortran2008規格でのCOMEFROM文採用をお願いします。

●注意事項
・質問する前にGoogle等の検索サイトで検索しましょう。
・回答者にわかりやすい様に、質問内容はできる限り詳しく書きましょう。
・エラーの場合は起きた状況、環境(OS・コンパイラ・バージョン)、エラーメッセージも詳しく書きましょう。

●前スレ
くだすれFORTRAN(超初心者用)その5
http://toro.2ch.net/test/read.cgi/tech/1269704830/

●過去スレ
くだすれFORTRAN(超初心者用)その4
http://pc12.2ch.net/test/read.cgi/tech/1232789521/
くだすれFORTRAN(超初心者用)その3
http://pc11.2ch.net/test/read.cgi/tech/1196384126/
くだすれFORTRAN(超初心者用)その2
http://pc11.2ch.net/test/read.cgi/tech/1164121236/
くだすれFORTRAN(超初心者用)
http://pc8.2ch.net/test/read.cgi/tech/1138063703/
2015/07/12(日) 01:54:09.24ID:z4R5SLxl
>>819
subroutineの内部で宣言するなら書き方が違うはず
引数で宣言するより別の行で宣言した方が見やすくない?
とりあえず自分はこんな感じで書く
https://ideone.com/HCzWB6
2015/07/15(水) 01:28:37.71ID:yskKzL3L
>>822
リンク先のように書いたらうまくいきました。
自分のプログラムの他の部分も確認したところ、配列の書き方が全て間違っていました(配列A(1:N)をA(N)などと書いていました)。
ありがとうございました。
2015/07/28(火) 11:53:11.24ID:J4RVztBC
教えてください。
サブルーチンに渡された配列引数2つが同一かどうか
(値が同じかどうかではなくて、値を格納するアドレスが同じかどうか)
を確認するすべはありますでしょうか…?

ポインタとか使えるのでしょうかね?よく分かっていません。
2015/07/28(火) 12:08:17.55ID:J4RVztBC
自己解決してしまいました…

program test
implicit none
real(8)::a,b
a=1
b=2
call sub(a,b)
call sub(a,a)
end program

subroutine sub(a,b)
real(8),target::a,b
real(8),pointer::p1,p2
write(*,*) '=====',a,b
p1=>a
p2=>b
if(p1.eq.p2)then
write(*,*) 'identical'
else
write(*,*) 'independent'
end if
end subroutine
2015/07/28(火) 12:26:18.89ID:J4RVztBC
いや、すみません間違ってました。値を比較してるだけみたいです。
どうしたらいいんだ。
(日記みたいになってしまってですまんです)
2015/07/29(水) 09:56:48.14ID:2BaiQKnz
最近出た『FORTRANハンドブック』
買ったほうがいいかな?
2015/07/29(水) 15:03:19.81ID:PIi6Yh3/
>>826
コンパイラは何?
2015/07/29(水) 23:16:07.78ID:USyoWCFT
ifortです。associated(pointer,target) で行けそうなんですが、
targetの変数にopitional属性がついていて… ><という状況です
2015/07/30(木) 00:48:36.88ID:5OMMXfec
gfortranならlocでアドレス取得できるの確認した
なんか独自拡張みたいだが、ifortにもあるよね
2015/08/02(日) 15:34:23.65ID:Gc5k9GMO
module内のcontainsのところに書いているfunctionをincというフォルダのsample.f90にまるごと持って行き、
include 'incl/sample.f90'
としたのですが、moduleに書いていた時はは参照できていた変数が
定義されていない参照 となりコンパイルできません。
functionまるごともっていくとかやったらいけないものなのでしょうか?
2015/08/02(日) 17:13:03.49ID:5pC+KESf
>>831
内部関数を別ファイルにするなら注意が必要
includeを書く位置によるけどエラーになるなら外部関数扱いになっている
内部関数はメインプログラムの変数も参照できる
外部関数の扱いになるとメインの変数、他の内部関数、サブルーチンが参照できなくなる
だから、使っている変数や関数、サブルーチンを確かめないとエラーになる

解決方法はいろいろあるけど変数だけなら引数で渡せば使える
containsの後にinclude文を書けば内部関数扱いになるからそのまま使える

ちなみに、includeは廃止予定とかじゃないけど非推奨らしい
http://www.nag-j.co.jp/fortran/tips/tips_AboutInclude.html
http://www.mri-jma.go.jp/Project/mrinpd/coderule.html
2015/08/02(日) 20:38:11.00ID:Gc5k9GMO
>>832
詳しく教えて頂いてありがとうございます。試してみようと思います。
includeってもう非推奨なんですね。代替はmoduleで分割とかできるのかな
include以外のやり方も考えてみます
2015/08/05(水) 16:55:43.17ID:OhKwnQSp
>>825
Fortranって規約では、引数に番地の重なる変数や配列を送っちゃ駄目じゃなかったけ?

まぁ大抵のコンパイラは無警告で通すけど。
昔だとWATFORなんかが文句を言ってきた。今だとNAGあたりがなんか言いそう。

>>830
loc 相当を規格内でやるには c_loc と transfer で代替するはず。
2015/08/16(日) 01:33:05.77ID:ZKNwH6b8
Fotranで作成された古いプログラムをVBAに移しているのですが
符号がついていないためIF文の解釈がよくわかりません。
どなたか教えて頂けないでしょうか。

IF(J-K) 2,3,2
3 B(J)=1./Y
C(J)=1.
GOTO 4
2 B(J)=-A(K,J)/Y
C(J)=A(J,K)
4 A(K,J)=0.
2015/08/16(日) 01:53:24.79ID:mdNdQhdt
>>835
IF (L) a,b,c

X:負 go to a
X:0 go to b
X:正 go to c
2015/08/16(日) 03:10:40.47ID:ZKNwH6b8
>>836

ご回答ありがとうございました。
助かりましたm(_ _)m
2015/08/16(日) 08:57:02.36ID:nCIMfI1D
>>835
>>836
いわゆる計算型go toはもう忘れられいるのですね。
2015/08/16(日) 09:08:04.74ID:ZKNwH6b8
>>838
私が素人というのもあるのですが、いくつかのFortranのHPみてもIF文の説明には
入っていませんでした。
2015/08/16(日) 12:29:13.36ID:nCIMfI1D
>>869
ただしくは、算術IF文というものです。あるサイトの解説です
古い書き方に算術IFというものがあります。 この書き方はFortranでは廃止予定機能ですが古いプログラムには見かけられる書き方です。
算術IF文は、与えた式が0より小さい場合に最初の文番号へ、 0の場合は2番目の文番号へ、 0よりも大きい場合には3番目の文番号にジャンプします。
if ( 式 ) 文番号1, 文番号2, 文番号3
例)
i = -1
if (i) 100, 200, 300 ! 100へジャンプします
2015/08/16(日) 21:04:42.30ID:mdNdQhdt
古文読解みたいなもんよ。
新たに使うことは無いが、昔のプログラム読む為の教養みたいなもん?

アセンブラから進化したと思えば、まぁこんな命令ありがち感はある。
2015/08/24(月) 05:54:40.65ID:lgtNqCAf
ある参考書にあるプログラム例を映したのですが、実行するとエラーが出ます。内容が外部ファイルへの出力関係なので早急に解決したいのでよろしくお願いします。
プログラム
integer :: n, i, j, fi = 10, fo = 11
open(fi, file = 'input.d')
open(fo, file = 'output.d')
read(fi, *) n
close(fi)

if(n < 3) stop 'stop, n < 3'
d = 10.0d0 / dble(n - 1)
do j = 1, n
y = -5.0d0 + dble(j - 1) *d
do i = 1, n
x = -5.0d0 + dble(i - 1) *d
z = sin(x) * cos(y)
write(fo, '(3e12.4)') x, y, z
enddo
write(fo, *) ' '
enddo
close(fo)
エラーメッセージ
Program received signal SIGSEGV: Segmentation fault - invalid memory reference.

Backtrace for this error:
#0 ffffffffffffffff
#1 ffffffffffffffff
#18まで同文
OS:Windows7(64bit)
コンパイラ:gfortran
よろしくお願いします
2015/08/24(月) 06:07:47.38ID:lgtNqCAf
申し訳ありません。確認したところ
コンパイラはtdm64-gcc-4.6.1です。
2015/08/24(月) 07:17:38.92ID:lgtNqCAf
再び申し訳ありません。
gfortranのverを落としたら普通にできました。何度もすみませんでした。
2015/10/14(水) 21:51:47.29ID:S/4UaJI2
intelコンパイラのDAALをFortranから
なにかしらの形で呼び出してうまくいった方いませんか?
846デフォルトの名無しさん
垢版 |
2015/11/08(日) 17:44:21.58ID:jBmnCoB4
fortranで簡単なguiウィンドウ作れたりしますか?
ウィンドウがあってこのボタンを押すと〜〜のサブルーチン実行のような・・・
2015/11/08(日) 18:57:35.01ID:8suWMXlm
>>846
visual fortranにRADがあったような気がする
けど、Fortranで計算部分をライブラリ化しておいて
別の言語で作ったGUIで呼び出す方が一般的だと思う
848デフォルトの名無しさん
垢版 |
2015/11/09(月) 22:25:56.92ID:oiX/fj8U
>>847
ありがとうございます
やっぱり流行りの言語も使ってみたいと思います
849デフォルトの名無しさん
垢版 |
2015/12/15(火) 21:50:10.22ID:CN0jNpr8
基本的な質問かもしれませんがfunctionとsubroutineで作るのってどう切り分けたらよいのですか?
2015/12/15(火) 23:58:59.22ID:8+9MOK5i
>>849
functionを使うのは、返値が一つと自明な(かつ明示したい)ときだけかな。
2015/12/16(水) 00:26:30.43ID:dxIuSVrg
>>850
ありがとうございます
計算速度は関係ありませんか?
2015/12/16(水) 00:28:34.56ID:dxIuSVrg
例えばファンクションのほうがその度に呼び出すために計算速度は遅くなるとかありませんかね・・?
2015/12/16(水) 02:24:06.06ID:cuafR5Si
差は感じたことないな
気になるなら簡単なテストプログラム作ってみたら?
2015/12/16(水) 06:34:20.84ID:qB4UYIzV
中身が分からないunformattedで出力されたファイルを読むにはどうすればいいですか?
2015/12/16(水) 22:57:19.85ID:a/dQTwEW
ACCESS='STREAM' でオープンして嫁  詳しくはマニュアル検索検索
2015/12/16(水) 23:02:21.81ID:a/dQTwEW
>>849
function は副作用(PURE の時)がないとき、それ以外なら SUBROUTINE が基本かな。
コンパイラの最適化の観点から、数学的な意味での関数になっているときに使うのがいい。
2015/12/25(金) 14:17:27.29ID:H3s+gts8
今二分法のプログラム書いているんだけど、うまく収束しなくて困ってるのでここで質問させてください

ある区間[a, b] の間に解があるとして、f(xsol) =0となる点を見つけようとしてます。

関数f(x) は数値計算によってしか求められない(xの多項式では記述できない)とします。

x -> xsol に近づいていると思うのですがどうしても0 に漸近しません。 収束条件は 10^{-1}程度の荒いものでも収束しません。

考えられる原因の1つとして情報桁落ちかな?と思いましたが回避する方法はあるでしょうか?

ある程度計算を進めると、区間[x1, x2]において、その中点 (x1+x2)/2の値が一定となってしまいます。
2015/12/25(金) 14:24:09.90ID:H3s+gts8
>>857
後出しで申し訳有りません。

変数は全て倍精度で設定しております。
2015/12/25(金) 16:39:31.63ID:em+Cn0F1
>>857

real(16)
と宣言して、8倍精度にしたらどうなりますか。
2015/12/25(金) 16:47:13.93ID:VJyAJ/uW
>>853
>>856
返信おくれてすいません。
勉強になりました。一つ出力でpureな時はファンクションを使うようにします。
2015/12/25(金) 19:21:54.92ID:H3s+gts8
>>859
今4倍精度に宣言して計算終わったところです!
一定になるところは変わりましたが、計算を進めるとやはり中点が一定になります。。。
2015/12/25(金) 19:22:26.63ID:H3s+gts8
>>861
すみません、16倍精度の間違えです
2015/12/26(土) 01:22:24.79ID:ybGnykyB
>>859,861
ちょーーー!!
8倍精度とか16倍精度と違うから! 
普通はバイト数だから8で倍精度、16で4倍精度。
まぁ数値はベンダー依存で規定されていないから、あんたらのコンパイラが
8倍精度や16倍精度なのかもしれないがさw

そもそも二分法の場合必ず半分になるんだから、まともなら x1=x2 にならないはずがない.
ならないとすればプログラムが間違っているか、関数値の正負が x1 と x2 の間で
複数回反転しているかのどっちかだろ。つまり与えた区間の初期値が間違っている。

まずグラフを書かせろよ。
適当に数値いれて手で方眼紙にプロットしろ。話はそれからだ。
864デフォルトの名無しさん
垢版 |
2015/12/27(日) 14:58:58.66ID:j4SegU7G
>>857
関数f(x)がもともと収束しない形である可能性はないのか?
2015/12/27(日) 19:35:54.52ID:yJZ4hzCz
>>863
すんません、完璧勘違いしてました!
やはり4倍精度で正しかったですm(_ _)m
勉強になりましたm(_ _)m

>そもそも二分法の場合必ず半分になるんだから、まともなら x1=x2 にならないはずがない.
>ならないとすればプログラムが間違っているか、関数値の正負が x1 と x2 の間で
>複数回反転しているかのどっちかだろ。つまり与えた区間の初期値が間違っている。

初期値問題ですか。。。。


>まずグラフを書かせろよ。
>適当に数値いれて手で方眼紙にプロットしろ。話はそれからだ。

グラフなんですが、f(x)が非線形なので数値計算のみでしかもとまらないです。
2015/12/27(日) 23:19:57.50ID:XJXVRFXp
>>865
沢山の点で計算してEXCEL等でプロットすればいいのでは。
867デフォルトの名無しさん
垢版 |
2015/12/28(月) 02:36:39.69ID:lnQX/VRo
>>865
まずは4次のルングクッタでグラフ描いてみてはどうだ?
868デフォルトの名無しさん
垢版 |
2016/01/09(土) 11:18:03.65ID:i1gHiPMA
implicit な〜ん(笑)
2016/01/18(月) 02:16:26.16ID:trNoq0XT
fortranだと変数がからかどうか判定できないんだっけ?
空だと 0.00が代入されんのかな
2016/01/18(月) 15:21:34.93ID:1WswQHMD
空ってなんだ? 初期化されていないということか?
Fortranでは初期化されていない変数の値は不定だぞ。ごみが入っている。
0.0は初期か忘れに気づきにくいから、むちゃくちゃな値が入っていたほうが親切。

allocatableがallloctaeされているかいないかならallocated関数かな。
871デフォルトの名無しさん
垢版 |
2016/01/19(火) 00:06:44.55ID:yHbL6fBI
>>870
e-307くらいが入る
2016/01/19(火) 01:44:03.17ID:3ZSQATy/
>>870
allocatable で配列宣言してないとそれ使えないよね?

例えば、

program main
implicit none
double precision:: a, stat

do
read(20,*,iostat=stat) a
if(stat<0)exit
enddo
rnd program main

fort.20 ファイルの中身が空(null)だとしたら変数aにはゴミが入るわけよね?
変数aに何の数値も代入されていないと自動的に確認するためにはどんなコーディングが必要だろう、この場合。
2016/01/19(火) 06:58:03.23ID:MMA3M4fE
Fortranのレベルでどうこうではなく、Undefined Behavior Sanitizerでも使えばいいんじゃないの
2016/01/19(火) 09:26:07.32ID:3ZSQATy/
>>873
それはオプションかな?
今回の問題とはちょいと違うのだ
2016/01/20(水) 00:17:10.04ID:0BkO9wkB
いまさらfortranで機械学習とかディープラーニングライブラリ作って公開する猛者いませんか?
いたら面白いのになあ
876デフォルトの名無しさん
垢版 |
2016/01/22(金) 21:17:23.35ID:SxQo3Wt7
iMacだがLAPACKのコンパイルが上手くいかない。MacBookAirの時は上手く言ったのだが誰か教えてくれないか?
2016/01/22(金) 22:42:37.27ID:rL4grHGE
>>872
Fortran2003 ならスカラーの allocatable もある。

I/O では無理だが、例えば Function からの代入ならば、希望のことはできる。
スカラーへの allocatable 変数が返り値の Function からの自動再割り付けで、
右辺の関数の返り値が空なら、左辺の allocatable スカラーが allocate されないし、
値をもっていれば NULL だろうとallocate されるので allocataed 関数を使えば判別できると思う。
878デフォルトの名無しさん
垢版 |
2016/02/05(金) 09:02:45.47ID:wvmc5Sx8
Fortranって何を使ってデバッグするんでしょうか
2016/02/08(月) 00:08:26.47ID:wknTPR3t
>>878
dddとかやん?
880デフォルトの名無しさん
垢版 |
2016/02/10(水) 08:13:25.94ID:ZRcL4yE9
>>879
便利そうですね
ありがとうございます
2016/02/12(金) 04:12:40.41ID:vptI0fCP
数値計算するときの刻み幅の決め方が難しすぎるなぁ
等幅だとものすごい配列使うからメモリがオーバーフローするしなんかいい方法ないすかね?
てか、刻み幅に関する詳しい本とかないのかなぁ
2016/02/12(金) 08:22:40.80ID:1ZkcdkFj
>>881
森口繁一先生の
『計算数学夜話』
に、「刻み幅の自動選択」
という話が掲載されていたはずです。
変化がなだらかな区間は刻み幅を広く、
変化が急な区間は刻み幅を狭くするのを
自動化するという話です。
2016/02/14(日) 06:02:56.78ID:5/5WMEda
>>882
ありがとうー
うー、でも手に入らないぽいなー((((;゚Д゚)))))))
2016/02/15(月) 02:04:22.84ID:sHvN+vmN
桁の大きなものと桁の小さなものが混じった数値計算をするとき、規格化するのは常識だと思うんだが。
ある変数の取りうる範囲が極端に振れる場合(例えば、1d-20 < x < 1d8) だとどうすりゃいいんやろか。
2016/02/17(水) 11:45:41.36ID:8sdmbRj5
対数を取れw
2016/02/17(水) 12:17:59.53ID:IDaBzq+u
>>885
それ教授や先輩にも言われたんですかまったく意味わかりませんでした。
刻み幅で対数????といった感じです。

logx(i+1)-logx(i)=刻み幅 ということですか?
2016/02/17(水) 12:40:39.87ID:5aqj+faD
logかました状態だと値の範囲が狭くなるというだけじゃ?
2016/02/17(水) 18:55:07.86ID:NfIkV94M
そもそも問題がわからないから答えようがないな。
たとえば被積分関数が 1d-20 から 1d8 まで振れる場合は小さい値はどうでもいいし。
2016/04/25(月) 20:15:29.39ID:ABiBIEuQ
一次元ポアソン方程式

d^2φ/dx^2=cos(x) (0≦x<2π)

を解くプログラミングがわかりません。差分法を使えばいいというのはなんとなくわかったのですが、差分法がいまいちよくわかっていないです。

どなたかご教授ねがえないでしょうか。
2016/04/25(月) 21:42:21.21ID:0jtmrtsy
ネットでも本でもいいから微分方程式の数値解法について調べること。
いろんな計算方法があるし、特定の言語にこだわる必要もない。

そういえば数値計算のスレって今ないよね。
891デフォルトの名無しさん
垢版 |
2016/04/25(月) 21:53:17.04ID:2LxfGMmK
>>889
そもそもその式は解析的に解ける。
892デフォルトの名無しさん
垢版 |
2016/04/25(月) 21:53:33.26ID:2LxfGMmK
>>890
欲しいなそんなスレ
893デフォルトの名無しさん
垢版 |
2016/05/01(日) 14:42:40.23ID:tKi6j9CT
匿名通信(Tor、i2p等)ができるファイル共有ソフトBitComet(ビットコメット)みたいな、
BitTorrentがオープンソースで開発されています

言語は何でも大丈夫だそうなので、P2P書きたい!って人居ませんか?

Covenantの作者(Lyrise)がそういう人と話したいそうなので、よろしければツイートお願いします
https://twitter.com/Lyrise_al

ちなみにオイラはCovenantの完成が待ち遠しいプログラミングできないアスペルガーw


The Covenant Project
概要

Covenantは、純粋P2Pのファイル共有ソフトです

目的

インターネットにおける権力による抑圧を排除することが最終的な目標です。 そのためにCovenantでは、中央に依存しない、高効率で検索能力の高いファイル共有の機能をユーザーに提供します

特徴

Covenant = Bittorrent + Abstract Network + DHT + (Search = WoT + PoW)

接続は抽象化されているので、I2P, Tor, TCP, Proxy, その他を利用可能です
DHTにはKademlia + コネクションプールを使用します
UPnPによってポートを解放することができますが、Port0でも利用可能です(接続数は少なくなります)
検索リクエスト、アップロード、ダウンロードなどのすべての通信はDHT的に分散され、特定のサーバーに依存しません
894デフォルトの名無しさん
垢版 |
2016/05/01(日) 18:07:45.37ID:XA7YY+e1
言語はなんでも大丈夫ってレベルじゃねーぞ
2016/05/17(火) 20:55:20.04ID:MgCDmrcL
Fortran2015の調子はどうだい?
896デフォルトの名無しさん
垢版 |
2016/05/21(土) 18:12:16.63ID:h3OgqWhP
ChromebookでFortranって動かせる?
897デフォルトの名無しさん
垢版 |
2016/07/18(月) 20:31:12.72ID:apSB7g7B
全く分かりません
答え教えて下さい
http://i.imgur.com/BB9ERMu.jpg
http://i.imgur.com/SgRmlY6.jpg
2016/07/19(火) 14:21:12.91ID:qfWdnT3p
>>897
逝ってよし
899デフォルトの名無しさん
垢版 |
2016/07/19(火) 20:22:44.55ID:555Vvc50
>>897
>>898
この流れいいなw
900デフォルトの名無しさん
垢版 |
2016/07/19(火) 22:17:37.41ID:WRFubhA/
>>898
オマエモナー
901デフォルトの名無しさん
垢版 |
2016/07/19(火) 22:18:11.36ID:WRFubhA/
>>897
自己解決しますた
902デフォルトの名無しさん
垢版 |
2016/07/28(木) 19:47:05.10ID:nObYn5cT
0度〜90度まで30度間隔で正弦と余弦を出力する。但し書式は整数5桁、関数値は10桁で小数点以下6桁とする。

下記でコンパイラしても上手くいかないのですがどこをどのようにすれば宜しいでしょうか?
http://i.imgur.com/xwAoCXH.jpg
2016/07/28(木) 22:14:51.73ID:E8ct0ihN
古風な書き方だな
大学の講義か何かで習ってるの?

k が正しく表示されない点については、フォーマット文の f2.0 を i5 に書き換えたらどう?

どの段階でどのように失敗するのか書いてくれるとチェックしやすい
あと、プログラムをコピペしてくれるとこちらが入力する手間が省ける
904デフォルトの名無しさん
垢版 |
2016/07/29(金) 07:39:07.85ID:1zITvd9X
>903
確かにFortran IVみたいな書き方ですね。
フォーマット文を

100 format ( i5,2f10.6)

に替えたら

  k    sin     cos
0 0.000000 1.000000
30 0.500000 0.996812
60 0.866025 0.987268
90 1.000000 0.971430

と結果がでます。
それにしても,
pi = acos(-1.0)

DOループの前に出すのがいいのじゃないですか。
905デフォルトの名無しさん
垢版 |
2016/07/30(土) 00:26:12.77ID:CH8BIOrU
>>903
>>904
ありがとうございました!
i5に変えたら成功しました!
906デフォルトの名無しさん
垢版 |
2016/07/30(土) 00:26:31.27ID:CH8BIOrU
>>903
大学ですね
907デフォルトの名無しさん
垢版 |
2016/07/30(土) 01:16:36.18ID:CH8BIOrU
重力のみが作用する振り子の運動を解析するプログラムを完成させよ。
real L
data g, L / 9.8, 1.0 /
write (*,*) ’ Δt (sec) =’
read (*,*) dt
*initial
2 write (*,*) ’ θ0 (radian) =’
read (*,*) s0
s =❔
v =❔
t =❔
vL=v
* repeat
1 a= ❔
v =❔
w=❔
s =❔
t =❔
write (*,’(3f8.4)’)
if (vL.gt.0.0.and.v.lt.0.0) go to 2
vL=v
go to 1
end
知り合いとやってるのですが出来る気配がありません。
❔部分に何が入るか教えて下さい。
Δ、θは置き換えますよね?
908デフォルトの名無しさん
垢版 |
2016/07/30(土) 01:17:58.34ID:CH8BIOrU
http://i.imgur.com/JFN9XSU.jpg
2016/07/30(土) 18:19:30.33ID:MnenPn8v
>>907
回線切って氏ね
910デフォルトの名無しさん
垢版 |
2016/07/31(日) 23:35:51.92ID:TkjN2Ici
>>907
単振り子で色々調べてますが全く分かりません。
誰か出来る方いましたらお願いします。
2016/08/01(月) 00:02:16.74ID:018Zh5sQ
たぶん運動方程式をたててオイラー法で解くだけでしょ
どの段階で躓いているか分からないと答えようがない
2016/08/01(月) 01:25:45.70ID:qXp6EaAl
宿題全部やってちょうだい感が出てるから、やってくれる人は少なそう
913デフォルトの名無しさん
垢版 |
2016/08/01(月) 12:05:07.12ID:tW3kuaWv
エセ左翼の目的は、わざと突っ込みどころが多い主張をすることで自分たちへ注意を向けさせ、
カルトへ向かう非難の矛先を逸らすこと。
国益に反することを言ったり、主張が食い違うもの同士の対立を煽ろうとするので放置し難いが、
主義思想についての洗脳を受けているわけではなく、フリをしているだけなので、
言い負かされてもダメージを負った様子もなく、論点をすり替えられるかスルーされる。
まともに相手をしてはならない。

サヨに対する危機意識が強すぎると、普段は常識的に振舞っている
(又は、サヨから不当に叩かれている)政治家などがズレたことをやろうとした時でも、
許容したり擁護してしまいがちになるので注意が必要。
914デフォルトの名無しさん
垢版 |
2016/08/01(月) 22:50:33.91ID:qgzcRfyo
時間、速度、角度を出力するつもりでやったのですがコンパイルした時の値が違います
おそらく運動方程式が間違っているのだと思いますが(t,s辺りが違い気がする)どこがどう違うか教えて下さい
real L
data g, L / 9.8, 1.0 /
write (*,*) ’ Δt (sec) =’
read (*,*) dt
*initial
2 write (*,*) ’ θ0 (radian) =’
read (*,*) s0
s =s0
v =0
t =0
vL=v
* repeat
1 a= −g*sin(s)
v =a*t
w=v/L
s =s0+v*t/L
t =t+dt
write(*,*)’t,v,s’
write (*,’(3f8.4)’)t,v,s
if (vL.gt.0.0.and.v.lt.0.0) go to 2
vL=v
go to 1
end
915デフォルトの名無しさん
垢版 |
2016/08/02(火) 00:16:36.76ID:lf/Rfa1x
>914
プログラムの問題ではなくて,数式の問題なんだから,物理板で質問した
ほうがいいのじゃないの。
2016/08/02(火) 01:31:13.87ID:pyAOnFQt
>>914
それFortran以前に運動方程式が全然違う。
v=Lω
dθ/dt = ω
として

dθ^2/dt^2 = -(g/L)sinθ
という微分方程式をルンゲクッタ法で解く。

解析力学、振り子とかで検索したら
ttp://homepage1.nifty.com/gfk/furiko.htm
出てくるだろ、ちゃんと調べろ。
それ以前に理学部とかだったら勉強不足だぞ。
2016/08/02(火) 16:12:24.48ID:+RnVB/b2
どなたか「=>」の意味を教えてください
大なりイコールのような条件式ではなく、記号が逆になっている方です。
具体的には、
DO I =1,NCNEST_NUM
D=>NCNEST_DATA(I)
G=>NCNEST_GRIDS(I)
CALL ASSIGN2BLOCK(D,G)
END DO
のようになっています。データの書き込み系だと睨んでいます。
よろしくお願いします。
2016/08/02(火) 16:20:52.36ID:e4r/z1Wx
>>917
ポインタの指示先を指定している
http://www.nag-j.co.jp/fortran/FI_Pointer.html
2016/08/02(火) 16:23:27.42ID:W78wvcm1
2016/08/02(火) 16:50:17.87ID:+RnVB/b2
>918
すばやい反応ありがとうございます。
「FORTRAN =>」で検索しても出てこなかったので、非常にありがたいです。
2016/08/05(金) 23:42:07.06ID:y4inqjRe
coarrayをwindows7,gfortranで
gfortran coarray.f90 -fcoarray=lib -lcaf_mpi
と打つと、
cannot find -lcaf-mpi
とでてコンパイルできん

https://gcc.gnu.org/wiki/CoarrayLib
を参考にMPICH2の拡張子msiのやつ(ちょいバージョン古い)を管理者権限でインストールしてPATHも通している
mpiexecも出来てるから、インストールに失敗してはいない
助けてくださいお願いします
レス数が900を超えています。1000を超えると表示できなくなるよ。
5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。

ニューススポーツなんでも実況