Subversion Repositories wimsdev

Rev

Rev 16321 | 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
16321 bpr 4
!set methhelp=Este método aplica el cambio de variable\
5
    sobre una integración indefinida.
20 reyssat 6
 
7
!if $wims_read_parm iswordof form check
16321 bpr 8
  !goto $wims_read_parm
20 reyssat 9
!endif
10
 
11
!exit
12
:form
16321 bpr 13
!set N=!linecnt $mtobj1
14
!if $N>1 and $methsubstep=1
20 reyssat 15
  :first
16
  !set methsubstep=2
16321 bpr 17
  Aplicar un cambio de variable para:
20 reyssat 18
  !read deduc/methparm.phtml 1
16321 bpr 19
!else
20 reyssat 20
  !bound methparm1 between integer 0 and $N default 1
21
  !if $methparm1=0 or $error!=$empty
16321 bpr 22
    !goto first
20 reyssat 23
  !endif
17187 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
16321 bpr 32
  Cambio de variable:
33
  <div class="wimscenter">
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
.
16321 bpr 40
!endif
20 reyssat 41
!exit
42
:check
16321 bpr 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
20 reyssat 50
  error=Fail
51
  !exit
16321 bpr 52
!endif
20 reyssat 53
 
16321 bpr 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) debe ser una función de \($newvar) únicamente.
20 reyssat 59
  !exit
16321 bpr 60
!endif
61
diff=!exec maxima diff($methparm2,$newvar);
62
!if $diff=$empty
20 reyssat 63
  :bad_data
64
  error=bad_data
65
  !exit
16321 bpr 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
17187 bpr 73
  error=No se pudo encontrar la función recíproca de $methparm2
74
        necesaria para una mayor sustitución:
16321 bpr 75
        use el cambio de variable inversa.
20 reyssat 76
  !exit
16321 bpr 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)\
20 reyssat 82
	($substed)*($diff)*$newvar
16321 bpr 83
!distribute lines $out into newker,ktest
84
!if $newker=$empty or $ktest=$empty or $difftest=$empty
20 reyssat 85
  !goto bad_data
16321 bpr 86
!endif
87
 
88
!if strictintegrate iswordof $m_options and $difftest=yes
89
  error=Este cambio de variable no está autorizado para el ejercicio.\
90
        Por favor, cambie el método.
20 reyssat 91
  !exit
16321 bpr 92
!endif
20 reyssat 93
 
16321 bpr 94
!if $difftest=yes
20 reyssat 95
  newobject1=$ktest
16321 bpr 96
!else
20 reyssat 97
  newobject1=integrate($newker,$newvar)
16321 bpr 98
!endif
99
newobject0=$inv
100
oldobject=0,1
101
methexp=\($ivar=$methparm2)
102
variables=$variables,$newvar
20 reyssat 103
!exit