Rev 16209 | Details | Compare with Previous | Last modification | View Log | RSS feed
Rev | Author | Line No. | Line |
---|---|---|---|
20 | reyssat | 1 | !set methtit=Reverse change of variable |
2 | !set methenv=ZZ QQ RR |
||
3 | !set methparmtype=parm function integrate, function, function |
||
4 | !set methhelp=This method applies the reverse change of variable for an\ |
||
16209 | bpr | 5 | indefinite integral. |
20 | reyssat | 6 | |
7 | !if $wims_read_parm iswordof form check |
||
16120 | bpr | 8 | !goto $wims_read_parm |
20 | reyssat | 9 | !endif |
10 | |||
11 | !exit |
||
12 | :form |
||
16120 | bpr | 13 | !set N=!linecnt $mtobj1 |
14 | !if $N>1 and $methsubstep=1 |
||
20 | reyssat | 15 | :first |
16 | !set methsubstep=2 |
||
16135 | bpr | 17 | Apply a reverse change of variable for: |
18 | <p> |
||
20 | reyssat | 19 | !read deduc/methparm.phtml 1 |
16135 | bpr | 20 | </p> |
16120 | bpr | 21 | !else |
20 | reyssat | 22 | !bound methparm1 between integer 0 and $N default 1 |
23 | !if $methparm1=0 or $error!=$empty |
||
16120 | bpr | 24 | !goto first |
20 | reyssat | 25 | !endif |
17187 | bpr | 26 | <input type="hidden" name="methparm1" value="$methparm1"> |
20 | reyssat | 27 | !set methsubstep=1 |
28 | !set l=!line $methparm1 of $mtobj1 |
||
29 | !set l=!item 2 to -1 of $l |
||
30 | !set k=!mathsubst integrate= in $l |
||
31 | !set k=!declosing $k |
||
32 | !set v=!item 2 of $k |
||
33 | !set nvar=!item 1 of $newvariables |
||
17187 | bpr | 34 | Reverse change of variable for \($l): putting <br> |
20 | reyssat | 35 | \($nvar = h($v) = ) |
36 | !read deduc/methparm.phtml 2,18 |
||
37 | , one has |
||
5763 | bpr | 38 | <div class="wimscenter"> |
20 | reyssat | 39 | \($l = integrate(f(h($v))h'($v)d$v) = integrate(f($nvar)d$nvar)) , |
5763 | bpr | 40 | </div> |
20 | reyssat | 41 | where |
42 | \(f($nvar) = ) |
||
43 | !read deduc/methparm.phtml 3,36 |
||
16120 | bpr | 44 | . |
45 | !endif |
||
20 | reyssat | 46 | !exit |
47 | :check |
||
16120 | bpr | 48 | ker=!item 2 of $methparmobj1 |
49 | ker=!mathsubst integrate= in $ker |
||
50 | ker=!trim $ker |
||
51 | ker=!declosing $ker |
||
52 | !distribute items $ker into iker,ivar |
||
53 | vartest=!varlist $ivar |
||
54 | !if $ivar != $vartest |
||
20 | reyssat | 55 | error=Fail |
56 | !exit |
||
16120 | bpr | 57 | !endif |
20 | reyssat | 58 | |
16120 | bpr | 59 | newvar=!item 1 of $newvariables |
60 | vv=!varlist nofn $methparm2 |
||
61 | vtest=!listcomplement $ivar,e,pi,euler in $vv |
||
62 | !if $vtest!=$empty |
||
20 | reyssat | 63 | error=\(h($ivar)) must be a function of \($ivar) only. |
64 | !exit |
||
16120 | bpr | 65 | !endif |
66 | hprime=!exec maxima diff($methparm2,$ivar); |
||
67 | !if $hprime=$empty |
||
20 | reyssat | 68 | :bad_data |
69 | error=bad_data |
||
70 | !exit |
||
16120 | bpr | 71 | !endif |
72 | vv=!varlist nofn $methparm3 |
||
73 | vtest=!listcomplement $newvar,e,pi,euler in $vv |
||
74 | !if $vtest!=$empty |
||
75 | error=\(f($newvar)) doit être une fonction de \($newvar) uniquement. |
||
20 | reyssat | 76 | !exit |
16120 | bpr | 77 | !endif |
78 | substed=!mathsubst $newvar=($methparm2) in $methparm3 |
||
79 | !read deduc/sub/checkzero ($substed)*($hprime)-($iker)\ |
||
20 | reyssat | 80 | diff($methparm3,$newvar) |
16120 | bpr | 81 | !distribute lines $out into ztest,difftest |
82 | !if $ztest=$empty or $difftest=$empty |
||
20 | reyssat | 83 | !goto bad_data |
16120 | bpr | 84 | !endif |
85 | !if $ztest!=yes |
||
20 | reyssat | 86 | error=Bad formula for the change of variable! |
87 | !advance penalty |
||
88 | !exit |
||
16120 | bpr | 89 | !endif |
90 | |||
91 | !read deduc/sub/simplify $methparm3\ |
||
20 | reyssat | 92 | ($methparm3)*($newvar) |
16120 | bpr | 93 | !distribute lines $out into newker,res |
94 | !if $newker=$empty or $res=$empty |
||
20 | reyssat | 95 | !goto bad_data |
16120 | bpr | 96 | !endif |
97 | !if strictintegrate iswordof $m_options and $difftest=yes |
||
20 | reyssat | 98 | error=You don't have the right to put a constant for \(f($newvar)). \ |
99 | Please change the method. |
||
100 | !exit |
||
16120 | bpr | 101 | !endif |
20 | reyssat | 102 | |
16120 | bpr | 103 | !if $difftest=yes |
20 | reyssat | 104 | newobject1=($res) |
16120 | bpr | 105 | !else |
20 | reyssat | 106 | newobject1=integrate($newker,$newvar) |
16120 | bpr | 107 | !endif |
108 | oldobject=0,1 |
||
109 | newobject0=$newvar=$methparm2 |
||
110 | methexp=\($newvar=$methparm2) |
||
111 | variables=$variables,$newvar |
||
20 | reyssat | 112 | !exit |