Subversion Repositories wimsdev

Rev

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