You can subscribe to this list here.
2002 |
Jan
|
Feb
|
Mar
|
Apr
|
May
|
Jun
(67) |
Jul
(61) |
Aug
(49) |
Sep
(43) |
Oct
(59) |
Nov
(24) |
Dec
(18) |
---|---|---|---|---|---|---|---|---|---|---|---|---|
2003 |
Jan
(34) |
Feb
(35) |
Mar
(72) |
Apr
(42) |
May
(46) |
Jun
(15) |
Jul
(64) |
Aug
(62) |
Sep
(22) |
Oct
(41) |
Nov
(57) |
Dec
(56) |
2004 |
Jan
(48) |
Feb
(47) |
Mar
(33) |
Apr
(39) |
May
(6) |
Jun
(17) |
Jul
(19) |
Aug
(10) |
Sep
(14) |
Oct
(74) |
Nov
(80) |
Dec
(22) |
2005 |
Jan
(43) |
Feb
(33) |
Mar
(52) |
Apr
(74) |
May
(32) |
Jun
(58) |
Jul
(18) |
Aug
(41) |
Sep
(71) |
Oct
(28) |
Nov
(65) |
Dec
(68) |
2006 |
Jan
(54) |
Feb
(37) |
Mar
(82) |
Apr
(211) |
May
(69) |
Jun
(75) |
Jul
(279) |
Aug
(139) |
Sep
(135) |
Oct
(58) |
Nov
(81) |
Dec
(78) |
2007 |
Jan
(141) |
Feb
(134) |
Mar
(65) |
Apr
(49) |
May
(61) |
Jun
(90) |
Jul
(72) |
Aug
(53) |
Sep
(86) |
Oct
(61) |
Nov
(62) |
Dec
(101) |
2008 |
Jan
(100) |
Feb
(66) |
Mar
(76) |
Apr
(95) |
May
(77) |
Jun
(93) |
Jul
(103) |
Aug
(76) |
Sep
(42) |
Oct
(55) |
Nov
(44) |
Dec
(75) |
2009 |
Jan
(103) |
Feb
(105) |
Mar
(121) |
Apr
(59) |
May
(103) |
Jun
(82) |
Jul
(67) |
Aug
(76) |
Sep
(85) |
Oct
(75) |
Nov
(181) |
Dec
(133) |
2010 |
Jan
(107) |
Feb
(116) |
Mar
(145) |
Apr
(89) |
May
(138) |
Jun
(85) |
Jul
(82) |
Aug
(111) |
Sep
(70) |
Oct
(83) |
Nov
(60) |
Dec
(16) |
2011 |
Jan
(61) |
Feb
(16) |
Mar
(52) |
Apr
(41) |
May
(34) |
Jun
(41) |
Jul
(57) |
Aug
(73) |
Sep
(21) |
Oct
(45) |
Nov
(50) |
Dec
(28) |
2012 |
Jan
(70) |
Feb
(36) |
Mar
(71) |
Apr
(29) |
May
(48) |
Jun
(61) |
Jul
(44) |
Aug
(54) |
Sep
(20) |
Oct
(28) |
Nov
(41) |
Dec
(137) |
2013 |
Jan
(62) |
Feb
(55) |
Mar
(31) |
Apr
(23) |
May
(54) |
Jun
(54) |
Jul
(90) |
Aug
(46) |
Sep
(38) |
Oct
(60) |
Nov
(92) |
Dec
(17) |
2014 |
Jan
(62) |
Feb
(35) |
Mar
(72) |
Apr
(30) |
May
(97) |
Jun
(81) |
Jul
(63) |
Aug
(64) |
Sep
(28) |
Oct
(45) |
Nov
(48) |
Dec
(109) |
2015 |
Jan
(106) |
Feb
(36) |
Mar
(65) |
Apr
(63) |
May
(95) |
Jun
(56) |
Jul
(48) |
Aug
(55) |
Sep
(100) |
Oct
(57) |
Nov
(33) |
Dec
(46) |
2016 |
Jan
(76) |
Feb
(53) |
Mar
(88) |
Apr
(79) |
May
(62) |
Jun
(65) |
Jul
(37) |
Aug
(23) |
Sep
(108) |
Oct
(68) |
Nov
(66) |
Dec
(47) |
2017 |
Jan
(55) |
Feb
(11) |
Mar
(30) |
Apr
(19) |
May
(14) |
Jun
(21) |
Jul
(30) |
Aug
(48) |
Sep
(39) |
Oct
(30) |
Nov
(75) |
Dec
(28) |
2018 |
Jan
(70) |
Feb
|
Mar
|
Apr
(1) |
May
|
Jun
|
Jul
|
Aug
|
Sep
|
Oct
|
Nov
|
Dec
(1) |
2019 |
Jan
(19) |
Feb
(61) |
Mar
(14) |
Apr
(7) |
May
(5) |
Jun
(17) |
Jul
(5) |
Aug
(7) |
Sep
(11) |
Oct
(2) |
Nov
(17) |
Dec
(9) |
2020 |
Jan
(8) |
Feb
(8) |
Mar
(12) |
Apr
(17) |
May
(2) |
Jun
(10) |
Jul
(24) |
Aug
(6) |
Sep
(16) |
Oct
(3) |
Nov
(10) |
Dec
(40) |
2021 |
Jan
(53) |
Feb
(18) |
Mar
(20) |
Apr
(11) |
May
(23) |
Jun
(37) |
Jul
(28) |
Aug
(32) |
Sep
(105) |
Oct
(81) |
Nov
(109) |
Dec
(41) |
2022 |
Jan
(139) |
Feb
(82) |
Mar
(96) |
Apr
(51) |
May
(58) |
Jun
(104) |
Jul
(32) |
Aug
(61) |
Sep
(37) |
Oct
(25) |
Nov
(94) |
Dec
(81) |
2023 |
Jan
(113) |
Feb
(77) |
Mar
(98) |
Apr
(43) |
May
(48) |
Jun
(28) |
Jul
(72) |
Aug
(40) |
Sep
(44) |
Oct
(61) |
Nov
(70) |
Dec
(94) |
2024 |
Jan
(101) |
Feb
(21) |
Mar
(40) |
Apr
|
May
|
Jun
|
Jul
|
Aug
|
Sep
|
Oct
|
Nov
|
Dec
|
From: Barton W. <wil...@us...> - 2024-03-18 11:41:31
|
One more thing: In rtest_limit (line 551), there is the test ~~~ limit('integrate(x+1,x),x,2); 'integrate(x+1,x); ~~~ --- **[bugs:#4273] limit(integrate(f(x)*g(x), x), x, a) incorrect results** **Status:** open **Group:** None **Labels:** limit integrate **Created:** Sat Mar 16, 2024 05:38 AM UTC by Robert Dodier **Last Updated:** Mon Mar 18, 2024 11:08 AM UTC **Owner:** nobody `limit(integrate(f(x)*g(x), x), x, a)` yields incorrect results when both `f` and `g` are built-in simplifying functions. The correct result is a limit noun (containing an integral noun), but the limit gets lost. When either `f` or `g` is not a built-in simplifying function, the limit is retained. These results are all for `a` equal to 1, but I get the same behavior for other values of `a`. ``` (%i2) limit (integrate (abs(x) * cos(x), x), x, 1); / [ (%o2) I cos(x) abs(x) dx ] / (%i3) limit (integrate (abs(x) * exp(x), x), x, 1); / [ x (%o3) I %e abs(x) dx ] / (%i4) limit (integrate (bessel_j(0, x) * exp(x), x), x, 1); / [ x (%o4) I bessel_j(0, x) %e dx ] / (%i5) limit (integrate (bessel_j(0, x) * unit_step(x), x), x, 1); / [ (%o5) I bessel_j(0, x) unit_step(x) dx ] / ``` Here are some correct results with undefined functions `foo` and `baz`. ``` (%i6) limit (integrate (bessel_j(0, x) * foo(x), x), x, 1); / [ (%o6) limit I bessel_j(0, x) foo(x) dx x -> 1 ] / (%i7) limit (integrate (baz(0, x) * unit_step(x), x), x, 1); / [ (%o7) limit I baz(0, x) unit_step(x) dx x -> 1 ] / (%i8) limit (integrate (baz(0, x) * foo(x), x), x, 1); / [ (%o8) limit I baz(0, x) foo(x) dx x -> 1 ] / ``` Not sure what's going on here. I think this bug is at the root of the incorrect result from `fourier` which was mentioned on maxima-discuss 2024-03-15. --- Sent from sourceforge.net because max...@li... is subscribed to https://sourceforge.net/p/maxima/bugs/ To unsubscribe from further messages, a project admin can change settings at https://sourceforge.net/p/maxima/admin/bugs/options. Or, if this is a mailing list, you can unsubscribe from the mailing list. |
From: Barton W. <wil...@us...> - 2024-03-18 11:08:21
|
I don't know of a Maxima predicate that examines an expression for an indefinite (not definite) integral in an expression, but it's not super hard to create. As a * proof of concept*, in the function `toplevel-$limit`, I pasted in ~~~ ;; When exp involves an definite or indefinite integral that ;; isn't free of the limit variable, give up. (when (among '%integrate exp) ; new code (push (cons 'mlist args) *skipped*) (return (cons (list '%limit) args))) (unless (or $limsubst (eq var genfoo)) ;old code (when (limunknown exp) (return `((%limit) ,@(cons exp1 (cdr args)))))) ~~~ I haven't tested this with a current Maxima build, but it seems OK. Running the testsuite, only two items are pasted into my special variable `*skipped*`, where one item is a definite, not an indefinite integral. There is a modestly convincing argument that due to the implied additive constant for an antiderivative, the limit of an indefinite integral is ambiguous. So returning a nounform in this case is the right thing to do. Arguably, all this should be blended into the `limunknown` mechanism. But the `limunknown` is, an ugly hack. --- **[bugs:#4273] limit(integrate(f(x)*g(x), x), x, a) incorrect results** **Status:** open **Group:** None **Labels:** limit integrate **Created:** Sat Mar 16, 2024 05:38 AM UTC by Robert Dodier **Last Updated:** Mon Mar 18, 2024 02:52 AM UTC **Owner:** nobody `limit(integrate(f(x)*g(x), x), x, a)` yields incorrect results when both `f` and `g` are built-in simplifying functions. The correct result is a limit noun (containing an integral noun), but the limit gets lost. When either `f` or `g` is not a built-in simplifying function, the limit is retained. These results are all for `a` equal to 1, but I get the same behavior for other values of `a`. ``` (%i2) limit (integrate (abs(x) * cos(x), x), x, 1); / [ (%o2) I cos(x) abs(x) dx ] / (%i3) limit (integrate (abs(x) * exp(x), x), x, 1); / [ x (%o3) I %e abs(x) dx ] / (%i4) limit (integrate (bessel_j(0, x) * exp(x), x), x, 1); / [ x (%o4) I bessel_j(0, x) %e dx ] / (%i5) limit (integrate (bessel_j(0, x) * unit_step(x), x), x, 1); / [ (%o5) I bessel_j(0, x) unit_step(x) dx ] / ``` Here are some correct results with undefined functions `foo` and `baz`. ``` (%i6) limit (integrate (bessel_j(0, x) * foo(x), x), x, 1); / [ (%o6) limit I bessel_j(0, x) foo(x) dx x -> 1 ] / (%i7) limit (integrate (baz(0, x) * unit_step(x), x), x, 1); / [ (%o7) limit I baz(0, x) unit_step(x) dx x -> 1 ] / (%i8) limit (integrate (baz(0, x) * foo(x), x), x, 1); / [ (%o8) limit I baz(0, x) foo(x) dx x -> 1 ] / ``` Not sure what's going on here. I think this bug is at the root of the incorrect result from `fourier` which was mentioned on maxima-discuss 2024-03-15. --- Sent from sourceforge.net because max...@li... is subscribed to https://sourceforge.net/p/maxima/bugs/ To unsubscribe from further messages, a project admin can change settings at https://sourceforge.net/p/maxima/admin/bugs/options. Or, if this is a mailing list, you can unsubscribe from the mailing list. |
From: Robert D. <rob...@us...> - 2024-03-18 02:52:19
|
Oh, OK, given that, it would seem the bug is in MAXIMA-SUBSITUTE -- it makes sense to suppress substitution for the variable of integration in a definite integral, but not in an indefinite integral. --- **[bugs:#4273] limit(integrate(f(x)*g(x), x), x, a) incorrect results** **Status:** open **Group:** None **Labels:** limit integrate **Created:** Sat Mar 16, 2024 05:38 AM UTC by Robert Dodier **Last Updated:** Sun Mar 17, 2024 11:44 PM UTC **Owner:** nobody `limit(integrate(f(x)*g(x), x), x, a)` yields incorrect results when both `f` and `g` are built-in simplifying functions. The correct result is a limit noun (containing an integral noun), but the limit gets lost. When either `f` or `g` is not a built-in simplifying function, the limit is retained. These results are all for `a` equal to 1, but I get the same behavior for other values of `a`. ``` (%i2) limit (integrate (abs(x) * cos(x), x), x, 1); / [ (%o2) I cos(x) abs(x) dx ] / (%i3) limit (integrate (abs(x) * exp(x), x), x, 1); / [ x (%o3) I %e abs(x) dx ] / (%i4) limit (integrate (bessel_j(0, x) * exp(x), x), x, 1); / [ x (%o4) I bessel_j(0, x) %e dx ] / (%i5) limit (integrate (bessel_j(0, x) * unit_step(x), x), x, 1); / [ (%o5) I bessel_j(0, x) unit_step(x) dx ] / ``` Here are some correct results with undefined functions `foo` and `baz`. ``` (%i6) limit (integrate (bessel_j(0, x) * foo(x), x), x, 1); / [ (%o6) limit I bessel_j(0, x) foo(x) dx x -> 1 ] / (%i7) limit (integrate (baz(0, x) * unit_step(x), x), x, 1); / [ (%o7) limit I baz(0, x) unit_step(x) dx x -> 1 ] / (%i8) limit (integrate (baz(0, x) * foo(x), x), x, 1); / [ (%o8) limit I baz(0, x) foo(x) dx x -> 1 ] / ``` Not sure what's going on here. I think this bug is at the root of the incorrect result from `fourier` which was mentioned on maxima-discuss 2024-03-15. --- Sent from sourceforge.net because max...@li... is subscribed to https://sourceforge.net/p/maxima/bugs/ To unsubscribe from further messages, a project admin can change settings at https://sourceforge.net/p/maxima/admin/bugs/options. Or, if this is a mailing list, you can unsubscribe from the mailing list. |
From: Barton W. <wil...@us...> - 2024-03-17 23:44:50
|
In `toplevel-$limit`, I see this bit of code -- I put in the mtell ~~~ (unless (zerop2 val) (let ((*atp* t) (realvar var)) ;; *atp* prevents substitution from applying to vars ;; bound by %sum, %product, %integrate, %limit (setq var (gensym)) (putprop var t 'internal) (setq exp (derivative-subst exp val var realvar)) (setq exp (maxima-substitute (m+ val var) realvar exp)))) (setq val (cond ((eq dr '$plus) '$zeroa) ((eq dr '$minus) '$zerob) (t 0))) (setq origval 0)) (mtell "exp = ~M ; var = ~M ~%" exp) ~~~ And I see ~~~ (%i15) integrate(floor(x)*cos(x),x); (%o15) integrate(floor(x)*cos(x),x) (%i16) limit(%,x,42,plus); exp = integrate(floor(x)*cos(x),x) ; var = g12467 (%o16) integrate(floor(x)*cos(x),x) ~~~ So the `*atp* suppresses the substitution, and now Maxima thinks it's finding the limit of a constant. --- **[bugs:#4273] limit(integrate(f(x)*g(x), x), x, a) incorrect results** **Status:** open **Group:** None **Labels:** limit integrate **Created:** Sat Mar 16, 2024 05:38 AM UTC by Robert Dodier **Last Updated:** Sun Mar 17, 2024 06:36 PM UTC **Owner:** nobody `limit(integrate(f(x)*g(x), x), x, a)` yields incorrect results when both `f` and `g` are built-in simplifying functions. The correct result is a limit noun (containing an integral noun), but the limit gets lost. When either `f` or `g` is not a built-in simplifying function, the limit is retained. These results are all for `a` equal to 1, but I get the same behavior for other values of `a`. ``` (%i2) limit (integrate (abs(x) * cos(x), x), x, 1); / [ (%o2) I cos(x) abs(x) dx ] / (%i3) limit (integrate (abs(x) * exp(x), x), x, 1); / [ x (%o3) I %e abs(x) dx ] / (%i4) limit (integrate (bessel_j(0, x) * exp(x), x), x, 1); / [ x (%o4) I bessel_j(0, x) %e dx ] / (%i5) limit (integrate (bessel_j(0, x) * unit_step(x), x), x, 1); / [ (%o5) I bessel_j(0, x) unit_step(x) dx ] / ``` Here are some correct results with undefined functions `foo` and `baz`. ``` (%i6) limit (integrate (bessel_j(0, x) * foo(x), x), x, 1); / [ (%o6) limit I bessel_j(0, x) foo(x) dx x -> 1 ] / (%i7) limit (integrate (baz(0, x) * unit_step(x), x), x, 1); / [ (%o7) limit I baz(0, x) unit_step(x) dx x -> 1 ] / (%i8) limit (integrate (baz(0, x) * foo(x), x), x, 1); / [ (%o8) limit I baz(0, x) foo(x) dx x -> 1 ] / ``` Not sure what's going on here. I think this bug is at the root of the incorrect result from `fourier` which was mentioned on maxima-discuss 2024-03-15. --- Sent from sourceforge.net because max...@li... is subscribed to https://sourceforge.net/p/maxima/bugs/ To unsubscribe from further messages, a project admin can change settings at https://sourceforge.net/p/maxima/admin/bugs/options. Or, if this is a mailing list, you can unsubscribe from the mailing list. |
From: Barton W. <wil...@us...> - 2024-03-17 20:45:09
|
Oh, I see, almost surely they are the same bugs. But look at this--I think the limit variable is wrong. In this case the limit variable should be $x, but it's :g4915. ~~~ ldefint(exp(x) * floor(x),x,5,9); 0> Calling (LIMIT ((%INTEGRATE SIMP) ((MTIMES SIMP) ((MEXPT SIMP) $%E $X) (($FLOOR SIMP) $X)) $X) #:G4915 $ZEROB THINK) < LIMIT returned ((%INTEGRATE SIMP) ((MTIMES SIMP) ((MEXPT SIMP) $%E $X) (($FLOOR SIMP) $X)) $X) 0> Calling (LIMIT ((%INTEGRATE SIMP) ((MTIMES SIMP) ((MEXPT SIMP) $%E $X) (($FLOOR SIMP) $X)) $X) #:G4942 $ZEROA THINK) < LIMIT returned ((%INTEGRATE SIMP) ((MTIMES SIMP) ((MEXPT SIMP) $%E $X) (($FLOOR SIMP) $X)) $X) 0 ~~~ --- **[bugs:#4275] ldefint returns zero** **Status:** open **Group:** None **Labels:** ldefinit definite integral **Created:** Sun Mar 17, 2024 03:24 PM UTC by Barton Willis **Last Updated:** Sun Mar 17, 2024 05:54 PM UTC **Owner:** nobody Rubbish: ~~~ (%i3) ldefint(floor(x)*exp(x),x,2,3); (%o3) 0 ~~~ I think that the problem is that `ldefint` needs to check when `sinint` returns an integration nounform. --- Sent from sourceforge.net because max...@li... is subscribed to https://sourceforge.net/p/maxima/bugs/ To unsubscribe from further messages, a project admin can change settings at https://sourceforge.net/p/maxima/admin/bugs/options. Or, if this is a mailing list, you can unsubscribe from the mailing list. |
From: Robert D. <rob...@us...> - 2024-03-17 18:37:00
|
Now `limit(foo(x), x, a)` correctly keeps the `limit` noun, while `limit(integrate(foo(x), x), x, a)` loses it as shown above: ``` (%i4) limit(foo(x), x, a); (%o4) limit foo(x) x -> a ``` Looks like LIMIT is incorrectly thinking it has figured out the limit of `'integrate(foo(x), x)`, and just returns that expression instead of throwing to LIMIT-CATCH. When it has just `foo(x)` in hand, LIMIT throws to LIMIT-CATCH and LIMIT-CATCH returns NIL, otherwise LIMIT-CATCH returns whatever LIMIT returned. ``` (%i5) limit(foo(x), x, a); 0: (MAXIMA::TOPLEVEL-$LIMIT ((MAXIMA::$FOO MAXIMA::SIMP) MAXIMA::$X) MAXIMA::$X MAXIMA::$A) 1: (MAXIMA::TOPLEVEL-$LIMIT ((MAXIMA::$FOO MAXIMA::SIMP) ((MAXIMA::MPLUS MAXIMA::SIMP) MAXIMA::$A #:G1931)) #:G1931 0 MAXIMA::$PLUS) 2: (MAXIMA::LIMIT ((MAXIMA::$FOO MAXIMA::SIMP) ((MAXIMA::MPLUS MAXIMA::SIMP) MAXIMA::$A #:G1931)) #:G1931 MAXIMA::$ZEROA MAXIMA::THINK) 2: LIMIT exited non-locally 2: (MAXIMA::LIMIT ((MAXIMA::$FOO MAXIMA::SIMP) ((MAXIMA::MPLUS MAXIMA::SIMP) MAXIMA::$A #:G1931)) #:G1931 MAXIMA::$ZEROA MAXIMA::THINK) 3: (MAXIMA::LIMIT ((MAXIMA::MPLUS MAXIMA::SIMP) ((MAXIMA::$FOO MAXIMA::SIMP) MAXIMA::$A) ((MAXIMA::MTIMES MAXIMA::SIMP) #:G1931 ((MAXIMA::%AT MAXIMA::SIMP) ((MAXIMA::%DERIVATIVE MAXIMA::SIMP) ((MAXIMA::$FOO MAXIMA::SIMP) ((MAXIMA::MPLUS MAXIMA::SIMP) MAXIMA::$A #:G1931)) #:G1931 1) ((MAXIMA::MEQUAL MAXIMA::SIMP) #:G1931 0))) ((MAXIMA::MTIMES MAXIMA::SIMP) ((MAXIMA::RAT MAXIMA::SIMP) 1 2) ((MAXIMA::MEXPT MAXIMA::SIMP MAXIMA::RATSIMP) #:G1931 2) ((MAXIMA::%AT MAXIMA::SIMP) ((MAXIMA::%DERIVATIVE MAXIMA::SIMP) ((MAXIMA::$FOO MAXIMA::SIMP) ((MAXIMA::MPLUS MAXIMA::SIMP) MAXIMA::$A #:G1931)) #:G1931 2) ((MAXIMA::MEQUAL MAXIMA::SIMP) #:G1931 0))) ((MAXIMA::MTIMES MAXIMA::SIMP) ((MAXIMA::RAT MAXIMA::SIMP) 1 6) ((MAXIMA::MEXPT MAXIMA::SIMP MAXIMA::RATSIMP) #:G1931 3) ((MAXIMA::%AT MAXIMA::SIMP) ((MAXIMA::%DERIVATIVE MAXIMA::SIMP) ((MAXIMA::$FOO MAXIMA::SIMP) ((MAXIMA::MPLUS MAXIMA::SIMP) MAXIMA::$A #:G1931)) #:G1931 3) ((MAXIMA::MEQUAL MAXIMA::SIMP) #:G1931 0))) ((MAXIMA::MTIMES MAXIMA::SIMP) ((MAXIMA::RAT MAXIMA::SIMP) 1 24) ((MAXIMA::MEXPT MAXIMA::SIMP MAXIMA::RATSIMP) #:G1931 4) ((MAXIMA::%AT MAXIMA::SIMP) ((MAXIMA::%DERIVATIVE MAXIMA::SIMP) ((MAXIMA::$FOO MAXIMA::SIMP) ((MAXIMA::MPLUS MAXIMA::SIMP) MAXIMA::$A #:G1931)) #:G1931 4) ((MAXIMA::MEQUAL MAXIMA::SIMP) #:G1931 0)))) #:G1931 MAXIMA::$ZEROA MAXIMA::THINK) 4: (MAXIMA::LIMIT ((MAXIMA::$FOO MAXIMA::SIMP) MAXIMA::$A) #:G1931 MAXIMA::$ZEROA MAXIMA::THINK) 4: LIMIT returned (($FOO SIMP) $A) 4: (MAXIMA::LIMIT ((MAXIMA::MTIMES MAXIMA::SIMP) #:G1931 ((MAXIMA::%AT MAXIMA::SIMP) ((MAXIMA::%DERIVATIVE MAXIMA::SIMP) ((MAXIMA::$FOO MAXIMA::SIMP) ((MAXIMA::MPLUS MAXIMA::SIMP) MAXIMA::$A #:G1931)) #:G1931 1) ((MAXIMA::MEQUAL MAXIMA::SIMP) #:G1931 0))) #:G1931 MAXIMA::$ZEROA MAXIMA::THINK) 5: (MAXIMA::LIMIT #:G1931 #:G1931 MAXIMA::$ZEROA MAXIMA::THINK) 5: LIMIT returned $ZEROA 5: (MAXIMA::LIMIT ((MAXIMA::%AT MAXIMA::SIMP MAXIMA::IRREDUCIBLE) ((MAXIMA::%DERIVATIVE MAXIMA::SIMP) ((MAXIMA::$FOO MAXIMA::SIMP) ((MAXIMA::MPLUS MAXIMA::SIMP) MAXIMA::$A #:G1931)) #:G1931 1) ((MAXIMA::MEQUAL MAXIMA::SIMP) #:G1931 0)) #:G1931 MAXIMA::$ZEROA MAXIMA::THINK) 5: LIMIT exited non-locally 4: LIMIT exited non-locally 3: LIMIT exited non-locally 2: LIMIT exited non-locally 1: TOPLEVEL-$LIMIT returned ((%LIMIT) (($FOO SIMP) ((MPLUS SIMP) $A #:G1931)) #:G1931 0 $PLUS) 1: (MAXIMA::TOPLEVEL-$LIMIT ((MAXIMA::$FOO MAXIMA::SIMP) ((MAXIMA::MPLUS MAXIMA::SIMP) MAXIMA::$A #:G1931)) #:G1931 0 MAXIMA::$MINUS) 2: (MAXIMA::LIMIT ((MAXIMA::$FOO MAXIMA::SIMP) ((MAXIMA::MPLUS MAXIMA::SIMP) MAXIMA::$A #:G1931)) #:G1931 MAXIMA::$ZEROB MAXIMA::THINK) 2: LIMIT exited non-locally 2: (MAXIMA::LIMIT ((MAXIMA::$FOO MAXIMA::SIMP) ((MAXIMA::MPLUS MAXIMA::SIMP) MAXIMA::$A #:G1931)) #:G1931 MAXIMA::$ZEROB MAXIMA::THINK) 3: (MAXIMA::LIMIT ((MAXIMA::MPLUS MAXIMA::SIMP) ((MAXIMA::$FOO MAXIMA::SIMP) MAXIMA::$A) ((MAXIMA::MTIMES MAXIMA::SIMP) #:G1931 ((MAXIMA::%AT MAXIMA::SIMP) ((MAXIMA::%DERIVATIVE MAXIMA::SIMP) ((MAXIMA::$FOO MAXIMA::SIMP) ((MAXIMA::MPLUS MAXIMA::SIMP) MAXIMA::$A #:G1931)) #:G1931 1) ((MAXIMA::MEQUAL MAXIMA::SIMP) #:G1931 0))) ((MAXIMA::MTIMES MAXIMA::SIMP) ((MAXIMA::RAT MAXIMA::SIMP) 1 2) ((MAXIMA::MEXPT MAXIMA::SIMP MAXIMA::RATSIMP) #:G1931 2) ((MAXIMA::%AT MAXIMA::SIMP) ((MAXIMA::%DERIVATIVE MAXIMA::SIMP) ((MAXIMA::$FOO MAXIMA::SIMP) ((MAXIMA::MPLUS MAXIMA::SIMP) MAXIMA::$A #:G1931)) #:G1931 2) ((MAXIMA::MEQUAL MAXIMA::SIMP) #:G1931 0))) ((MAXIMA::MTIMES MAXIMA::SIMP) ((MAXIMA::RAT MAXIMA::SIMP) 1 6) ((MAXIMA::MEXPT MAXIMA::SIMP MAXIMA::RATSIMP) #:G1931 3) ((MAXIMA::%AT MAXIMA::SIMP) ((MAXIMA::%DERIVATIVE MAXIMA::SIMP) ((MAXIMA::$FOO MAXIMA::SIMP) ((MAXIMA::MPLUS MAXIMA::SIMP) MAXIMA::$A #:G1931)) #:G1931 3) ((MAXIMA::MEQUAL MAXIMA::SIMP) #:G1931 0))) ((MAXIMA::MTIMES MAXIMA::SIMP) ((MAXIMA::RAT MAXIMA::SIMP) 1 24) ((MAXIMA::MEXPT MAXIMA::SIMP MAXIMA::RATSIMP) #:G1931 4) ((MAXIMA::%AT MAXIMA::SIMP) ((MAXIMA::%DERIVATIVE MAXIMA::SIMP) ((MAXIMA::$FOO MAXIMA::SIMP) ((MAXIMA::MPLUS MAXIMA::SIMP) MAXIMA::$A #:G1931)) #:G1931 4) ((MAXIMA::MEQUAL MAXIMA::SIMP) #:G1931 0)))) #:G1931 MAXIMA::$ZEROB MAXIMA::THINK) 4: (MAXIMA::LIMIT ((MAXIMA::$FOO MAXIMA::SIMP) MAXIMA::$A) #:G1931 MAXIMA::$ZEROB MAXIMA::THINK) 4: LIMIT returned (($FOO SIMP) $A) 4: (MAXIMA::LIMIT ((MAXIMA::MTIMES MAXIMA::SIMP) #:G1931 ((MAXIMA::%AT MAXIMA::SIMP) ((MAXIMA::%DERIVATIVE MAXIMA::SIMP) ((MAXIMA::$FOO MAXIMA::SIMP) ((MAXIMA::MPLUS MAXIMA::SIMP) MAXIMA::$A #:G1931)) #:G1931 1) ((MAXIMA::MEQUAL MAXIMA::SIMP) #:G1931 0))) #:G1931 MAXIMA::$ZEROB MAXIMA::THINK) 5: (MAXIMA::LIMIT #:G1931 #:G1931 MAXIMA::$ZEROB MAXIMA::THINK) 5: LIMIT returned $ZEROB 5: (MAXIMA::LIMIT ((MAXIMA::%AT MAXIMA::SIMP MAXIMA::IRREDUCIBLE) ((MAXIMA::%DERIVATIVE MAXIMA::SIMP) ((MAXIMA::$FOO MAXIMA::SIMP) ((MAXIMA::MPLUS MAXIMA::SIMP) MAXIMA::$A #:G1931)) #:G1931 1) ((MAXIMA::MEQUAL MAXIMA::SIMP) #:G1931 0)) #:G1931 MAXIMA::$ZEROB MAXIMA::THINK) 5: LIMIT exited non-locally 4: LIMIT exited non-locally 3: LIMIT exited non-locally 2: LIMIT exited non-locally 1: TOPLEVEL-$LIMIT returned ((%LIMIT) (($FOO SIMP) ((MPLUS SIMP) $A #:G1931)) #:G1931 0 $MINUS) 0: TOPLEVEL-$LIMIT returned ((%LIMIT) (($FOO SIMP) $X) $X $A) 0: (MAXIMA::TOPLEVEL-$LIMIT ((MAXIMA::$FOO MAXIMA::SIMP) MAXIMA::$X) MAXIMA::$X MAXIMA::$A) 1: (MAXIMA::TOPLEVEL-$LIMIT ((MAXIMA::$FOO MAXIMA::SIMP) ((MAXIMA::MPLUS MAXIMA::SIMP) MAXIMA::$A #:G2800)) #:G2800 0 MAXIMA::$PLUS) 2: (MAXIMA::LIMIT ((MAXIMA::$FOO MAXIMA::SIMP) ((MAXIMA::MPLUS MAXIMA::SIMP) MAXIMA::$A #:G2800)) #:G2800 MAXIMA::$ZEROA MAXIMA::THINK) 2: LIMIT exited non-locally 2: (MAXIMA::LIMIT ((MAXIMA::$FOO MAXIMA::SIMP) ((MAXIMA::MPLUS MAXIMA::SIMP) MAXIMA::$A #:G2800)) #:G2800 MAXIMA::$ZEROA MAXIMA::THINK) 3: (MAXIMA::LIMIT ((MAXIMA::MPLUS MAXIMA::SIMP) ((MAXIMA::$FOO MAXIMA::SIMP) MAXIMA::$A) ((MAXIMA::MTIMES MAXIMA::SIMP) #:G2800 ((MAXIMA::%AT MAXIMA::SIMP) ((MAXIMA::%DERIVATIVE MAXIMA::SIMP) ((MAXIMA::$FOO MAXIMA::SIMP) ((MAXIMA::MPLUS MAXIMA::SIMP) MAXIMA::$A #:G2800)) #:G2800 1) ((MAXIMA::MEQUAL MAXIMA::SIMP) #:G2800 0))) ((MAXIMA::MTIMES MAXIMA::SIMP) ((MAXIMA::RAT MAXIMA::SIMP) 1 2) ((MAXIMA::MEXPT MAXIMA::SIMP MAXIMA::RATSIMP) #:G2800 2) ((MAXIMA::%AT MAXIMA::SIMP) ((MAXIMA::%DERIVATIVE MAXIMA::SIMP) ((MAXIMA::$FOO MAXIMA::SIMP) ((MAXIMA::MPLUS MAXIMA::SIMP) MAXIMA::$A #:G2800)) #:G2800 2) ((MAXIMA::MEQUAL MAXIMA::SIMP) #:G2800 0))) ((MAXIMA::MTIMES MAXIMA::SIMP) ((MAXIMA::RAT MAXIMA::SIMP) 1 6) ((MAXIMA::MEXPT MAXIMA::SIMP MAXIMA::RATSIMP) #:G2800 3) ((MAXIMA::%AT MAXIMA::SIMP) ((MAXIMA::%DERIVATIVE MAXIMA::SIMP) ((MAXIMA::$FOO MAXIMA::SIMP) ((MAXIMA::MPLUS MAXIMA::SIMP) MAXIMA::$A #:G2800)) #:G2800 3) ((MAXIMA::MEQUAL MAXIMA::SIMP) #:G2800 0))) ((MAXIMA::MTIMES MAXIMA::SIMP) ((MAXIMA::RAT MAXIMA::SIMP) 1 24) ((MAXIMA::MEXPT MAXIMA::SIMP MAXIMA::RATSIMP) #:G2800 4) ((MAXIMA::%AT MAXIMA::SIMP) ((MAXIMA::%DERIVATIVE MAXIMA::SIMP) ((MAXIMA::$FOO MAXIMA::SIMP) ((MAXIMA::MPLUS MAXIMA::SIMP) MAXIMA::$A #:G2800)) #:G2800 4) ((MAXIMA::MEQUAL MAXIMA::SIMP) #:G2800 0)))) #:G2800 MAXIMA::$ZEROA MAXIMA::THINK) 4: (MAXIMA::LIMIT ((MAXIMA::$FOO MAXIMA::SIMP) MAXIMA::$A) #:G2800 MAXIMA::$ZEROA MAXIMA::THINK) 4: LIMIT returned (($FOO SIMP) $A) 4: (MAXIMA::LIMIT ((MAXIMA::MTIMES MAXIMA::SIMP) #:G2800 ((MAXIMA::%AT MAXIMA::SIMP) ((MAXIMA::%DERIVATIVE MAXIMA::SIMP) ((MAXIMA::$FOO MAXIMA::SIMP) ((MAXIMA::MPLUS MAXIMA::SIMP) MAXIMA::$A #:G2800)) #:G2800 1) ((MAXIMA::MEQUAL MAXIMA::SIMP) #:G2800 0))) #:G2800 MAXIMA::$ZEROA MAXIMA::THINK) 5: (MAXIMA::LIMIT #:G2800 #:G2800 MAXIMA::$ZEROA MAXIMA::THINK) 5: LIMIT returned $ZEROA 5: (MAXIMA::LIMIT ((MAXIMA::%AT MAXIMA::SIMP MAXIMA::IRREDUCIBLE) ((MAXIMA::%DERIVATIVE MAXIMA::SIMP) ((MAXIMA::$FOO MAXIMA::SIMP) ((MAXIMA::MPLUS MAXIMA::SIMP) MAXIMA::$A #:G2800)) #:G2800 1) ((MAXIMA::MEQUAL MAXIMA::SIMP) #:G2800 0)) #:G2800 MAXIMA::$ZEROA MAXIMA::THINK) 5: LIMIT exited non-locally 4: LIMIT exited non-locally 3: LIMIT exited non-locally 2: LIMIT exited non-locally 1: TOPLEVEL-$LIMIT returned ((%LIMIT) (($FOO SIMP) ((MPLUS SIMP) $A #:G2800)) #:G2800 0 $PLUS) 1: (MAXIMA::TOPLEVEL-$LIMIT ((MAXIMA::$FOO MAXIMA::SIMP) ((MAXIMA::MPLUS MAXIMA::SIMP) MAXIMA::$A #:G2800)) #:G2800 0 MAXIMA::$MINUS) 2: (MAXIMA::LIMIT ((MAXIMA::$FOO MAXIMA::SIMP) ((MAXIMA::MPLUS MAXIMA::SIMP) MAXIMA::$A #:G2800)) #:G2800 MAXIMA::$ZEROB MAXIMA::THINK) 2: LIMIT exited non-locally 2: (MAXIMA::LIMIT ((MAXIMA::$FOO MAXIMA::SIMP) ((MAXIMA::MPLUS MAXIMA::SIMP) MAXIMA::$A #:G2800)) #:G2800 MAXIMA::$ZEROB MAXIMA::THINK) 3: (MAXIMA::LIMIT ((MAXIMA::MPLUS MAXIMA::SIMP) ((MAXIMA::$FOO MAXIMA::SIMP) MAXIMA::$A) ((MAXIMA::MTIMES MAXIMA::SIMP) #:G2800 ((MAXIMA::%AT MAXIMA::SIMP) ((MAXIMA::%DERIVATIVE MAXIMA::SIMP) ((MAXIMA::$FOO MAXIMA::SIMP) ((MAXIMA::MPLUS MAXIMA::SIMP) MAXIMA::$A #:G2800)) #:G2800 1) ((MAXIMA::MEQUAL MAXIMA::SIMP) #:G2800 0))) ((MAXIMA::MTIMES MAXIMA::SIMP) ((MAXIMA::RAT MAXIMA::SIMP) 1 2) ((MAXIMA::MEXPT MAXIMA::SIMP MAXIMA::RATSIMP) #:G2800 2) ((MAXIMA::%AT MAXIMA::SIMP) ((MAXIMA::%DERIVATIVE MAXIMA::SIMP) ((MAXIMA::$FOO MAXIMA::SIMP) ((MAXIMA::MPLUS MAXIMA::SIMP) MAXIMA::$A #:G2800)) #:G2800 2) ((MAXIMA::MEQUAL MAXIMA::SIMP) #:G2800 0))) ((MAXIMA::MTIMES MAXIMA::SIMP) ((MAXIMA::RAT MAXIMA::SIMP) 1 6) ((MAXIMA::MEXPT MAXIMA::SIMP MAXIMA::RATSIMP) #:G2800 3) ((MAXIMA::%AT MAXIMA::SIMP) ((MAXIMA::%DERIVATIVE MAXIMA::SIMP) ((MAXIMA::$FOO MAXIMA::SIMP) ((MAXIMA::MPLUS MAXIMA::SIMP) MAXIMA::$A #:G2800)) #:G2800 3) ((MAXIMA::MEQUAL MAXIMA::SIMP) #:G2800 0))) ((MAXIMA::MTIMES MAXIMA::SIMP) ((MAXIMA::RAT MAXIMA::SIMP) 1 24) ((MAXIMA::MEXPT MAXIMA::SIMP MAXIMA::RATSIMP) #:G2800 4) ((MAXIMA::%AT MAXIMA::SIMP) ((MAXIMA::%DERIVATIVE MAXIMA::SIMP) ((MAXIMA::$FOO MAXIMA::SIMP) ((MAXIMA::MPLUS MAXIMA::SIMP) MAXIMA::$A #:G2800)) #:G2800 4) ((MAXIMA::MEQUAL MAXIMA::SIMP) #:G2800 0)))) #:G2800 MAXIMA::$ZEROB MAXIMA::THINK) 4: (MAXIMA::LIMIT ((MAXIMA::$FOO MAXIMA::SIMP) MAXIMA::$A) #:G2800 MAXIMA::$ZEROB MAXIMA::THINK) 4: LIMIT returned (($FOO SIMP) $A) 4: (MAXIMA::LIMIT ((MAXIMA::MTIMES MAXIMA::SIMP) #:G2800 ((MAXIMA::%AT MAXIMA::SIMP) ((MAXIMA::%DERIVATIVE MAXIMA::SIMP) ((MAXIMA::$FOO MAXIMA::SIMP) ((MAXIMA::MPLUS MAXIMA::SIMP) MAXIMA::$A #:G2800)) #:G2800 1) ((MAXIMA::MEQUAL MAXIMA::SIMP) #:G2800 0))) #:G2800 MAXIMA::$ZEROB MAXIMA::THINK) 5: (MAXIMA::LIMIT #:G2800 #:G2800 MAXIMA::$ZEROB MAXIMA::THINK) 5: LIMIT returned $ZEROB 5: (MAXIMA::LIMIT ((MAXIMA::%AT MAXIMA::SIMP MAXIMA::IRREDUCIBLE) ((MAXIMA::%DERIVATIVE MAXIMA::SIMP) ((MAXIMA::$FOO MAXIMA::SIMP) ((MAXIMA::MPLUS MAXIMA::SIMP) MAXIMA::$A #:G2800)) #:G2800 1) ((MAXIMA::MEQUAL MAXIMA::SIMP) #:G2800 0)) #:G2800 MAXIMA::$ZEROB MAXIMA::THINK) 5: LIMIT exited non-locally 4: LIMIT exited non-locally 3: LIMIT exited non-locally 2: LIMIT exited non-locally 1: TOPLEVEL-$LIMIT returned ((%LIMIT) (($FOO SIMP) ((MPLUS SIMP) $A #:G2800)) #:G2800 0 $MINUS) 0: TOPLEVEL-$LIMIT returned ((%LIMIT) (($FOO SIMP) $X) $X $A) (%o5) limit foo(x) x -> a ``` Note all the "LIMIT exited non-locally" there. On the other hand, when LIMIT thinks it got an answer, ``` (%i6) limit (integrate (foo(x), x), x, a); 0: (MAXIMA::TOPLEVEL-$LIMIT ((MAXIMA::%INTEGRATE MAXIMA::SIMP) ((MAXIMA::$FOO MAXIMA::SIMP) MAXIMA::$X) MAXIMA::$X) MAXIMA::$X MAXIMA::$A) 1: (MAXIMA::TOPLEVEL-$LIMIT ((MAXIMA::%INTEGRATE MAXIMA::SIMP) ((MAXIMA::$FOO MAXIMA::SIMP) MAXIMA::$X) MAXIMA::$X) #:G3673 0 MAXIMA::$PLUS) 2: (MAXIMA::LIMIT ((MAXIMA::%INTEGRATE MAXIMA::SIMP) ((MAXIMA::$FOO MAXIMA::SIMP) MAXIMA::$X) MAXIMA::$X) #:G3673 MAXIMA::$ZEROA MAXIMA::THINK) 2: LIMIT returned ((%INTEGRATE SIMP) (($FOO SIMP) $X) $X) 1: TOPLEVEL-$LIMIT returned ((%INTEGRATE SIMP) (($FOO SIMP) $X) $X) 1: (MAXIMA::TOPLEVEL-$LIMIT ((MAXIMA::%INTEGRATE MAXIMA::SIMP) ((MAXIMA::$FOO MAXIMA::SIMP) MAXIMA::$X) MAXIMA::$X) #:G3673 0 MAXIMA::$MINUS) 2: (MAXIMA::LIMIT ((MAXIMA::%INTEGRATE MAXIMA::SIMP) ((MAXIMA::$FOO MAXIMA::SIMP) MAXIMA::$X) MAXIMA::$X) #:G3673 MAXIMA::$ZEROB MAXIMA::THINK) 2: LIMIT returned ((%INTEGRATE SIMP) (($FOO SIMP) $X) $X) 1: TOPLEVEL-$LIMIT returned ((%INTEGRATE SIMP) (($FOO SIMP) $X) $X) 0: TOPLEVEL-$LIMIT returned ((%INTEGRATE SIMP) (($FOO SIMP) $X) $X) / [ (%o6) I foo(x) dx ] / ``` --- **[bugs:#4273] limit(integrate(f(x)*g(x), x), x, a) incorrect results** **Status:** open **Group:** None **Labels:** limit integrate **Created:** Sat Mar 16, 2024 05:38 AM UTC by Robert Dodier **Last Updated:** Sun Mar 17, 2024 06:12 PM UTC **Owner:** nobody `limit(integrate(f(x)*g(x), x), x, a)` yields incorrect results when both `f` and `g` are built-in simplifying functions. The correct result is a limit noun (containing an integral noun), but the limit gets lost. When either `f` or `g` is not a built-in simplifying function, the limit is retained. These results are all for `a` equal to 1, but I get the same behavior for other values of `a`. ``` (%i2) limit (integrate (abs(x) * cos(x), x), x, 1); / [ (%o2) I cos(x) abs(x) dx ] / (%i3) limit (integrate (abs(x) * exp(x), x), x, 1); / [ x (%o3) I %e abs(x) dx ] / (%i4) limit (integrate (bessel_j(0, x) * exp(x), x), x, 1); / [ x (%o4) I bessel_j(0, x) %e dx ] / (%i5) limit (integrate (bessel_j(0, x) * unit_step(x), x), x, 1); / [ (%o5) I bessel_j(0, x) unit_step(x) dx ] / ``` Here are some correct results with undefined functions `foo` and `baz`. ``` (%i6) limit (integrate (bessel_j(0, x) * foo(x), x), x, 1); / [ (%o6) limit I bessel_j(0, x) foo(x) dx x -> 1 ] / (%i7) limit (integrate (baz(0, x) * unit_step(x), x), x, 1); / [ (%o7) limit I baz(0, x) unit_step(x) dx x -> 1 ] / (%i8) limit (integrate (baz(0, x) * foo(x), x), x, 1); / [ (%o8) limit I baz(0, x) foo(x) dx x -> 1 ] / ``` Not sure what's going on here. I think this bug is at the root of the incorrect result from `fourier` which was mentioned on maxima-discuss 2024-03-15. --- Sent from sourceforge.net because max...@li... is subscribed to https://sourceforge.net/p/maxima/bugs/ To unsubscribe from further messages, a project admin can change settings at https://sourceforge.net/p/maxima/admin/bugs/options. Or, if this is a mailing list, you can unsubscribe from the mailing list. |
From: Robert D. <rob...@us...> - 2024-03-17 18:12:10
|
Simpler example. `foo` is a function which has a trivial OPERATORS property courtesy of `tellsimpafter`. That's enough so that it fails LIMUNKNOWN and goes on to the stuff farther down in TOPLEVEL-$LIMIT. ``` (%i2) tellsimpafter (foo(1), 0); (%o2) [foorule1, false] (%i3) limit (integrate (foo(x), x), x, a); / [ (%o3) I foo(x) dx ] / ``` --- **[bugs:#4273] limit(integrate(f(x)*g(x), x), x, a) incorrect results** **Status:** open **Group:** None **Labels:** limit integrate **Created:** Sat Mar 16, 2024 05:38 AM UTC by Robert Dodier **Last Updated:** Sun Mar 17, 2024 05:29 AM UTC **Owner:** nobody `limit(integrate(f(x)*g(x), x), x, a)` yields incorrect results when both `f` and `g` are built-in simplifying functions. The correct result is a limit noun (containing an integral noun), but the limit gets lost. When either `f` or `g` is not a built-in simplifying function, the limit is retained. These results are all for `a` equal to 1, but I get the same behavior for other values of `a`. ``` (%i2) limit (integrate (abs(x) * cos(x), x), x, 1); / [ (%o2) I cos(x) abs(x) dx ] / (%i3) limit (integrate (abs(x) * exp(x), x), x, 1); / [ x (%o3) I %e abs(x) dx ] / (%i4) limit (integrate (bessel_j(0, x) * exp(x), x), x, 1); / [ x (%o4) I bessel_j(0, x) %e dx ] / (%i5) limit (integrate (bessel_j(0, x) * unit_step(x), x), x, 1); / [ (%o5) I bessel_j(0, x) unit_step(x) dx ] / ``` Here are some correct results with undefined functions `foo` and `baz`. ``` (%i6) limit (integrate (bessel_j(0, x) * foo(x), x), x, 1); / [ (%o6) limit I bessel_j(0, x) foo(x) dx x -> 1 ] / (%i7) limit (integrate (baz(0, x) * unit_step(x), x), x, 1); / [ (%o7) limit I baz(0, x) unit_step(x) dx x -> 1 ] / (%i8) limit (integrate (baz(0, x) * foo(x), x), x, 1); / [ (%o8) limit I baz(0, x) foo(x) dx x -> 1 ] / ``` Not sure what's going on here. I think this bug is at the root of the incorrect result from `fourier` which was mentioned on maxima-discuss 2024-03-15. --- Sent from sourceforge.net because max...@li... is subscribed to https://sourceforge.net/p/maxima/bugs/ To unsubscribe from further messages, a project admin can change settings at https://sourceforge.net/p/maxima/admin/bugs/options. Or, if this is a mailing list, you can unsubscribe from the mailing list. |
From: Robert D. <rob...@us...> - 2024-03-17 17:54:22
|
I dunno, it seems like the bug is in `limit` itself; it's return just the `integrate` noun instead of `limit(integrate(...), ...)`. More about that in https://sourceforge.net/p/maxima/bugs/4273/. I think fixing 4273 might also fix this one -- it might not, but anyway I think we should postpone changes to `ldefint` pending resolution of 4273. --- **[bugs:#4275] ldefint returns zero** **Status:** open **Group:** None **Labels:** ldefinit definite integral **Created:** Sun Mar 17, 2024 03:24 PM UTC by Barton Willis **Last Updated:** Sun Mar 17, 2024 05:44 PM UTC **Owner:** nobody Rubbish: ~~~ (%i3) ldefint(floor(x)*exp(x),x,2,3); (%o3) 0 ~~~ I think that the problem is that `ldefint` needs to check when `sinint` returns an integration nounform. --- Sent from sourceforge.net because max...@li... is subscribed to https://sourceforge.net/p/maxima/bugs/ To unsubscribe from further messages, a project admin can change settings at https://sourceforge.net/p/maxima/admin/bugs/options. Or, if this is a mailing list, you can unsubscribe from the mailing list. |
From: Barton W. <wil...@us...> - 2024-03-17 17:44:42
|
Here is a proposed fix: ~~~ (defmfun $ldefint (exp var ll ul) (let (($logabs t) (ans (sinint exp var)) (a1) (a2)) (cond ((among '%integrate ans) (ftake '%integrate exp var ll ul)) (t (setq a1 (toplevel-$limit ans var ul '$minus)) (setq a2 (toplevel-$limit ans var ll '$plus)) (when (member a1 '($inf $minf $infinity $und $ind) :test #'eq) (setq a1 (nounlimit ans var ul))) (when (member arg2 '($inf $minf $infinity $und $ind) :test #'eq) (setq a2 (nounlimit ans var ul))) ($expand (sub a1 a2)))))) ~~~ With this code, I get ~~~ (%i9) ldefint(floor(x)*exp(x),x,2,3); (%o9) integrate(%e^x*floor(x),x,2,3) ~~~ The `ldefinit` code assumes that the value returned by `sinint` is continuous. I think that's not always the case. --- **[bugs:#4275] ldefint returns zero** **Status:** open **Group:** None **Labels:** ldefinit definite integral **Created:** Sun Mar 17, 2024 03:24 PM UTC by Barton Willis **Last Updated:** Sun Mar 17, 2024 03:24 PM UTC **Owner:** nobody Rubbish: ~~~ (%i3) ldefint(floor(x)*exp(x),x,2,3); (%o3) 0 ~~~ I think that the problem is that `ldefint` needs to check when `sinint` returns an integration nounform. --- Sent from sourceforge.net because max...@li... is subscribed to https://sourceforge.net/p/maxima/bugs/ To unsubscribe from further messages, a project admin can change settings at https://sourceforge.net/p/maxima/admin/bugs/options. Or, if this is a mailing list, you can unsubscribe from the mailing list. |
From: Barton W. <wil...@us...> - 2024-03-17 15:25:00
|
--- **[bugs:#4275] ldefint returns zero** **Status:** open **Group:** None **Labels:** ldefinit definite integral **Created:** Sun Mar 17, 2024 03:24 PM UTC by Barton Willis **Last Updated:** Sun Mar 17, 2024 03:24 PM UTC **Owner:** nobody Rubbish: ~~~ (%i3) ldefint(floor(x)*exp(x),x,2,3); (%o3) 0 ~~~ I think that the problem is that `ldefint` needs to check when `sinint` returns an integration nounform. --- Sent from sourceforge.net because max...@li... is subscribed to https://sourceforge.net/p/maxima/bugs/ To unsubscribe from further messages, a project admin can change settings at https://sourceforge.net/p/maxima/admin/bugs/options. Or, if this is a mailing list, you can unsubscribe from the mailing list. |
From: Barton W. <wil...@us...> - 2024-03-17 10:17:09
|
--- **[bugs:#4274] remfun (fourie package)** **Status:** open **Group:** None **Labels:** remfun fourie **Created:** Sun Mar 17, 2024 10:17 AM UTC by Barton Willis **Last Updated:** Sun Mar 17, 2024 10:17 AM UTC **Owner:** nobody In part, the user documentation says ~~~ remfun (f, expr) replaces all occurrences of f (arg) by arg in expr. ~~~ But, I'd say that ~~~ (%i5) remfun(f,f(f(x))); (%o5) f(x) ~~~ doesn't replace "all occurrences of f (arg) by arg." Surely, `%o5` should be `x`, not `f(x)`. --- Sent from sourceforge.net because max...@li... is subscribed to https://sourceforge.net/p/maxima/bugs/ To unsubscribe from further messages, a project admin can change settings at https://sourceforge.net/p/maxima/admin/bugs/options. Or, if this is a mailing list, you can unsubscribe from the mailing list. |
From: Robert D. <rob...@us...> - 2024-03-17 05:29:56
|
Looks like `f` and `g` being simplifying functions causes LIMUNKNOWN (src/limit.lisp) to return NIL. (Turns out user-defined simplifications are treated the same -- LIMUNKNOWN1 just looks for the property OPERATORS which, for the record, names the simplifier function). When either `f` or `g` isn't a simplifying function, LIMUNKNOWN returns T, and TOPLEVEL-$LIMIT returns `((%LIMIT) ((%INTEGRATE) ...) ...)` (correctly keeping the limit). So the issue, I believe, is that TOPLEVEL-$LIMIT is failing to paste the %LIMIT back onto the expression if LIMUNKNOWN returns NIL. --- **[bugs:#4273] limit(integrate(f(x)*g(x), x), x, a) incorrect results** **Status:** open **Group:** None **Labels:** limit integrate **Created:** Sat Mar 16, 2024 05:38 AM UTC by Robert Dodier **Last Updated:** Sat Mar 16, 2024 05:38 AM UTC **Owner:** nobody `limit(integrate(f(x)*g(x), x), x, a)` yields incorrect results when both `f` and `g` are built-in simplifying functions. The correct result is a limit noun (containing an integral noun), but the limit gets lost. When either `f` or `g` is not a built-in simplifying function, the limit is retained. These results are all for `a` equal to 1, but I get the same behavior for other values of `a`. ``` (%i2) limit (integrate (abs(x) * cos(x), x), x, 1); / [ (%o2) I cos(x) abs(x) dx ] / (%i3) limit (integrate (abs(x) * exp(x), x), x, 1); / [ x (%o3) I %e abs(x) dx ] / (%i4) limit (integrate (bessel_j(0, x) * exp(x), x), x, 1); / [ x (%o4) I bessel_j(0, x) %e dx ] / (%i5) limit (integrate (bessel_j(0, x) * unit_step(x), x), x, 1); / [ (%o5) I bessel_j(0, x) unit_step(x) dx ] / ``` Here are some correct results with undefined functions `foo` and `baz`. ``` (%i6) limit (integrate (bessel_j(0, x) * foo(x), x), x, 1); / [ (%o6) limit I bessel_j(0, x) foo(x) dx x -> 1 ] / (%i7) limit (integrate (baz(0, x) * unit_step(x), x), x, 1); / [ (%o7) limit I baz(0, x) unit_step(x) dx x -> 1 ] / (%i8) limit (integrate (baz(0, x) * foo(x), x), x, 1); / [ (%o8) limit I baz(0, x) foo(x) dx x -> 1 ] / ``` Not sure what's going on here. I think this bug is at the root of the incorrect result from `fourier` which was mentioned on maxima-discuss 2024-03-15. --- Sent from sourceforge.net because max...@li... is subscribed to https://sourceforge.net/p/maxima/bugs/ To unsubscribe from further messages, a project admin can change settings at https://sourceforge.net/p/maxima/admin/bugs/options. Or, if this is a mailing list, you can unsubscribe from the mailing list. |
From: Robert D. <rob...@us...> - 2024-03-16 05:38:40
|
--- **[bugs:#4273] limit(integrate(f(x)*g(x), x), x, a) incorrect results** **Status:** open **Group:** None **Labels:** limit integrate **Created:** Sat Mar 16, 2024 05:38 AM UTC by Robert Dodier **Last Updated:** Sat Mar 16, 2024 05:38 AM UTC **Owner:** nobody `limit(integrate(f(x)*g(x), x), x, a)` yields incorrect results when both `f` and `g` are built-in simplifying functions. The correct result is a limit noun (containing an integral noun), but the limit gets lost. When either `f` or `g` is not a built-in simplifying function, the limit is retained. These results are all for `a` equal to 1, but I get the same behavior for other values of `a`. ``` (%i2) limit (integrate (abs(x) * cos(x), x), x, 1); / [ (%o2) I cos(x) abs(x) dx ] / (%i3) limit (integrate (abs(x) * exp(x), x), x, 1); / [ x (%o3) I %e abs(x) dx ] / (%i4) limit (integrate (bessel_j(0, x) * exp(x), x), x, 1); / [ x (%o4) I bessel_j(0, x) %e dx ] / (%i5) limit (integrate (bessel_j(0, x) * unit_step(x), x), x, 1); / [ (%o5) I bessel_j(0, x) unit_step(x) dx ] / ``` Here are some correct results with undefined functions `foo` and `baz`. ``` (%i6) limit (integrate (bessel_j(0, x) * foo(x), x), x, 1); / [ (%o6) limit I bessel_j(0, x) foo(x) dx x -> 1 ] / (%i7) limit (integrate (baz(0, x) * unit_step(x), x), x, 1); / [ (%o7) limit I baz(0, x) unit_step(x) dx x -> 1 ] / (%i8) limit (integrate (baz(0, x) * foo(x), x), x, 1); / [ (%o8) limit I baz(0, x) foo(x) dx x -> 1 ] / ``` Not sure what's going on here. I think this bug is at the root of the incorrect result from `fourier` which was mentioned on maxima-discuss 2024-03-15. --- Sent from sourceforge.net because max...@li... is subscribed to https://sourceforge.net/p/maxima/bugs/ To unsubscribe from further messages, a project admin can change settings at https://sourceforge.net/p/maxima/admin/bugs/options. Or, if this is a mailing list, you can unsubscribe from the mailing list. |
From: Stavros M. <mac...@us...> - 2024-03-14 01:05:17
|
If the top level is in relational-ops or other-infix-ops or is a programming operator (mdo, mcond, mreturn, ...), it's an error. It would be nice if we could say that any verb is disallowed, but unfortunately undefined functions look like verbs -- op(sin(x)) is a noun, but op(f(x)) is a verb. --- **[bugs:#4268] gcd doesn't check type of arguments** **Status:** open **Group:** None **Labels:** gcd **Created:** Wed Feb 28, 2024 03:34 PM UTC by Stavros Macrakis **Last Updated:** Wed Mar 13, 2024 11:34 PM UTC **Owner:** nobody `gcd([4,6],[4,6)` returns `[4,6]` and `gcd([4,6],[6,4])` returns 1. Both of these should be errors because `gcd` is not defined on lists. If we want to define it as point-wise gcd (not especially useful), I suppose the results should be `[1,1]` and `[2,2]`, but that isn't specified anywhere. --- Sent from sourceforge.net because max...@li... is subscribed to https://sourceforge.net/p/maxima/bugs/ To unsubscribe from further messages, a project admin can change settings at https://sourceforge.net/p/maxima/admin/bugs/options. Or, if this is a mailing list, you can unsubscribe from the mailing list. |
From: Raymond T. <rt...@us...> - 2024-03-13 23:37:23
|
First, I think the example using `limit` works, because `integrate` sees `sin(n*x)^2`, so that naturally works. Given how maxima works, presumably, the approach would be to ask if `n = m`, or, more likely if `n-m` is zero or non-zero. --- **[bugs:#4265] integrate(sin(m*x)*sin(n*x), x, 0, 2*%pi) unconditionally zero** **Status:** open **Group:** None **Labels:** integrate defint **Created:** Thu Feb 22, 2024 02:42 PM UTC by Jakub Benda **Last Updated:** Thu Feb 22, 2024 08:10 PM UTC **Owner:** nobody Integrating a product of two sine functions sin(mx) sin(nx) over (0,2pi), where m and n are integers, should give 0 for m != n, and pi for m == n. However, Maxima 5.47.0 outputs 0 unconditionally. Interestingly, when I wrap the integrand into "limit(..., m, n)" the program reports the correct number. ~~~ Loading /home/jakub/.maxima/maxima-init.mac Maxima 5.47.0 https://maxima.sourceforge.io using Lisp CLISP 2.49.92 (2018-02-18) Distributed under the GNU Public License. See the file COPYING. Dedicated to the memory of William Schelter. The function bug_report() provides bug reporting information. (%i1) declare(m, integer, n, integer)$ (%i2) integrate(sin(m*x)*sin(m*x), x, 0, 2*%pi); (%o2) %pi (%i3) integrate(sin(m*x)*sin(n*x), x, 0, 2*%pi); (%o3) 0 (%i4) integrate(limit(sin(m*x)*sin(n*x), m, n), x, 0, 2*%pi); (%o4) %pi (%i5) bug_report(); Please report bugs to: https://sourceforge.net/p/maxima/bugs To report a bug, you must have a Sourceforge account. Please include the following information with your bug report: ------------------------------------------------------------- Maxima-version: "5.47.0" Maxima build date: "2023-06-06 11:24:35" Host type: "x86_64-suse-linux-gnu" Lisp implementation type: "CLISP" Lisp implementation version: "2.49.92 (2018-02-18) (built on build75 [127.0.0.1])" User dir: "/home/jakub/.maxima" Temp dir: "/tmp" Object dir: "/home/jakub/.maxima/binary/5_47_0/clisp/2_49_92__2018_02_18___built_on_build75__127_0_0_1__" Frontend: false ------------------------------------------------------------- The above information is also reported by the function 'build_info()'. ~~~ --- Sent from sourceforge.net because max...@li... is subscribed to https://sourceforge.net/p/maxima/bugs/ To unsubscribe from further messages, a project admin can change settings at https://sourceforge.net/p/maxima/admin/bugs/options. Or, if this is a mailing list, you can unsubscribe from the mailing list. |
From: Raymond T. <rt...@us...> - 2024-03-13 23:34:14
|
Is the intent to throw an error if the (either) arg is a list? What about other things like `gcd(a=b, c=d)`? Or `gcd(matrix([1]), matrix([2]))`. Presumably these are all errors. What are the valid types for the args of `gcd`? --- **[bugs:#4268] gcd doesn't check type of arguments** **Status:** open **Group:** None **Labels:** gcd **Created:** Wed Feb 28, 2024 03:34 PM UTC by Stavros Macrakis **Last Updated:** Mon Mar 04, 2024 09:20 PM UTC **Owner:** nobody `gcd([4,6],[4,6)` returns `[4,6]` and `gcd([4,6],[6,4])` returns 1. Both of these should be errors because `gcd` is not defined on lists. If we want to define it as point-wise gcd (not especially useful), I suppose the results should be `[1,1]` and `[2,2]`, but that isn't specified anywhere. --- Sent from sourceforge.net because max...@li... is subscribed to https://sourceforge.net/p/maxima/bugs/ To unsubscribe from further messages, a project admin can change settings at https://sourceforge.net/p/maxima/admin/bugs/options. Or, if this is a mailing list, you can unsubscribe from the mailing list. |
From: Raymond T. <rt...@us...> - 2024-03-13 23:27:01
|
Perhaps it's the `mterpri` call in `output-linear-one-line` in "displa.lisp". I commented out the call and your "~m" example prints "12345". But if I try `printf(true, "~M~%", i)`, no new line is printed either. I guess whatever handles "~%" really need to force a new line. I didn't look into that. --- **[bugs:#4271] printf tilde-m outputs a line termination even when there is none in control string** **Status:** open **Group:** None **Labels:** printf **Created:** Mon Mar 04, 2024 01:08 PM UTC by Robert Dodier **Last Updated:** Mon Mar 04, 2024 01:08 PM UTC **Owner:** nobody The `~m` directive for `printf` displays expressions via the pretty printer. `printf` always outputs a line termination, even when there is none in the control string. Just one extra line termination is printed for the whole control string, not one per `~m` directive. ``` (%i1) for i thru 5 do printf(true, "~a", i); 12345(%o1) done (%i2) for i thru 5 do printf(true, "~m", i); 1 2 3 4 5 (%o2) done (%i3) for i thru 5 do printf(true, "~m ~m ~m", i, i+1, i+2); 1 2 3 2 3 4 3 4 5 4 5 6 5 6 7 (%o3) done ``` To handle `~m`, `printf` calls AFORMAT, which punts to MFORMAT. I looked around in src/mformt,lisp and src/mforma.lisp, and I don't see an obvious way to suppress the line termination. --- Sent from sourceforge.net because max...@li... is subscribed to https://sourceforge.net/p/maxima/bugs/ To unsubscribe from further messages, a project admin can change settings at https://sourceforge.net/p/maxima/admin/bugs/options. Or, if this is a mailing list, you can unsubscribe from the mailing list. |
From: Stavros M. <mac...@us...> - 2024-03-13 18:04:18
|
Yes, **asksign** is certainly weak in many ways. But it should always fail safe -- if it can't determine the correct answer, it should ask the user. In this case, it is giving not *incomplete*, but *incorrect* and *inconsistent* results. If there are other cases where **asksign** returns incorrect or inconsistent results, we must fix them, not use them as an excuse for giving incorrect results in other cases. --- **[bugs:#4270] asksign asks for sign of difference or logarithm even when assume_pos is enabled** **Status:** open **Group:** None **Labels:** asksign assume_pos assume_pos_pred **Created:** Sun Mar 03, 2024 10:06 PM UTC by Robert Dodier **Last Updated:** Wed Mar 13, 2024 05:26 AM UTC **Owner:** nobody The flag `assume_pos` is supposed to tell `asksign` to return `pos` whenever `assume_pos_pred` returns `true` on the `asksign` argument. However, even when `assume_pos_pred` is a function which returns `true` for every expression, `asksign` asks for the sign of differences and logarithms. ``` (%i3) assume_pos: true $ (%i4) assume_pos_pred: lambda([e], print("HEY",e), true) $ (%i5) asksign (a); HEY a (%o5) pos (%i6) asksign (a*b; incorrect syntax: Missing ) asksign (a*b; ^ (%i6) asksign (a*b); HEY a HEY b (%o6) pos (%i7) asksign (foo(a)); HEY foo(a) (%o7) pos (%i8) asksign (a - b); HEY a HEY b HEY a HEY b Is b - a positive, negative or zero? n; (%o8) pos (%i9) asksign (a - b); HEY a HEY b HEY a HEY b Is b - a positive, negative or zero? p; (%o9) neg (%i10) asksign (log(a)); HEY a HEY a HEY a HEY a HEY a HEY a HEY a HEY a HEY a Is a - 1 positive, negative or zero? n; (%o10) neg ``` Looks like asksign of a logarithm gets turned into a difference, so fixing the asksign difference bug will probably fix the logarithm too. This is a longstanding bug; I observed in version 3a26747 from last year. If the current behavior has some rationale, we should figure out what that is, and put it in the documentation. As it stands, there is a note about this bug in the documentation for `assume_pos`: ``` However, there is no way to bypass all ‘asksign’ queries. In particular, when the ‘asksign’ argument is a difference ‘<x> - <y>’ or a logarithm ‘log(<x>)’, ‘asksign’ always requests an input from the user, even when ‘assume_pos’ is ‘true’ and ‘assume_pos_pred’ is a function which returns ‘true’ for all arguments. ``` --- Sent from sourceforge.net because max...@li... is subscribed to https://sourceforge.net/p/maxima/bugs/ To unsubscribe from further messages, a project admin can change settings at https://sourceforge.net/p/maxima/admin/bugs/options. Or, if this is a mailing list, you can unsubscribe from the mailing list. |
From: Robert D. <rob...@us...> - 2024-03-13 05:26:42
|
I dunno, does that example show a reason that **assume_pos** should not apply to differences? I don't think it does; Maxima's **assume** mechanism has all kinds of weaknesses like that. In the case you showed, `sign(b - a - 1)` returning **pnz** is a weakness, but not incorrect. Note that `sign(a - b + 1)` also returns **pnz** -- another weakness. For the specific example of a difference being presented a `this - that` vs `that - this`, **sign** seems to figure it out correctly. ``` (%i2) assume (i > j); (%o2) [i > j] (%i3) sign (i - j); (%o3) pos (%i4) sign (j - i); (%o4) neg (%i5) forget (i > j); (%o5) [i > j] (%i6) [asksign (i - j), asksign (j - i)]; Is j - i positive, negative or zero? n; (%o6) [pos, neg] ``` I didn't try more complex examples; maybe there are cases in which **sign** can't figure out the sign of `that - this` even though it knows `this - that`. Even if there are cases like that, I'm not yet convinced that's a reason to give up on **assume_pos**. --- **[bugs:#4270] asksign asks for sign of difference or logarithm even when assume_pos is enabled** **Status:** open **Group:** None **Labels:** asksign assume_pos assume_pos_pred **Created:** Sun Mar 03, 2024 10:06 PM UTC by Robert Dodier **Last Updated:** Mon Mar 04, 2024 03:42 PM UTC **Owner:** nobody The flag `assume_pos` is supposed to tell `asksign` to return `pos` whenever `assume_pos_pred` returns `true` on the `asksign` argument. However, even when `assume_pos_pred` is a function which returns `true` for every expression, `asksign` asks for the sign of differences and logarithms. ``` (%i3) assume_pos: true $ (%i4) assume_pos_pred: lambda([e], print("HEY",e), true) $ (%i5) asksign (a); HEY a (%o5) pos (%i6) asksign (a*b; incorrect syntax: Missing ) asksign (a*b; ^ (%i6) asksign (a*b); HEY a HEY b (%o6) pos (%i7) asksign (foo(a)); HEY foo(a) (%o7) pos (%i8) asksign (a - b); HEY a HEY b HEY a HEY b Is b - a positive, negative or zero? n; (%o8) pos (%i9) asksign (a - b); HEY a HEY b HEY a HEY b Is b - a positive, negative or zero? p; (%o9) neg (%i10) asksign (log(a)); HEY a HEY a HEY a HEY a HEY a HEY a HEY a HEY a HEY a Is a - 1 positive, negative or zero? n; (%o10) neg ``` Looks like asksign of a logarithm gets turned into a difference, so fixing the asksign difference bug will probably fix the logarithm too. This is a longstanding bug; I observed in version 3a26747 from last year. If the current behavior has some rationale, we should figure out what that is, and put it in the documentation. As it stands, there is a note about this bug in the documentation for `assume_pos`: ``` However, there is no way to bypass all ‘asksign’ queries. In particular, when the ‘asksign’ argument is a difference ‘<x> - <y>’ or a logarithm ‘log(<x>)’, ‘asksign’ always requests an input from the user, even when ‘assume_pos’ is ‘true’ and ‘assume_pos_pred’ is a function which returns ‘true’ for all arguments. ``` --- Sent from sourceforge.net because max...@li... is subscribed to https://sourceforge.net/p/maxima/bugs/ To unsubscribe from further messages, a project admin can change settings at https://sourceforge.net/p/maxima/admin/bugs/options. Or, if this is a mailing list, you can unsubscribe from the mailing list. |
From: Stavros M. <mac...@us...> - 2024-03-07 15:42:18
|
--- **[bugs:#4272] solve for sum should understand declare(sum,linear)** **Status:** open **Group:** None **Labels:** solve sum **Created:** Thu Mar 07, 2024 03:42 PM UTC by Stavros Macrakis **Last Updated:** Thu Mar 07, 2024 03:42 PM UTC **Owner:** nobody Consider ```` declare(sum,linear) qq: sum(i*(b+i),i,1,n) solve(qq,b)$ => fails ```` ``solve`` should take advantage of the declaration to recognize that the solved-for variable can be lifted from the summand: ```` expand(qq) => sum(i^2,i,1,n)+b*'sum(i,i,1,n) solve(%,b) => useful answer ```` This is of course not a bug, but a feature request. --- Sent from sourceforge.net because max...@li... is subscribed to https://sourceforge.net/p/maxima/bugs/ To unsubscribe from further messages, a project admin can change settings at https://sourceforge.net/p/maxima/admin/bugs/options. Or, if this is a mailing list, you can unsubscribe from the mailing list. |
From: Jaime E. V. <vi...@us...> - 2024-03-07 09:35:31
|
- **status**: open --> closed - **Comment**: Fixed with commit [2eae76] --- **[bugs:#4117] [Plotting] Unexpected Behaviour of run_viewer and gnu_term dumb** **Status:** closed **Group:** None **Labels:** plotting gnuplot **Created:** Sun Mar 12, 2023 05:33 AM UTC by Ryan Zhang **Last Updated:** Wed Mar 06, 2024 09:51 PM UTC **Owner:** Jaime E. Villate 1) plot2d(x, [x, 1, 2], [gnuplot_term, dumb], [run_viewer, true]); * running the cammand does not give you ASCII approximation. * It displays: * `(%i2) plot2d(x,[x,1,2],[gnuplot_term,dumb],[run_viewer,true]) (%o2) [/tmp/maxplot.txt]` 2) I think there is a mistake in the help doc of run_viewer: * https://maxima.sourceforge.io/docs/manual/maxima_65.html#run_005fviewer * There are two descriptions of "If the terminal is default" * Should it be 1 x "If the terminal is default" and 1 x "If the terminal is dumb"? My runtime details: Maxima version: "5.46.0" Maxima build date: "2023-02-18 16:21:37" Host type: "x86_64-unknown-linux-gnu" Lisp implementation type: "SBCL" Lisp implementation version: "2.3.1" User dir: "/home/udu/.maxima" Temp dir: "/tmp" Object dir: "/home/udu/.maxima/binary/5_46_0/sbcl/2_3_1" Frontend: false I also tried the current master branch, it gives the same results. --- Sent from sourceforge.net because max...@li... is subscribed to https://sourceforge.net/p/maxima/bugs/ To unsubscribe from further messages, a project admin can change settings at https://sourceforge.net/p/maxima/admin/bugs/options. Or, if this is a mailing list, you can unsubscribe from the mailing list. |
From: Jaime E. V. <vi...@us...> - 2024-03-06 21:51:00
|
- **assigned_to**: Jaime E. Villate --- **[bugs:#4117] [Plotting] Unexpected Behaviour of run_viewer and gnu_term dumb** **Status:** open **Group:** None **Labels:** plotting gnuplot **Created:** Sun Mar 12, 2023 05:33 AM UTC by Ryan Zhang **Last Updated:** Mon Mar 13, 2023 05:18 PM UTC **Owner:** Jaime E. Villate 1) plot2d(x, [x, 1, 2], [gnuplot_term, dumb], [run_viewer, true]); * running the cammand does not give you ASCII approximation. * It displays: * `(%i2) plot2d(x,[x,1,2],[gnuplot_term,dumb],[run_viewer,true]) (%o2) [/tmp/maxplot.txt]` 2) I think there is a mistake in the help doc of run_viewer: * https://maxima.sourceforge.io/docs/manual/maxima_65.html#run_005fviewer * There are two descriptions of "If the terminal is default" * Should it be 1 x "If the terminal is default" and 1 x "If the terminal is dumb"? My runtime details: Maxima version: "5.46.0" Maxima build date: "2023-02-18 16:21:37" Host type: "x86_64-unknown-linux-gnu" Lisp implementation type: "SBCL" Lisp implementation version: "2.3.1" User dir: "/home/udu/.maxima" Temp dir: "/tmp" Object dir: "/home/udu/.maxima/binary/5_46_0/sbcl/2_3_1" Frontend: false I also tried the current master branch, it gives the same results. --- Sent from sourceforge.net because max...@li... is subscribed to https://sourceforge.net/p/maxima/bugs/ To unsubscribe from further messages, a project admin can change settings at https://sourceforge.net/p/maxima/admin/bugs/options. Or, if this is a mailing list, you can unsubscribe from the mailing list. |
From: Jaime E. V. <vi...@us...> - 2024-03-06 21:50:23
|
- **assigned_to**: Jaime E. Villate --- **[bugs:#3849] plot2d incorrectly plots |xy|+1=|x|+|y|** **Status:** open **Group:** None **Labels:** plot2d implicit **Created:** Tue Sep 07, 2021 05:05 AM UTC by Iru Dog **Last Updated:** Tue Jan 02, 2024 03:31 AM UTC **Owner:** Jaime E. Villate I try to plot |xy|+1=|x|+|y| with the following: `plot2d(abs(x*y) + 1 = abs(x) + abs(y), [x,-2.5,2.5],[y,-2.5,2.5]);` Maxima only plots the |x|=1 part, and the |y|=1 part is missing. I try to use some other formula like `(x*x-1)*(y*y-1)=0`, it still only plots the |x|=1 part. --- Sent from sourceforge.net because max...@li... is subscribed to https://sourceforge.net/p/maxima/bugs/ To unsubscribe from further messages, a project admin can change settings at https://sourceforge.net/p/maxima/admin/bugs/options. Or, if this is a mailing list, you can unsubscribe from the mailing list. |
From: Jaime E. V. <vi...@us...> - 2024-03-06 21:23:41
|
- **status**: open --> closed - **Comment**: Fixed with commit [d7e14e]. The commands: ~~~ ii:makelist(i,i,100)$ plot2d ([discrete, ii, 100/ii], [x, 50, 100]); ~~~ now show a better plot and give the user a warning that 49 points have been clipped out of the plot. --- **[bugs:#4263] plot2d discrete with x range computes y range over all data, not restricted to x range** **Status:** closed **Group:** None **Labels:** plot2d discrete **Created:** Wed Feb 21, 2024 02:31 AM UTC by Robert Dodier **Last Updated:** Wed Feb 21, 2024 11:27 AM UTC **Owner:** nobody Working w/ version 3a26747 from Git on Linux. `plot2d([discrete, ...], [x, ...])` looks at the entire data set to figure out the y range, but it should only look at the points falling in the x range. ``` (%i2) ii: makelist (i, i, 1, 100) $ ``` Following plot shows the y range is 0 to 100, which is far too wide. ``` (%i3) plot2d ([discrete, ii, 100/ii], [x, 50, 100]); (%o3) false ``` Following plot shows actual range of data for x from 50 to 100. `plot2d` should find that by itself. ``` (%i4) plot2d ([discrete, ii, 100/ii], [x, 50, 100], [y, 0, 2]); (%o4) false ``` --- Sent from sourceforge.net because max...@li... is subscribed to https://sourceforge.net/p/maxima/bugs/ To unsubscribe from further messages, a project admin can change settings at https://sourceforge.net/p/maxima/admin/bugs/options. Or, if this is a mailing list, you can unsubscribe from the mailing list. |
From: Jaime E. V. <vi...@us...> - 2024-03-06 16:46:47
|
- **status**: open --> closed - **Comment**: Fixed with commit [0835e1]. The command ~~~ plot3d (x+y,[x,0,1],[y,0,1],[gnuplot_postamble,"#postamble"],[plot_format,gnuplot]); ~~~ Now shows correctly "#postamble" in the temporary file sent to Gnuplot, right before the splot command. --- **[bugs:#4269] plot3d ignores the option gnuplot_postamble** **Status:** closed **Group:** None **Labels:** plotting plot3d **Created:** Fri Mar 01, 2024 11:21 AM UTC by Jaime E. Villate **Last Updated:** Fri Mar 01, 2024 05:52 PM UTC **Owner:** Jaime E. Villate In file src/gnuplot_def.lisp, the method plot3d-command should print the user's postamble as done in the method plot2d-command. --- Sent from sourceforge.net because max...@li... is subscribed to https://sourceforge.net/p/maxima/bugs/ To unsubscribe from further messages, a project admin can change settings at https://sourceforge.net/p/maxima/admin/bugs/options. Or, if this is a mailing list, you can unsubscribe from the mailing list. |