Subversion Repositories wimsdev

Rev

Rev 20 | Blame | Compare with Previous | Last modification | View Log | RSS feed

!set methtit2=Multiplicar una desigualdad por una expresión de signo constante
!set methtit=Multiplicar una desigualdad por una expresión
!set methenv=ZZ QQ RR
!set methparmtype=function,parm inequality >,choice,parm inequality >
!set methparmrelax=4
!set methhelp=Este método transforma una desigualdad como \(A > B) en\
   una desigualdad \(A*f > B*f) (o \(A*f < B*f)),\
   donde \(f) es una expresión algebraica\
   de signo constante. El método permite que \(f) se cancele. De ahí que\
   no necesariamente haya equivalencia entre la desigualdad inicial y la\
   transformada; por lo tanto, sólo se aplica a las hipótesis.

!if $wims_read_parm iswordof form check
  !goto $wims_read_parm
!endif

!exit
:form
Multiplicar la desigualdad
!read deduc/methparm.phtml 2
$ por la expresión
!read deduc/methparm.phtml 1,10
que es
!formselect methparm3 list 0,-1,1 prompt \
        $ch_choose, negativa o cero, positiva o cero
parce que
!set ch_optional=es un número
!read deduc/methparm.phtml 4
!exit
:check
!bound methparm3 within -1,0,1 default 0
!if $methparm3=0
  error=empty_data
  !exit
!endif
!distribute items $methparmobj2 into data,left,sign,right
!read deduc/sub/checkineq ($methparm1),=,0
ztest=$out
!if $ztest=true
  zr=zero
  sign2=>=
  !goto OK
!endif
!if $ztest=bad
  !if $methparm4<1
    :bad
    sens=!item ($methparm3+3)/2 of négatif, positif
    error=No veo por qué \($methparm1) es $sens.
    !exit
  !endif
  !distribute items $methparmobj4 into data,left2,sign2,right2
  gt=>
  lt=<
  eq=$(empty)=
  !if ($methparm3>0 and $lt isin $sign2) or \
          ($methparm3<0 and $gt isin $sign2)
    !exchange left2,right2
  !endif
  sens=!item ($methparm3+3)/2 of <,>
  !read deduc/sub/checkineq ($methparm1) - ($left2) + ($right2),$sens=,0\
        ($methparm1) - ($left2) + ($right2),=,0
  !distribute line $out into sn,zr
  !if $sn!=true
    !goto bad
  !endif
!else
  !if ($methparm1)*$methparm3<0
    error=¡Error de signo!
    !exit
  !endif
!endif
:OK
methexp=Multiplicar \($left $sign $right) por \($methparm1)

!read deduc/sub/simplify ($left) * ($methparm1)\
        ($right) * ($methparm1)
!distribute lines $out into newleft,newright
!if $newleft=$empty or $newright=$empty
  error=bad_data
  !exit
!endif
!if $methparm3<0
  newsign=!translate internal <> to >< in $sign
!else
  newsign=$sign
!endif
newobject2=$newleft $newsign $newright
!if $eq notin $sign and $zr=true and $eq isin $sign2
  newsign=$newsign=
  newobject0=$newobject2
  oldobject=0
!else
  oldobject=2
!endif

badsign=!translate internal <> to >< in $newsign
resultlist=$newobject2,\
        $newright $newsign $newleft,\
        $newleft $badsign $newright
!exit