Rev 20 | Rev 7210 | Go to most recent revision | Details | Compare with Previous | Last modification | View Log | RSS feed
Rev | Author | Line No. | Line |
---|---|---|---|
20 | reyssat | 1 | !set methtit=Changement de variable direct |
2 | !set methenv=ZZ QQ RR |
||
3 | !set methparmtype=parm function integrate, function |
||
4 | !set methhelp=Cette méthode applique le changement de variable sur une\ |
||
5 | intégration indéfinie. |
||
6 | |||
7 | !if $wims_read_parm iswordof form check |
||
8 | !goto $wims_read_parm |
||
9 | !endif |
||
10 | |||
11 | !exit |
||
12 | :form |
||
13 | !set N=!linecnt $mtobj1 |
||
14 | !if $N>1 and $methsubstep=1 |
||
15 | :first |
||
16 | !set methsubstep=2 |
||
17 | Appliquer un changement de variable pour : <p> |
||
18 | !read deduc/methparm.phtml 1 |
||
19 | !else |
||
20 | !bound methparm1 between integer 0 and $N default 1 |
||
21 | !if $methparm1=0 or $error!=$empty |
||
22 | !goto first |
||
23 | !endif |
||
5763 | bpr | 24 | <input type=hidden name=methparm1 value=$methparm1/> |
20 | reyssat | 25 | !set methsubstep=1 |
26 | !set l=!line $methparm1 of $mtobj1 |
||
27 | !set l=!item 2 to -1 of $l |
||
28 | !set k=!mathsubst integrate= in $l |
||
29 | !set k=!declosing $k |
||
30 | !set v=!item 2 of $k |
||
31 | !set nvar=!item 1 of $newvariables |
||
32 | Changement de variable : |
||
5763 | bpr | 33 | <div class="wimscenter"> |
20 | reyssat | 34 | \($l = integrate(f($v),$v) = integrate(f(h($nvar))h'($nvar),$nvar)) , |
5763 | bpr | 35 | </div> |
20 | reyssat | 36 | avec |
37 | \($v = h($nvar) = ) |
||
38 | !read deduc/methparm.phtml 2,36 |
||
39 | . |
||
40 | !endif |
||
41 | !exit |
||
42 | :check |
||
43 | ker=!item 2 of $methparmobj1 |
||
44 | ker=!mathsubst integrate= in $ker |
||
45 | ker=!trim $ker |
||
46 | ker=!declosing $ker |
||
47 | !distribute items $ker into iker,ivar |
||
48 | vartest=!varlist $ivar |
||
49 | !if $ivar != $vartest |
||
50 | error=Fail |
||
51 | !exit |
||
52 | !endif |
||
53 | |||
54 | newvar=!item 1 of $newvariables |
||
55 | vv=!varlist nofn $methparm2 |
||
56 | vtest=!listcomplement $newvar,e,pi,euler in $vv |
||
57 | !if $vtest!=$empty |
||
58 | error=\($methparm2) doit être une fonction de \($newvar) uniquement. |
||
59 | !exit |
||
60 | !endif |
||
61 | diff=!exec maxima diff($methparm2,$newvar); |
||
62 | !if $diff=$empty |
||
63 | :bad_data |
||
64 | error=bad_data |
||
65 | !exit |
||
66 | !endif |
||
67 | inv=!exec maxima solve($ivar=$methparm2,$newvar); |
||
68 | inv=!declosing $inv |
||
69 | n=!itemcnt $inv |
||
70 | inv2=!nospace $inv |
||
71 | eq== |
||
72 | !if $n!=1 or +++**$newvar$eq notin +++**$inv2 |
||
73 | error=Impossible de trouver la fonction réciproque de $methparm2 nécessaire\ |
||
74 | pour la substitution ultérieure :\ |
||
75 | utilisez le changement de variable inverse. |
||
76 | !exit |
||
77 | !endif |
||
78 | substed=!mathsubst $ivar=($methparm2) in $iker |
||
79 | !read deduc/sub/checkzero diff(($substed)*($diff),$newvar) |
||
80 | difftest=$out |
||
81 | !read deduc/sub/simplify ($substed)*($diff)\ |
||
82 | ($substed)*($diff)*$newvar |
||
83 | !distribute lines $out into newker,ktest |
||
84 | !if $newker=$empty or $ktest=$empty or $difftest=$empty |
||
85 | !goto bad_data |
||
86 | !endif |
||
87 | |||
88 | !if strictintegrate iswordof $m_options and $difftest=yes |
||
89 | error=Ce changement de variable n'est pas autorisé pour l'exercice.\ |
||
90 | Changez la méthode s'il vous plait. |
||
91 | !exit |
||
92 | !endif |
||
93 | |||
94 | !if $difftest=yes |
||
95 | newobject1=$ktest |
||
96 | !else |
||
97 | newobject1=integrate($newker,$newvar) |
||
98 | !endif |
||
99 | newobject0=$inv |
||
100 | oldobject=0,1 |
||
101 | methexp=\($ivar=$methparm2) |
||
102 | variables=$variables,$newvar |
||
103 | !exit |
||
104 |