0

化学反応式のバランスをとるJavaアプリケーションを作成しています。各用語をループして、2つの配列リストを作成します。1つの配列リストに、すべての要素のセットがあります。たとえば、(最初の項で)方程式がC6H12O6 + O2 = CO2 + H2Oの場合、配列リストには{C、H、O}が含まれます。別の例では、対応する番号があるので、{6,12,6}が含まれます。これらすべてを組み合わせて、マトリックス(3 x 4)を形成する必要があります。これは次のようになります。

(0,0)= 6(1,0)= 12(2,0)= 6(0,1)= 0(1,1)= 0(2,1)= 2(0,2)= 1( 1,2)= 0(2,2)= 2(0,3)= 0(1,3)= 2(2,3)= 1

上記の行列は、行0がC、行1がH、行2がOになるように設計されています。列は用語(0、1、2、および3)です。

配列リストを行列に変換するための提案はありますか?

4

3 に答える 3

3

楽しみやプロジェクトのためにこれを行っている場合は、問題ありません。化学者が使用する実際の拡張可能なアプリケーションでこれを行う場合、100 を超える元素、多くの試薬と製品、および分数に対応する必要があります。オープン ソースの Java ケミストリー ライブラリは数多くあります。喜んで紹介させていただきます。車輪を再発明しないでください。http://www.blueobelisk.orgを参照

これを真剣に行うには、Ugi によって開発された Bond/Electron マトリックスが必要です。あなたの最高の場所は、Ugi 自身の論文です: www.iupac.org/publications/pac/1978/pdf/5011x1303.pdf

参照 - たとえば、p 1307。

編集: これは、現在の問題に対してやり過ぎです!

単純なマトリックス アプローチには、2 つの結合マトリックス R (反応物) と P (生成物) が含まれ、既知の要素の nelem (たとえば 100) 列と、反応物と生成物の数に応じた不定数の行 (nR、nP) が含まれます。したがって、行列は通常、同じ次元ではありません。反応物[nR][nelem]と生成物[nP][nelem]。乗数 nreact[nR] と nprod[nP] の 2 つの列ベクトルもあります。一般に、化学式と乗数は一般に整数ですが、必ずしもそうである必要はありません (化合物が元素の単純な整数比を持たない場合があります)。

これに取り組むために、独自の CMLFormula と CMLReaction Java クラス ( http://www.xml-cml.orgを参照) を使用します。あなたはそこから始めることを歓迎します-それは人生を楽にします

于 2010-12-29T22:53:22.087 に答える
0

Java で優れたマトリックス操作が必要な場合は、JAMA (Java Matrix)を参照してください。

于 2010-12-29T23:44:17.147 に答える
0

行列を配列で表すことができます。各行を列データの配列と考えてください。

[[6 12 6], 
 [0 0  2], 
 [1 0  2], 
 [0 2  1]]

このように、行列ポイントは、特定のポイントでの別の配列内の配列位置への参照です。言い換えると:

matrix[0][2] == 2

(最初の配列 (0)、2 番目の位置 (1) の場合)

ただし、化学におけるあなたの論理に賛成も反対もできません。:)

于 2010-12-29T23:03:51.390 に答える