2010-12-29 2 views
0

나는 화학 방정식의 균형을 유지하는 Java 응용 프로그램을 만들고 있습니다. 각 용어를 반복하여 두 명의 arraylists를 만듭니다. 한 arraylist 있음, 나는 모든 요소 집합을했습니다. 예를 들어 (첫 번째 용어에서) 방정식이 C6H12O6 + O2 = CO2 + H2O이면 arraylist는 {C, H, O}를 갖습니다. 다른 숫자에는 해당 숫자가 있으므로 {6,12,6}을 포함합니다. (케미칼 밸런서에 대한 도움? (arraylists에서 행렬로 변환) java

(0,0) = 6 (1,0) 12 (2,0) = 6을 = I는 행렬 것 (4 3)을 형성하고 이들 모두를 결합해야 0,1) = 0 (1,1) = 0 (2,1) = 2 (0,2) = 1 (1,2) = 0 (2,2) = 2 (0, 3) = 0 (1) = 2 (1)

위 행렬은 행 0이 C, 행 1이 H, 행 2가 O가되도록 설계되었습니다. 용어 (0, 1, 2 및 3)

arraylists를 매트릭스로 변환하기위한 제안 사항은 무엇입니까?

+0

Umm에서 좋은 행렬 작업을 원할 경우. 당신이하는 것처럼 정보를 잃어 버리는 것이 틀림 없습니다. 그리고 그것은 매트릭스가 아닙니다. (2,3)과 같은 것은 어떨까요? 그게 무엇을 나타 냅니까? – Falmarri

답변

3

즐거움이나 프로젝트를 위해이 작업을하고 있다면 괜찮습니다. 화학자가 사용할 수있는 실제 확장 가능 응용 프로그램을 위해이 작업을 수행하는 경우 100 개 이상의 요소, 많은 시약 및 제품 및 분수를 제공해야합니다. 오픈 소스 자바 화학 라이브러리가 많이 있으며 당신을 소개 드리겠습니다. 바퀴를 다시 발명하지 마십시오. http://www.blueobelisk.org

이 작업을 수행하려면 Ugi가 개발 한 본드/일렉트릭 매트릭스가 필요합니다. 가장 좋은 장소는 Ugi 자신의 논문입니다. www.iupac.org/publications/pac/1978/pdf/5011x1303.pdf

예. p 1307.

편집 : 이것은 현재 문제의 잔인 함입니다!

간단한 행렬 접근법은 알려진 원소에 대해 nelem (100 개) 열과 많은 반응물 및 생성물로서 부정형 행 (nR, nP)을 갖는 2 개의 결합 행렬 R (반응물) 및 P (생성물)을 포함합니다. 따라서 행렬은 일반적으로 동일한 차원이 아닙니다. 반응물 [nR] [nelem] 및 생성물 [nP] [nelem]. 또한 nreact [nR]와 nprod [nP]에 대한 두 개의 열 벡터가 있습니다. 일반적으로 화학 공식 및 승수는 일반적으로 필수적이지만 필수적이지는 않습니다 (화합물은 요소의 단순한 정수 비율을 가질 수 없음).

이 문제를 해결하기 위해 내 자신의 CMLFormula 및 CMLReaction Java 클래스 (http://www.xml-cml.org 참조)를 사용합니다. 당신이 시작에 오신 것을 환영합니다 - 당신이 배열에 의해 행렬을 나타낼 수

0

쉽게 인생을 만들 것입니다 : 열 데이터의 배열로 각 행의 생각 :

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

이 방법, 당신의 매트릭스 포인트 인 주어진 점에서 다른 배열 내부의 배열 위치에 대한 참조. 즉 :

matrix[0][2] == 2 

(첫 번째 배열 (0), 두 번째 위치 (1))

그래도 난, 또는 화학의 논리에 대해 말할 수 없다.:)