Revision: 2632
http://sourceforge.net/p/fricas/code/2632
Author: whebisch
Date: 2020-03-04 17:40:25 +0000 (Wed, 04 Mar 2020)
Log Message:
-----------
Better recognize exact equations
Modified Paths:
--------------
trunk/ChangeLog
trunk/src/algebra/nlode.spad
Modified: trunk/ChangeLog
===================================================================
--- trunk/ChangeLog 2020-03-04 17:39:33 UTC (rev 2631)
+++ trunk/ChangeLog 2020-03-04 17:40:25 UTC (rev 2632)
@@ -1,5 +1,10 @@
2020-03-04 Waldek Hebisch <
heb...@math.uni.wroc.pl>
+ * src/algebra/nlode.spad: Better recognize
+ exact equations
+
+2020-03-04 Waldek Hebisch <
heb...@math.uni.wroc.pl>
+
* src/algebra/intaf.spad, src/algebra/intalg.spad,
src/algebra/intef.spad, src/input/integ.input:
Handle recursion for algebraic integrals
Modified: trunk/src/algebra/nlode.spad
===================================================================
--- trunk/src/algebra/nlode.spad 2020-03-04 17:39:33 UTC (rev 2631)
+++ trunk/src/algebra/nlode.spad 2020-03-04 17:40:25 UTC (rev 2632)
@@ -39,7 +39,7 @@
checkRiccati : (F, F, K) -> Union(List F, "failed")
solveRiccati : (List F, OP, SY, F) -> Union(F, "failed")
partSolRiccati : (List F, OP, SY, F) -> Union(F, "failed")
- integratingFactor : (F, F, SY, SY) -> U
+ integratingFactor : (F, F, F, SY, SY) -> U
unk := new()$SY
kunk : K := kernel unk
@@ -55,7 +55,7 @@
mm := d * mm
nn := d * nn
-- look for an integrating factor mu
- (u := integratingFactor(mm, nn, unk, x)) case F =>
+ (u := integratingFactor(mm, nn, d, unk, x)) case F =>
mu := u::F
mm := mm * mu
nn := nn * mu
@@ -69,9 +69,10 @@
"failed"
-- look for an integrating factor
- integratingFactor(m, n, y, x) ==
+ integratingFactor(m, n, den, y, x) ==
-- check first for exactness
zero?(d := differentiate(m, y) - differentiate(n, x)) => 1
+ zero?(differentiate(m/den, y) - differentiate(n/den, x)) => 1/den
-- look for an integrating factor involving x only
not member?(y, variables(f := d / n)) => expint(f, x)
-- look for an integrating factor involving y only
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.