Balance chemical equations without trial and error?
Yes; it's possible to write a system of equations that can be solved to find the correct coefficients. Here's an example for the given formula.
We're trying to find coefficients A, B, and C such that
$A (\mathrm{Al}) + B (\mathrm{O_2}) \rightarrow C (\mathrm{Al_2 O_3})$
In order to do this, we can write an equation for each element based on how many atoms are on each side of the equation.
for Al: $A = 2C$
for O: $2B = 3C$
This is an uninteresting example, but these will always be linear equations in terms of the coefficients. Note that we have fewer equations than variables. This means that there's more than one way to correctly balance the equation (and there is, because any set of coefficients can be scaled by any factor). We just need to find one integral solution to these equations.
To solve, we can arbitrarily set one of the variables to 1 and we'll get a solution with (probably fractional) coefficients. If we add $A=1$, the solution is $(A,B,C) = (1,\frac{3}{4},\frac{1}{2})$. To get the smallest solution with integer coefficients, just multiply by the least common multiple of the denominators ($4$ in this case), giving us $(4,3,2)$.
If the set of equations has no solution where the coefficients are nonzero, then you know that the equation cannot be balanced.
One method I am particularly fond of is balancing the half reactions of the redox (reduction-oxidation) reaction that is occurring. In the following reaction:
$$\mathrm{Al} + \mathrm{O_2} \rightarrow \mathrm{Al_2 O_3}$$
it should be clear that Al is being oxidized and O is being reduced. Both Al and $\mathrm{O_2}$ are in their elemental states, and therefore both have an oxidation number of 0. Simply by looking at the periodic table, you can devise that the oxidation numbers of Al and O in $\mathrm{Al_2 O_3}$ are +3 and -2 respectively. Write the half reactions with the amount of each species present in the unbalanced reaction, along with the charge changes:
$$\mathrm{Al^0}\rightarrow 2\mathrm{Al^{+3}}$$
$$2\mathrm{O^0}\rightarrow 3\mathrm{O^{-2}}$$
Find the least common multiple of the coefficients of each half reaction reaction:
$$2(\mathrm{Al^0})\rightarrow 2\mathrm{Al^{+3}}$$
$$3(2\mathrm{O^0})\rightarrow 2(3\mathrm{O^{-2}})$$
Now consider the amount of electrons that must be lost by 2 atoms of Al to transform elemental Al into $\mathrm{Al^{+3}}$, as well as the amount of electrons that must be gained by 6 atoms of O to transform elemental $\mathrm{O_2}$ into $\mathrm{O^{-2}}$:
$$2(\mathrm{Al^0})\rightarrow 2\mathrm{Al^{+3}}+6e^-$$
$$3(2\mathrm{O^0})+12e^-\rightarrow 2(3\mathrm{O^{-2}})$$
The discrepancy between the two reactions is clear--the oxidation reaction must be multiplied through by 2 in order to balance the number of electrons lost by Al with the number of electrons gained by O:
$$2[2(\mathrm{Al^0})\rightarrow 2\mathrm{Al^{+3}}+6e^-]$$
This finally results in a balance in the number of electrons lost and gained, and thereby the coefficients of both the products and the reactants:
$$4(\mathrm{Al^0})\rightarrow 2(2\mathrm{Al^{+3}})+2(6e^-)$$
$$3(2\mathrm{O^0})+12e^-\rightarrow 2(3\mathrm{O^{-2}})$$
Now transcribe our coefficients back into the original equation and your balancing is done:
$$4\mathrm{Al} + 3\mathrm{O_2} \rightarrow 2\mathrm{Al_2 O_3}$$
Yes, although this process does seem extremely long, it is applicable to more complicated redox reactions. This includes reactions in which the the species participating in the redox reaction are not the only ones requiring balancing, and even reactions in which multiple species are oxidized/reduced at once. It is quite simple once you get the hang of it, and I hope this reduces the amount of time you spend balancing equations in the long run.
To solve this problem, create an ordered set of chemical elements $(Al,O)$ and an ordered set of chemical species $(Al,Al_2O_3,O_2)$.
The ordering of the chemical elements can be used to create a vector for each chemical species.
$Al = \begin{pmatrix}1\\0\end{pmatrix}$
$Al_2O_3 = \begin{pmatrix}2\\3\end{pmatrix}$
$O_2 = \begin{pmatrix}0\\2\end{pmatrix}$
The ordering of the chemical species (this ordering is arbitrary, but standard linear algebra algorithms will produce different results) can be used to create an element abundance matrix, $A$.
$A = \begin{pmatrix}1&2&0\\0&3&2\end{pmatrix}$
The coefficients of the set of linearly independent stoichiometric equations can be represented by the stoichiometric matrix, $N$, where $N$ is a representation of the null space of $A$.
$AN=0$
To put the stoichiometric matrix into 'canonical form' apply the operations:
$(RREF(N^T))^T$
The ordering of the species will preferentially make the stoichiometric coefficents of the species at the left side of matrix $A$ to have coefficents of $1$. This method will produce the maximal number of linearly independent stoichiometric equations. They can be added or multiplied and still represent a stoichiometric equation (they are linearly independent).
If you are going to try and calculate thermodynamic equilibrium with a mixture of gas and condensed species, I recommend ordering the gas species first in the list. This will try and isolate 1 gas per independent stoichiometric equation (if possible) and will facilite using the chemical equilibrium constant method $K_{eq}$ to calculate thermodynamic equilibrium.