Subversion Repositories wimsdev

Rev

Rev 16120 | Details | Compare with Previous | Last modification | View Log | RSS feed

Rev Author Line No. Line
20 reyssat 1
!set methtit2=Multiplier une inégalité par une expression à signe constant
2
!set methtit=Multiplier une inégalité par une expression
3
!set methenv=ZZ QQ RR
4
!set methparmtype=function,parm inequality >,choice,parm inequality >
5
!set methparmrelax=4
6
!set methhelp=Cette méthode transforme une inégalité du style \(A > B) en\
16209 bpr 7
  une inégalité \(A*f > B*f) (ou \(A*f < B*f)),\
8
  où \(f) est une expression algébrique\
9
  de signe constant. La méthode permet à \(f) de s'annuler. De ce fait, il\
10
  n'y a pas forcément équivalence entre l'inégalité de départ et celle\
11
  transformée&nbsp;; elle s'applique donc uniquement sur les hypothèses.
20 reyssat 12
 
13
!if $wims_read_parm iswordof form check
16117 bpr 14
  !goto $wims_read_parm
20 reyssat 15
!endif
16
 
17
!exit
18
:form
16117 bpr 19
Multiplier l'inégalité
20
!read deduc/methparm.phtml 2
16120 bpr 21
$ par l'expression
16117 bpr 22
!read deduc/methparm.phtml 1,10
23
qui est
24
!formselect methparm3 list 0,-1,1 prompt \
20 reyssat 25
	$ch_choose, négative ou nulle, positive ou nulle
16117 bpr 26
parce que
27
!set ch_optional=c'est un nombre
28
!read deduc/methparm.phtml 4
20 reyssat 29
!exit
30
:check
16117 bpr 31
!bound methparm3 within -1,0,1 default 0
32
!if $methparm3=0
20 reyssat 33
  error=empty_data
34
  !exit
16117 bpr 35
!endif
36
!distribute items $methparmobj2 into data,left,sign,right
37
!read deduc/sub/checkineq ($methparm1),=,0
38
ztest=$out
39
!if $ztest=true
20 reyssat 40
  zr=zero
41
  sign2=>=
42
  !goto OK
16117 bpr 43
!endif
44
!if $ztest=bad
20 reyssat 45
  !if $methparm4<1
16117 bpr 46
    :bad
47
    sens=!item ($methparm3+3)/2 of négatif, positif
48
    error=Je ne vois pas pourquoi \($methparm1) est $sens.
49
    !exit
20 reyssat 50
  !endif
51
  !distribute items $methparmobj4 into data,left2,sign2,right2
52
  gt=>
53
  lt=<
54
  eq=$(empty)=
55
  !if ($methparm3>0 and $lt isin $sign2) or \
16117 bpr 56
	  ($methparm3<0 and $gt isin $sign2)
57
    !exchange left2,right2
20 reyssat 58
  !endif
59
  sens=!item ($methparm3+3)/2 of <,>
60
  !read deduc/sub/checkineq ($methparm1) - ($left2) + ($right2),$sens=,0\
61
	($methparm1) - ($left2) + ($right2),=,0
62
  !distribute line $out into sn,zr
63
  !if $sn!=true
16117 bpr 64
    !goto bad
20 reyssat 65
  !endif
16117 bpr 66
!else
20 reyssat 67
  !if ($methparm1)*$methparm3<0
16117 bpr 68
    error=Erreur de signe !
69
    !exit
20 reyssat 70
  !endif
16117 bpr 71
!endif
72
:OK
16209 bpr 73
methexp=Multiplier \($left $sign $right) par \($methparm1)
20 reyssat 74
 
16117 bpr 75
!read deduc/sub/simplify ($left) * ($methparm1)\
20 reyssat 76
	($right) * ($methparm1)
16117 bpr 77
!distribute lines $out into newleft,newright
78
!if $newleft=$empty or $newright=$empty
20 reyssat 79
  error=bad_data
80
  !exit
16117 bpr 81
!endif
82
!if $methparm3<0
20 reyssat 83
  newsign=!translate internal <> to >< in $sign
16117 bpr 84
!else
20 reyssat 85
  newsign=$sign
16117 bpr 86
!endif
87
newobject2=$newleft $newsign $newright
88
!if $eq notin $sign and $zr=true and $eq isin $sign2
20 reyssat 89
  newsign=$newsign=
90
  newobject0=$newobject2
91
  oldobject=0
16117 bpr 92
!else
20 reyssat 93
  oldobject=2
16117 bpr 94
!endif
20 reyssat 95
 
16117 bpr 96
badsign=!translate internal <> to >< in $newsign
97
resultlist=$newobject2,\
20 reyssat 98
	$newright $newsign $newleft,\
99
	$newleft $badsign $newright
100
!exit