/// <summary> /// Converts the symbolic variable into a state of separate simle terms with different denominators /// </summary> /// <param name="sv"></param> /// <returns></returns> public static SymbolicVariable[] SeparateWithDifferentDenominators(SymbolicVariable sv) { List <SymbolicVariable> SeparatedVariabls = new List <SymbolicVariable>(); for (int i = 0; i < sv.TermsCount; i++) { SymbolicVariable ordered; SymbolicVariable.ReOrderNegativeSymbols(sv[i], out ordered); SeparatedVariabls.Add(ordered); } foreach (var eTerm in sv.ExtraTerms) { for (int i = 0; i < eTerm.Term.TermsCount; i++) { SymbolicVariable ordered; SymbolicVariable.ReOrderNegativeSymbols(eTerm.Term[i], out ordered); if (eTerm.Negative) { ordered = SymbolicVariable.Multiply(SymbolicVariable.NegativeOne, ordered); } SeparatedVariabls.Add(ordered); } } return(SeparatedVariabls.ToArray()); }
/// <summary> /// Converts the symbolic variable into a state of separate simple terms with different denominators /// </summary> /// <param name="sv"></param> /// <returns></returns> public static SymbolicVariable[] SeparateWithDifferentDenominators(SymbolicVariable sv) { List <SymbolicVariable> SeparatedVariabls = new List <SymbolicVariable>(); var svclone = sv.Clone(true); var divisor = svclone._DividedTerm; svclone._DividedTerm = SymbolicVariable.One; for (int i = 0; i < svclone.TermsCount; i++) { SymbolicVariable ordered; SymbolicVariable.ReOrderNegativeSymbols(svclone[i], out ordered); ordered._DividedTerm = SymbolicVariable.Multiply(divisor, ordered._DividedTerm); SeparatedVariabls.Add(ordered); } var extraTerms = sv.ExtraTerms; foreach (var eTerm in extraTerms) { /* * for (int i = 0; i < eTerm.Term.TermsCount; i++) * { * SymbolicVariable ordered; * SymbolicVariable.ReOrderNegativeSymbols(eTerm.Term[i], out ordered); * * if (eTerm.Negative) * { * ordered = SymbolicVariable.Multiply(SymbolicVariable.NegativeOne, ordered); * } * * SeparatedVariabls.Add(ordered); * } */ SeparatedVariabls.AddRange(SeparateWithDifferentDenominators(eTerm.Term)); } return(SeparatedVariabls.ToArray()); }