public void SetValue(List<Expression> expressions) { foreach (var expression in expressions) { var newExpression = new Expression(expression.Coefficient, expression.Variable); Value.Add(newExpression); } }
public Equation(Expression leftPart, Expression rigthPart) { Init(); var left = new Expression(leftPart.Coefficient, leftPart.Variable); var right = new Expression(rigthPart.Coefficient, rigthPart.Variable); _leftPart.Add(left); _rightPart.Add(right); }
public Equation(Expression leftPart, IEnumerable<Expression> rigthPart) { _leftPart = new List<Expression>(); var left = new Expression(leftPart.Coefficient, leftPart.Variable); _leftPart.Add(left); _rightPart = new List<Expression>(); AddListToRight(rigthPart); }
public Equation(IEnumerable<Expression> leftPart, Expression rigthPart) { _rightPart = new List<Expression>(); var right = new Expression(rigthPart.Coefficient, rigthPart.Variable); _rightPart.Add(right); _leftPart = new List<Expression>(); AddListToLeft(leftPart); }
/// <summary> /// Sums all expressions with same name in RigthPart eg 0=x+2x+y => 0=3x+y /// </summary> private void SummRightPart() { var i = 0; var newRightPart = new List<Expression>(); foreach (var expression in _rightPart) { // if (expression.Variable != null) if (newRightPart.All( x => { var name1 = x.Variable != null ? x.Variable.Name : null; var name2 = expression.Variable != null ? expression.Variable.Name : null; return name1 != name2; })) { var name1 = expression.Variable != null ? expression.Variable.Name : null; var temp = new Expression(0, expression.Variable); for (int j = 0; j < _rightPart.Count; j++) { var name2 = _rightPart[j].Variable != null ? _rightPart[j].Variable.Name : null; if (name2 == name1) temp.Coefficient += _rightPart[j].Coefficient; } newRightPart.Add(temp); } } _rightPart = newRightPart.Where(x => !x.Coefficient.Equals(0)).ToList(); }
private void AddToRight(Expression expression) { _leftPart.Remove(expression); expression.ChangeSignum(); _rightPart.Add(expression); }
private void AddListToRight(IEnumerable<Expression> rightPartList) { foreach (var expression in rightPartList) { var right = new Expression(expression.Coefficient, expression.Variable); _rightPart.Add(right); } }
private void AddListToLeft(IEnumerable<Expression> leftPartList) { foreach (var expression in leftPartList) { var left = new Expression(expression.Coefficient, expression.Variable); _leftPart.Add(left); } }
public static Equation operator *(Equation eq1, double value) { var leftPart = new List<Expression>(); var rightPart = new List<Expression>(); eq1.LeftPart.ForEach(x => { var expression = new Expression(x.Coefficient*value, x.Variable); leftPart.Add(expression); }); eq1.RightPart.ForEach(x => { var expression = new Expression(x.Coefficient*value, x.Variable); rightPart.Add(expression); }); var newEquation = new Equation(leftPart, rightPart); return newEquation; }
public object Clone() { var newObj = new Expression(_coefficient, _variable); return newObj; }