Subversion Repositories wimsdev

Rev

Details | Last modification | View Log | RSS feed

Rev Author Line No. Line
2071 zjchen 1
 
2
!goto $wims_read_parm
3
 
4
:def
5
title=Definite integral
6
input=function
7
!exit
8
 
9
:proc
10
formula=!singlespace $formula
11
formula=!item 1 of $formula
12
formula=!rawmath $formula
13
x=!word 1 of $variable
14
!if $x=$empty
15
 t=!varlist nofn $formula
16
 t=!sort reverse item $t
17
 x=!item 1 of $t
18
!endif
19
!default x=x
20
range1=!trim $range1
21
range2=!trim $range2
22
!if $range1=$empty or $range2=$empty
23
 error=empty_data
24
 !exit
25
!endif
26
range1=!rawmath $range1
27
range2=!rawmath $range2
28
range1=!nospace $range1
29
range2=!nospace $range2
30
range1=!lower $range1
31
range2=!lower $range2
32
range1=!mathsubst infinity=inf in $range1
33
range1=!mathsubst infini=inf in $range1
34
range1=!mathsubst -inf=minf in $range1
35
range2=!mathsubst infinity=inf in $range2
36
range2=!mathsubst infini=inf in $range2
37
range2=!mathsubst -inf=minf in $range2
38
 
39
!if inf notvarof $formula and minf notvarof $formula
40
 result=!exec pari print(intnum($x=$range1,$range2,$formula,3));
41
!endif
42
!if (. isin $result and . notin $formula$range1$range2) or $result=$empty
43
 res2=!exec maxima integrate($formula,$x,$range1,$range2);
44
 res2=!lower $res2
45
 !if $res2!=$empty and . notin $res2 and integrate notin $res2
46
  t1=!char -2,-1 of $result
47
  t2=!char 1 to -3 of $result
48
  !if ($t1=.0 and $t2=$res2) or $result=$empty
49
   result=$res2
50
  !else
51
   result=$result = $res2
52
  !endif
53
 !endif
54
!endif
55
fn=!texmath $formula
56
range1=!mathsubst inf=infinity in $range1
57
range1=!mathsubst minf=-infinity in $range1
58
range2=!mathsubst inf=infinity in $range2
59
range2=!mathsubst minf=-infinity in $range2
60
r1=!texmath $range1
61
r2=!texmath $range2
62
rs=!texmath $result
63
!exit
64
 
65
:output
66
!instex $$$$ \int_{$r1}^{$r2}\left($fn\right)d$x = $rs $$$$
67
!exit
68