Sponsored links: Algebra eBooks

### Related

? errcatch;

Calculate

##### errcatch-load-subst

load ("lrats");

subst ([a = b, c = d...

lratsubst ([a^2 = b,...

Calculate

? errcatch;

Calculate

##### errcatch-load-subst

load ("lrats");

subst ([a = b, c = d...

lratsubst ([a^2 = b,...

Calculate

### errcatch

Run Example
```(%i1)find_roots(expr, min, max, [stepping]):=block([ans:[], stepping:if(not(emptyp(stepping))) then float(stepping+1) else 1.1],intervals(items):=block([result],  result: if (emptyp(items)) then [] else          if(listp(items)) then           if(emptyp(rest(items))) then [] else               cons(cons(first(items),  [second(items)]),                       intervals(rest(items)))),seq(start,stop,stepping,[shift]) := block([                                            n, y:[],                                             shift: (if (not(emptyp(shift)))                                                         then float(first(shift))                                                            else (0.0))                                            ],            (n:floor((float(stop-start)/float(stepping)))),            (if (start <
stop)            then            (y:flatten(append([y],                                         makelist(float(start+shift+(stepping*(i-start))),                                         i, start, n+start))))            else            (y:flatten(append([y],                                         makelist(-(float(stop-shift-(stepping*(i-stop)))),                                         i, -(n+stop), stop)))))            (if (n>
1.0)                then return(y)                else return([]))),errormsg:false,     for i in intervals(seq(min, max, stepping+1)) do         ans:(append(ans, errcatch(find_root(expr, x, first(i), second(i))))),             errormsg:true, return(ans));
(%o1) find_roots(expr, min, max, [stepping]) :=
block([ans : [], stepping : if not emptyp(stepping) then float(stepping + 1)
else 1.1], intervals(items) := block([result],
result : if emptyp(items) then [] else (if listp(items)
then (if emptyp(rest(items)) then [] else cons(cons(first(items),
[second(items)]), intervals(rest(items)))))),
seq(start, stop, stepping, [shift]) :=
block([n, y : [], shift : if not emptyp(shift) then float(first(shift))
float(stop - start)
else 0.0], n : floor(-------------------),
float(stepping)
if start < stop then y : flatten(append([y],
makelist(float(start + shift + stepping (i - start)), i, start, n + start)))
else y : flatten(append([y], makelist(- float(stop - shift
- stepping (i - stop)), i, - (n + stop), stop)))(if n > 1.0 then return(y)
else return([]))), errormsg : false, for i in intervals(seq(min, max,
stepping + 1)) do ans : append(ans, errcatch(find_root(expr, x, first(i),
second(i)))), errormsg : true, return(ans))
(%i2) find_roots(sin(x), 0, 2*%pi);
(%o2)                      [0.0, 3.141592653589793]
(%i3) ```
Run Example
```intervals(items):=block([result],  result: if (emptyp(items)) then [] else           if(listp(items)) then          if(emptyp(rest(items))) then [] else          cons(cons(first(items),  [second(items)]),          intervals(rest(items))));
(%o1) intervals(items) := block([result],
result : if emptyp(items) then [] else (if listp(items)
then (if emptyp(rest(items)) then [] else cons(cons(first(items),
[second(items)]), intervals(rest(items))))))
(%i2) intervals(makelist(n, n, 1, 10));
(%o2) [[1, 2], [2, 3], [3, 4], [4, 5], [5, 6], [6, 7], [7, 8], [8, 9], [9, 10]]
(%i3) intervals(makelist(n, n, 1, 11));
(%o3) [[1, 2], [2, 3], [3, 4], [4, 5], [5, 6], [6, 7], [7, 8], [8, 9],
[9, 10], [10, 11]]
(%i4) ans:errcatch(find_root(sin(x), x, 2, 3));

find_root: function has same sign at endpoints: f(2.0) = 0.90929742682568,
f(3.0) = 0.14112000805987
(%o4)                                 []
(%i5) ans;
(%o5)                                 []
(%i6) seq(start,stop,stepping,[shift]) := block([                                            n, y:[],                                             shift: (if (not(emptyp(shift)))                                                         then float(first(shift))                                                            else (0.0))                                            ],            (n:floor((float(stop-start)/float(stepping)))),            (if (start <
stop)            then            (y:flatten(append([y],                                         makelist(float(start+shift+(stepping*(i-start))),                                         i, start, n+start))))            else            (y:flatten(append([y],                                         makelist(-(float(stop-shift-(stepping*(i-stop)))),                                         i, -(n+stop), stop)))))            (if (n>
1.0)                then return(y)                else return([])));
(%o6) seq(start, stop, stepping, [shift]) :=
block([n, y : [], shift : if not emptyp(shift) then float(first(shift))
float(stop - start)
else 0.0], n : floor(-------------------),
float(stepping)
if start < stop then y : flatten(append([y],
makelist(float(start + shift + stepping (i - start)), i, start, n + start)))
else y : flatten(append([y], makelist(- float(stop - shift
- stepping (i - stop)), i, - (n + stop), stop)))(if n > 1.0 then return(y)
else return([])))
(%i7) intervals(seq(0,7,1));
(%o7) [[0.0, 1.0], [1.0, 2.0], [2.0, 3.0], [3.0, 4.0], [4.0, 5.0], [5.0, 6.0],
[6.0, 7.0]]
(%i8) ans:[];
(%o8)                                 []
(%i9) block([ans:[], errormsg:false], for i in intervals(seq(0, 7, 1)) do ans:(append(ans, errcatch(find_root(sin(x), x, first(i), second(i))))), return(ans));

find_root: function has same sign at endpoints: f(1.0) = 0.8414709848079,
f(2.0) = 0.90929742682568
find_root: function has same sign at endpoints: f(2.0) = 0.90929742682568,
f(3.0) = 0.14112000805987
find_root: function has same sign at endpoints: f(4.0) = - 0.75680249530793,
f(5.0) = - 0.95892427466314
find_root: function has same sign at endpoints: f(5.0) = - 0.95892427466314,
f(6.0) = - 0.27941549819893
(%o9)             [0.0, 3.141592653589793, 6.283185307179586]
(%i10) ```
Run Example
```intervals(items):=block([result],  result: if (emptyp(items)) then [] else           if(listp(items)) then          if(emptyp(rest(items))) then [] else          cons(cons(first(items),  [second(items)]),          intervals(rest(items))));
(%o1) intervals(items) := block([result],
result : if emptyp(items) then [] else (if listp(items)
then (if emptyp(rest(items)) then [] else cons(cons(first(items),
[second(items)]), intervals(rest(items))))))
(%i2) intervals(makelist(n, n, 1, 10));
(%o2) [[1, 2], [2, 3], [3, 4], [4, 5], [5, 6], [6, 7], [7, 8], [8, 9], [9, 10]]
(%i3) intervals(makelist(n, n, 1, 11));
(%o3) [[1, 2], [2, 3], [3, 4], [4, 5], [5, 6], [6, 7], [7, 8], [8, 9],
[9, 10], [10, 11]]
(%i4) ans:errcatch(find_root(sin(x), x, 2, 3));

find_root: function has same sign at endpoints: f(2.0) = 0.90929742682568,
f(3.0) = 0.14112000805987
(%o4)                                 []
(%i5) ans;
(%o5)                                 []
(%i6) seq(start,stop,stepping,[shift]) := block([                                            n, y:[],                                             shift: (if (not(emptyp(shift)))                                                         then float(first(shift))                                                            else (0.0))                                            ],            (n:floor((float(stop-start)/float(stepping)))),            (if (start <
stop)            then            (y:flatten(append([y],                                         makelist(float(start+shift+(stepping*(i-start))),                                         i, start, n+start))))            else            (y:flatten(append([y],                                         makelist(-(float(stop-shift-(stepping*(i-stop)))),                                         i, -(n+stop), stop)))))            (if (n>
1.0)                then return(y)                else return([])));
(%o6) seq(start, stop, stepping, [shift]) :=
block([n, y : [], shift : if not emptyp(shift) then float(first(shift))
float(stop - start)
else 0.0], n : floor(-------------------),
float(stepping)
if start < stop then y : flatten(append([y],
makelist(float(start + shift + stepping (i - start)), i, start, n + start)))
else y : flatten(append([y], makelist(- float(stop - shift
- stepping (i - stop)), i, - (n + stop), stop)))(if n > 1.0 then return(y)
else return([])))
(%i7) intervals(seq(0,7,1));
(%o7) [[0.0, 1.0], [1.0, 2.0], [2.0, 3.0], [3.0, 4.0], [4.0, 5.0], [5.0, 6.0],
[6.0, 7.0]]
(%i8) ans:[];
(%o8)                                 []
(%i9) errormsg;
(%o9)                                true
(%i10) block([ans:[]], errormsg:false, for i in intervals(seq(0, 7, 1)) do ans:(append(ans, errcatch(find_root(sin(x), x, first(i), second(i))))), return(ans));
(%o10)            [0.0, 3.141592653589793, 6.283185307179586]
(%i11) errormsg;
(%o11)                               false
(%i12) ```

### Related Help

Help for Errcatch