Subversion Repositories wimsdev

Rev

Rev 5763 | Go to most recent revision | Details | Last modification | View Log | RSS feed

Rev Author Line No. Line
2071 zjchen 1
!set methtit=变量的逆替换
2
!set methenv=ZZ QQ RR
3
!set methparmtype=parm function integrate, function, function
4
!set methhelp=本方法对不定积分应用变量逆替换.
5
 
6
!if $wims_read_parm iswordof form check
7
 !goto $wims_read_parm
8
!endif
9
 
10
!exit
11
:form
12
 !set N=!linecnt $mtobj1
13
 !if $N>1 and $methsubstep=1
14
  :first
15
  !set methsubstep=2
16
  施行变量逆替换: <p>
17
  !read deduc/methparm.phtml 1
18
 !else
19
  !bound methparm1 between integer 0 and $N default 1
20
  !if $methparm1=0 or $error!=$empty
21
   !goto first
22
  !endif
23
  <input type=hidden name=methparm1 value=$methparm1>
24
  !set methsubstep=1
25
  !set l=!line $methparm1 of $mtobj1
26
  !set l=!item 2 to -1 of $l
27
  !set k=!mathsubst integrate= in $l
28
  !set k=!declosing $k
29
  !set v=!item 2 of $k
30
  !set nvar=!item 1 of $newvariables
31
 对 \($l) 作变量逆替换: 令 <br>
32
  \($nvar = h($v) = )
33
  !read deduc/methparm.phtml 2,18
34
, 可得
35
  <p><center>
36
    \($l = integrate(f(h($v))h'($v)d$v) = integrate(f($nvar)d$nvar)) ,
37
  </center> <p>
38
  其中
39
  \(f($nvar) = )
40
  !read deduc/methparm.phtml 3,36
41
.
42
 !endif
43
!exit
44
:check
45
 ker=!item 2 of $methparmobj1
46
 ker=!mathsubst integrate= in $ker
47
 ker=!trim $ker
48
 ker=!declosing $ker
49
 !distribute items $ker into iker,ivar
50
 vartest=!varlist $ivar
51
 !if $ivar != $vartest
52
  error=失败
53
  !exit
54
 !endif
55
 
56
 newvar=!item 1 of $newvariables
57
 vv=!varlist nofn $methparm2
58
 vtest=!listcomplement $ivar,e,pi,euler in $vv
59
 !if $vtest!=$empty
60
  error=\(h($ivar)) 只能是 \($ivar) 的函数.
61
  !exit
62
 !endif
63
 hprime=!exec maxima diff($methparm2,$ivar);
64
 !if $hprime=$empty
65
  :bad_data
66
  error=bad_data
67
  !exit
68
 !endif
69
 vv=!varlist nofn $methparm3
70
 vtest=!listcomplement $newvar,e,pi,euler in $vv
71
 !if $vtest!=$empty
72
  error=\(f($newvar)) 只能是 \($newvar) 的函数.
73
  !exit
74
 !endif
75
 substed=!mathsubst $newvar=($methparm2) in $methparm3
76
 !read deduc/sub/checkzero ($substed)*($hprime)-($iker)\
77
    diff($methparm3,$newvar)
78
 !distribute lines $out into ztest,difftest
79
 !if $ztest=$empty or $difftest=$empty
80
  !goto bad_data
81
 !endif
82
 !if $ztest!=yes
83
  error=把错误公式应用于变量替换!
84
  !advance penalty
85
  !exit
86
 !endif
87
 
88
 !read deduc/sub/simplify $methparm3\
89
    ($methparm3)*($newvar)
90
 !distribute lines $out into newker,res
91
 !if $newker=$empty or $res=$empty
92
  !goto bad_data
93
 !endif
94
 !if strictintegrate iswordof $m_options and $difftest=yes
95
  error=你不能把 \(f($newvar)) 取成常数. \
96
    请换一个方法.
97
  !exit
98
 !endif
99
 
100
 !if $difftest=yes
101
  newobject1=($res)
102
 !else
103
  newobject1=integrate($newker,$newvar)
104
 !endif
105
 oldobject=0,1
106
 newobject0=$newvar=$methparm2
107
 methexp=\($newvar=$methparm2)
108
 variables=$variables,$newvar 
109
!exit
110