Menu

#4136 Desolve asks a question assume can't answer by default

None
open
nobody
5
2023-11-04
2023-04-30
No

First we define a differential equations and make sure that the thing desolve will have to warn about is true:

eq1:U_Supply=U_In(t)+L_Cable*diff(I_Cable(t),t);
eq2:I_C(t)=C_In*diff(U_In(t),t);
eq3:U_In(t)=R_Load*(I_Cable(t)-I_C(t));
assume(L_Cable*(4*C_In*R_Load^2-L_Cable)>0);
is(L_Cable*(4*C_In*R_Load^2-L_Cable)>0);

If we now run a desolve() the desolve() asks the thing we told assume(), but the assume() database cannot find it. For some reason I seem to be able to get two questions, one that matches the assume() and one that doesn't.

(%i6)   desolve([eq1,eq2,eq3],[U_In(t),I_Cable(t),I_C(t)]);
"Is "L_Cable*4*C_In*R_Load^2-L_Cable" positive, negative or zero?"

or:

(%i6)   desolve([eq1,eq2,eq3],[U_In(t),I_Cable(t),I_C(t)]);
Is L_Cable*(4*C_In*R_Load^2-L_Cable) positive, negative or zero?

No idea under which condition I get which of these questions.

If we run an additional expand()

assume(expand(L_Cable*(4*C_In*R_Load^2-L_Cable)>0)));

the assume database will be able to provide desolve with the answer of its question.

Discussion

  • Gunter Königsmann

    • summary: Desolve asks the wrong question --> Desolve asks a question assume can't answer by default
     
  • Raymond Toy

    Raymond Toy - 2023-04-30

    One point. You assume that L_Cable*(4*C_In*R_Load^2-L_Cable)is positive. But maxima is asking for the sign of L_Cable*4*C_In*R_Load^2-L_Cable. These aren't the same.

     
    • Gunter Königsmann

      I drag-and-dropped this from a maxima session.
      If I do that again I get:

      Is L_Cable*(4*C_In*R_Load^2-L_Cable) positive, negative or zero?
      

      which matches the assume() I did before.

       
  • Robert Dodier

    Robert Dodier - 2023-11-04
    • labels: --> desolve, asksign, assume
     

Log in to post a comment.