Go to the first, previous, next, last section, table of contents.

### `subst`, `psubst`

`subst(rat[,varn,ratn]*)`
`psubst(rat[,var,rat]*)`
  :: rat の varn に ratn を代入 (n=1,2,... で左から右に順次代入する).

return
  有理式
rat ratn
  有理式
varn
  不定元

- 有理式の特定の不定元に, 定数あるいは多項式, 有理式などを代入するのに用いる.
- `subst`(rat,var1,rat1,var2,rat2,...) は, `subst`(`subst`(rat,var1,rat1),var2,rat2,...) と同じ意味である.
- 入力の左側から順に代入を繰り返すために, 入力の順によって結果が変わることがある.
- `subst()` は, `sin()` などの函数の引数に対しても代入を行う. `psubst()` は, このような函数を一つの独立した不定元と見なして, そ の引数には代入は行わない. (partial substitution のつもり)
- Asir では, 有理式の約分は自動的には行わないため, 有理式の代入は, 思わぬ計算時間の増大を引き起こす場合がある. 有理式を代入する場合には, 問題に応じた独自の函数を書いて, なるべく分母, 分子が大きくならないように配慮することもしばしば必要となる.
- 分数を代入する場合も同様である.
- `subst`の引数ratがリスト,配列,行列,あるいは分散表現多項式で あった場合には, それぞれの要素または係数に対して再帰的に`subst`を 行う.

    [0] subst(x^3-3*y*x^2+3*y^2*x-y^3,y,2);
    x^3-6*x^2+12*x-8
    [1] subst(@@,x,-1);
    -27
    [2] subst(x^3-3*y*x^2+3*y^2*x-y^3,y,2,x,-1);
    -27
    [3] subst(x*y^3,x,y,y,x);
    x^4
    [4] subst(x*y^3,y,x,x,y);
    y^4
    [5] subst(x*y^3,x,t,y,x,t,y);
    y*x^3
    [6] subst(x*sin(x),x,t);
    sint(t)*t
    [7] psubst(x*sin(x),x,t);
    sin(x)*t

Go to the first, previous, next, last section, table of contents.