2017-05-09 4 views
1

入力のバランスを取るの化学式はそのメープル、

aKMnO4 + bHCl = cKCl + dMnCl2 + eH2O + fCl2 
// a, b, c, d, e, f are numbers. 

私はいくつかの方程式を解くことによって、この問題を解決しようとしたような化学式であります私のコードの入力として。

化学式の入力だけでa、b、c、d、e、fを見つける方法はありますか?

+0

コードブロックは* Maple *コードで構成されていますか?コメントデリミタとして '//'を使うようですが、Mapleのコメントではデリミタはハッシュ( '#')です。また、メイプル表記法( "code")と2D表記法の両方で理解できるように(KMnO4は3つ(4つ)のオブジェクトであることは明らかではない)、乗算演算子)。 – Therkel

+0

@Therkelそれは実際にメープルコードではない、私はちょうど私のアイデアを示しています。これらの方程式は、メープルの解法関数によって解くことができます。 –

答えて

1

あなたはこれを行うことができますが、H2OがH * 2 + Oとなるように化合物の化学方程式を+と*で書き直す必要があります。あなたの方程式

a KMnO4 + b HCl = c KCl + d MnCl2 + e H2O + f Cl2 

ここでは次のようになります。

eq:=a*(K+Mn+O*4) + b*(H+Cl) = c*(K+Cl) + d*(Mn+Cl*2) + e*(H*2+O) + f*(Cl*2); 

彼らは、あなたが、係数を等しくすることにより、AFのための方程式を得ることができます。

elems := [ K, Mn, O, H, Cl ]; 
eqr := collect(expand(rhs(eq)), elems); 
eql := collect(expand(lhs(eq)), elems); 
eqs := zip(`=`, map2(coeff, eql, elems), map2(coeff, eqr, elems)); 

認識することができる何かを構築するための興味深いプロジェクトになりますそれらをより自動的に方程式に解析します。

+1

ありがとう、私はあなたの考えを得る。本当に役に立ちます。私は、 '{a = d、b = 8 * d、c = d}のように' {a、b、c、d、e、f} 'のどれかに依存していることを知りました。 d = d、e = 4 * d、f =(5/2)* d} 'となるので、eqs:= [op(eqs)、a = 1] 'を実行してすべての数値の結果を取得します。それはうまくいく。ちなみに、私はあなたが言ったような何らかの形でプロジェクトに取り組んでいます。 –

関連する問題