Skip to content
WhiteBlackGoose edited this page Feb 15, 2023 · 1 revision

Another topic of basic calculus are limits, both one- and two-sided.

Two-sided limits

The first method to find limits is method Limit(Variable, Entity). Example:

Entity expr = "(a x3 + b x2 + c) / (h x3 - b x - 1)";
Console.WriteLine(expr.Limit("x", "+oo"));

Output:

a / h

That is, as the first argument a variable should be passed, and its destination - as the second argument.

Symbols +oo and -oo are parsed as real positive and real negative infinities respectively.

Not only it works with rational functions, here are a few examples of more advanced cases. Example:

// First remarkable
Entity expr = "sin(a x) / x";
Console.WriteLine(expr.Limit("x", "0"));

// First remarkable
Entity expr2 = "sin(a x) / tan(b x)";
Console.WriteLine(expr2.Limit("x", "0"));

// Second remarkable
Entity expr3 = "(1 + a / x)^(d x)";
Console.WriteLine(expr3.Limit("x", "+oo"));

// l'Hopital's rule
Entity expr4 = "(tan(t) - sin(t)) / t3";
Console.WriteLine(expr4.Limit("t", "0"));

Output:

a
a / b
e ^ (a * d)
1/2

If a limit cannot be found, a note of Entity.Limitf is returned:

Entity expr = "(sin(t) - tan(t)) / t";
Console.WriteLine(expr.Limit("t", "+oo"));

Output:

limit((sin(t) - tan(t)) / t, t, +oo)

Extension: string.Limit(Variable, Entity)

One-sided limits

The method is Limit(Variable, Entity, AngouriMath.Core.ApproachFrom), where ApproachFrom is a enum of three possible values: BothSides, Left, Right. If BothSided is passed, it will work same as Limit(Variable, Entity). Otherwise, we shall consider now. Simple example:

Entity expr = "(a x2 + b) / (c x2 + d)";
Console.WriteLine(expr.Limit("x", "3", AngouriMath.Core.ApproachFrom.Left));

Output:

(a * 9 + b) / (c * 9 + d)

Another example:

Entity expr = "(a x2 + b) / (c x2 + d)";
Console.WriteLine(expr.Limit("x", "0", AngouriMath.Core.ApproachFrom.Left));

Output:

b / d

Extension: string.Limit(Variable, Entity, ApproachFrom).

As for now, 17.03.2021, AM does not support advanced algorithms of finding limits. Make sure to stay on the most recent version to track updates.

Clone this wiki locally