• ベストアンサー

Fortranプログラミングでうまくいきません

適量の弱酸とその塩を含んでいる緩衝液の正確な水素イオン濃度を求めるプログラミングを作ったのですがうまくいきません…泣 HC弱酸の濃度 BA塩の濃度 HA強酸の濃度です   print*,'弱酸の濃度を入力してください’   read*,HC   KW=10E-14   KA=1.85*10E-5   BA=0.6   HA=0.7   H1=10E-7 10 A1=H1-KW/H1+BA-HC   H2=(HA+BA=A1)*KA/A1   S=1-H2/H1   if(ABS(S).LE.0.05)then   print*,'水素イオン濃度は',H2   else   H1=H2   go to 10   endif   end コンパイルはできるのですが、数値を入力しても作動しません。どこが間違っているかご指導お願いします。    

質問者が選んだベストアンサー

  • ベストアンサー
回答No.2

print*,'弱酸の濃度を入力してください’の右側のシングルクォーテーションが全角だとか、H2=(HA+BA=A1)*KA/A1の真中の=は意味がよく分からないけどたぶんどちらも質問書くときにタイプミスしたんですよね。 ひょっとして変数の型宣言していますか?ちゃんと型宣言しないと、Kで始まる変数は整数型になりますね。となるといつまでも収束しなくて応答なしなんじゃないでしょうか。 計算式があっているかどうかまでは。。。分かりません

007_007
質問者

お礼

型宣言していませんでした(泣)初歩的なミスです。すみません。ご指摘ありがとうございます。

その他の回答 (4)

  • manda
  • ベストアンサー率23% (20/85)
回答No.5

私、Fortran は出来ませんが、一般論として。  「思ったように動かない」 という場合は  「当然こうなる筈」 と思って作った箇所が、じつはその通りでないという 事ではないでしょうか。 今の場合、「作動しません」ということは、なんにも プリントしてくれないという事ですね? ということは、if がぜんぜん成立しなくて、毎回 else の方へ行っている、という事を疑ってみるといいと思います。 え、当たり前すぎますか? でもどなたも指摘しないし、質問者のかたはそういうコツ に不慣れみたいだから、いいですよね。

007_007
質問者

お礼

そういうコツは知りませんでした。プログラミングを勉強するのは、初めてだったので非常に参考になりました。ご回答ありがとうございます。

  • jeee
  • ベストアンサー率52% (119/227)
回答No.4

Fortranコンパイライを確認してください。 >  KW=10E-14 >  KA=1.85*10E-5 >  BA=0.6 >  HA=0.7 >  H1=10E-7 型宣言しない場合、 変数がI~Nで始まる場合のとき(単精度)整数型 変数が上記以外のとき(単精度)実数型 >  H2=(HA+BA=A1)*KA/A1 今までの同じ、言語使用がおかしくないのかな。 コンパイルしてエラーがでないのなら、OK?

007_007
質問者

お礼

型宣言していませんでした。初歩的なミスです。すみません。

  • imogasi
  • ベストアンサー率27% (4737/17068)
回答No.3

Basicに移植できそうなので、やって見た。 済みませんFortranがないので。 Sub test01() HC = InputBox("弱酸の濃度を入力してください") KW = 0.0000000000001 KA = 1.85 * 0.0001 BA = 0.6 HA = 0.7 H1 = 0.000001 p10: A1 = H1 - KW / H1 + BA - HC H2 = (HA + BA) * KA / A1 S = 1 - H2 / H1 If (Abs(S) < 0.05) Then MsgBox "水素イオン濃度は" & H2 Else H1 = H2 GoTo p10 End If End End Sub HA+BA=A1の部分を上記のようにしたら、動きました。 ロジックミスでなく、他の原因でしょう。そちらを疑ってください。 イコールの左辺が2項、右辺が1項の言語なんて、見たことないです。少なくとも一番旧い歴史のFortranにはないでしょう。 =は+か-のミスタイプでしょうか。

007_007
質問者

お礼

参考にさせていただきます。=はタイプミスです。すみません。

  • BLUEPIXY
  • ベストアンサー率50% (3003/5914)
回答No.1

(HA+BA=A1) の部分は期待したように動きますか? ほとんどの場合で=が成立しないように思うのですが。 勘違いしてたらすみません。

007_007
質問者

お礼

すいません。質問文のタイプミスです。正確にはHA+BA-A1です。

関連するQ&A

  • 解離度について

    弱酸および弱塩基の解離度の水素イオン濃度依存性を示す式についてなんですが、 弱酸の場合、HA + H2O ⇔ H3O+ + A- について考えれば、 解離度α、酸解離定数Kaとした場合、 α=Ka/([H+]+Ka)になると思うのですが、弱塩基についてはどのように解けばよろしいのでしょうか? ご教授願いますm(__)m

  • 水素イオン濃度の求め方

    水溶液の水素イオン濃度について質問です。 ある一塩基酸HAの総濃度をCHA、融解離定数をKa、水のイオン積をKwとしたときのその酸の水素イオン濃度[H+]はどのようにして表わされるのでしょうか?[H+]の求め方がいろいろあってわかりにくいので説明をお願いします。

  • 水のイオン積について

    [HA] + [A^-] = C_HA…(1) [A^-] + [OH^-] = [H^+]…(2) [H^+] [A^-]/[HA] = Ka…(3) [H^+] [OH^-] = Kw…(4) (2)式を変形して、 [A^-] = [H^+] - [OH^-]…(2') これを(1)式に代入して、 [HA] + [H^+] - [OH^-] = C_HA 移項して、 [HA] = C_HA - ( [H^+] - [OH^-] )…(1') ここで、C_HA>>[H^+] - [OH^-] と近似すれば、(1')は、 [HA] = C_HA…(1'') 一方、(2')と(3)を組み合わせれば、 { [H^+]^2 - [H^+] [OH^-] }/[HA] = Ka (1'')と(4)を考慮して、 { [H^+]^2 - Kw }/C_HA = Ka [H^+]^2 - Kw = (Ka) (C_HA) [H^+]^2 = Kw + (Ka) (C_HA) という水素イオンの算出の式を立てたのですが、Kw(水のイオン積)が無視できて、[H^+]={(Ka) (C_HA)}^1/2 という式に変形できるのはどういった場合なのでしょうか。

  • 分析化学の問題です

    分析化学の問題で分からないものが2つあります。 (1)ある一価の濃度cの弱酸の水溶液の水素イオン濃度をxとしたときに、x, Ka, Kw C の関係式を示せ、ただしKaは弱酸の乖離定数、Kwは水のイオン積とする。 (2)0.25Mの塩化アンモニウム溶液のpHを、アンモニアの乖離定数をKbとしてあらわせ、水のイオン積をKwとする。 (1)については、どうやって関係式を立ててもKwまたはKaがあふれてしまってうまい式に ならないです。(2)はpOHを求めてKwからpHを求めるのだと考えているのですが、うまくいかないです。

  • 2つの弱酸の電離

    電離定数kaの弱酸HAと電離定数kbの弱酸HBの混合水溶液がありモル濃度をそれぞれCa,Cbとするとき、水素イオンの濃度を求めよ、という問題なのですが、HA→(←)H(+)+A(-)(1)、HB→(←)H(+)+B(-)(2) の反応で質量作用の法則を適用するためにモル濃度に関して平衡前後の表を作ろうと思ったのですが、平衡前の(1)式の[H(+)]が初めCbαbにして、(2)式においての平衡前の[H(+)]をCaαaとしてもいいのでしょうか????そうすると(1)が(2)より先に起こっているのに(2)も(1)より先におこっているようで矛盾しているかなぁ~と思うのですが・・・ 長文および乱文失礼しました。

  • 中和と加水分解

    高校化学についてで考え方が納得いきません。 中和の定義ってなんなのでしょうか? 弱酸は中和点でも塩が加水分解してph=7とはならないんですよね。 ある弱酸HAがあったとして電離度α(α<<1)、HAの水溶液の濃度がc(mol/L)とします。 この水溶液を濃度がn(mol/L)の水酸化ナトリウムを加えたときのHイオンの濃度を求めろって問題で、解答では HA+OHイオン→Aイオン+H2Oの式の平衡定数を用いて出しているんですがHAのモル濃度を {(HAの物質量)-(加わったOHイオンの物質量)}×1000/全体積 で出しているのが納得いきません。 これって生成された塩の加水分解を考えてないように思えるんです。 この解答ってあってますか?かなり悩んでます。。。 わかるかたぜひ教えてください。

  • 多段階で電離する酸の中和滴定

    H2CO3とNaOHの中和滴定のグラフを近似式で描いた場合、適切なグラフがかけない理由を知りたいです。 実際に近似式で計算すると、第一当量点、第二当量点とそれ以降(NaOH過多)の数値がグラフから外れた数字となりました。 それで、近似式でない式と比べようと思い、インターネットでしらべたのですが、最後まで理解できませんでした。 物質収支を考慮し、炭酸の全濃度を CAとすると CA=[H2CO3]+[HCO3-]+[CO3 2-] また電気的中性の原理より [H+]+[Na+]=[OH-]+[HCO3-]+2[CO3 2-] これらの式および水の自己解離平衡から水素イオン濃度[H+]に関する四次方程式が得られる。 [H + ]4 + [H + ]3(Ka1 + [Na + ]) + [H + ]2(Ka1Ka2-Ka1CA + Ka1[Na + ] - Kw) -[H + ](2Ka1Ka2CA -Ka1Ka2[Na + ] + Ka1Kw) - Ka1Ka2Kw = 0 酸性領域では第二段階の解離Ka2 および Kw の影響は無視し得るため [H+]^2+ [H+](Ka1+[Na+])ーKa1Ca+Ka1[Na+]=0 ここで、Ka2の影響が無視できるのは、わかるのですが、Kwを無視する理由は何か教えてください。 また、第一当量点付近では、[H+]^4 と定数項の寄与が小さいとあるのですが、定数項(Ka1Ka2Kw)を無視する理由がわかりません。 どうか教えてください。 参考にしたHP http://ja.wikipedia.org/wiki/%E4%B8%AD%E5%92%8C%E6%BB%B4%E5%AE%9A%E6%9B%B2%E7%B7%9A

  • 化学の質問です。

    有機化学の質問です。 1.弱酸水溶液(Cmol/L)の水素イオン濃度は[H^3O+(オキソニウムイオン)]=(C・Ka)^1/2で表わせることを示せ。 この式を使って、Ka=1.00×10^-5mol/Lの弱酸の0.00100mol/L溶液の水素イオン濃度を求めよ。 2.次に示す酸や塩基をその強い順に並べよ。  a) CH3CO2H  C6H5OH  CH3CH2OH b) Cl2CHCO2H  CH3CH(Cl)CO2H  CH3CH2CO2H 3.以下の反応での2つの出発物は、それぞれルイス酸であるかルイス塩基であるか答えよ。  (a)BF3 + O(C2H5)2 → F3B^- ─ O^+(C2H6)2 (b)Cu^2+ + 4NH3 →Cu[NH3]4^2+ 4.分子式C5H10のアルケンのすべての構造異性体と幾何異性体の構造式とIUPAC名を書け。 よろしくお願いします 追加 塩基の強弱の決め方を教えていただけたら、幸いです

  • 水素イオン濃度

    「強酸と弱酸が共存する水溶液の水素イオン濃度は、強酸だけが存在する場合の水素イオン濃度にほぼ等しい」ことの理由を教えてください。 弱酸はほとんど電離しないからかなと思ったんですけど、中和の公式には弱酸でも当てはめますよね。 教えてください。お願いします。

  • 塩化アンモニウム水溶液の水素濃度

    濃度0.10mol/L  アンモニアのKb=2×10の-5乗  NH4Clの水素濃度を求めよ。  酢酸ナトリウムの問題は [H+ ]=√Ka・Kw/cで解いたのですが アンモニアの場合はこのKaをKbにすれば いいのでしょうか???

専門家に質問してみよう