Maple Professionel
Maple Académique
Maple Edition Étudiant
Maple Personal Edition
Maple Player
Maple Player for iPad
MapleSim Professionel
MapleSim Académique
Maple T.A. - Suite d'examens de classement
Maple T.A. MAA Placement Test Suite
Möbius - Didacticiels de mathématiques en ligne
Machine Design / Industrial Automation
Aéronautique
Ingénierie des véhicules
Robotics
Energie
System Simulation and Analysis
Model development for HIL
Modélisation du procédé pour la conception de systèmes de contrôle
Robotics/Motion Control/Mechatronics
Other Application Areas
Enseignement des mathématiques
Enseignement de l’ingénierie
Enseignement secondaire et supérieur (CPGE, BTS)
Tests et évaluations
Etudiants
Modélisation financière
Recherche opérationnelle
Calcul haute performance
Physique
Webinaires en direct
Webinaires enregistrés
Agenda des évènements
Forum MaplePrimes
Blog Maplesoft
Membres Maplesoft
Maple Ambassador Program
MapleCloud
Livres blancs techniques
Bulletin électronique
Livres Maple
Math Matters
Portail des applications
Galerie de modèles MapleSim
Cas d'Etudes Utilisateur
Exploring Engineering Fundamentals
Concepts d’enseignement avec Maple
Centre d’accueil utilisateur Maplesoft
Centre de ressources pour enseignants
Centre d’assistance aux étudiants
eval - 評価
使い方
eval(e, x=a)
eval(e, eqns)
eval(e)
eval(x, n)
パラメータ
e
-
式
x
普通は名前だが一般の式のこともある
a
eqns
等式のリストまたは集合
n
正の整数
説明
eval 関数のもっともよくある使い方は、式 e を与えられた点 x=a で評価することです。たとえば、eval(x^2+3*x+2,x=1); は多項式 x^2+3*x+2 を点 で評価して 6 を得ます。
eval コマンドは、1-D または 2-D の使い方を用いて入力できます。たとえば、eval(x^3 + 3*x + 2, x=1) は、次に相当します。.
2 番目の使い方では、eqns は等式の集合またはリストですが、式 e は与えられたすべての点 (または式) において同時に評価されます。
通常、等式の左辺は評価される変数名です。しかし、等式の左辺 x が単純な名前ではないときは、subs と同じ制限を持つ文法規則上の置き換えが試みられます。
eval は各点で評価を行うので、eval を特異点で評価するために用いることはできません。代わりに limit を使います。
eval コマンドは導関数、積分、区分的に定義された関数などを正しく評価する方法を認識します。一方、これに対して、subs コマンドは数学的には意味をなさない置き換えをします。評価しなければいけない点と式の間に「安全でない」と考えられる記号的な相互依存があると、eval は unevaluated (未評価)を返します。この情報は Maple ライブラリにおいて Maple プロシージャ `eval/diff`、`eval/int`、`eval/piecewise` などにコードされます。ユーザはどのように評価するかを次のように Maple に指示することができます。関数 foo(y) が与えられたとします。この場合、ユーザが `eval/foo` を Maple プロシージャとして定義していると、コール eval(foo(y),x=a) によって、`eval/foo`(foo(y),x=a); が呼び出されるようになります。
eval 関数の残りの 2 つの使い方は変数または式の明示的な評価に用いられます。これらの場合の評価の意味は、先の使い方とは違っています。Maple のデフォルトの評価規則はグローバル変数に対する完全評価で、ローカル変数とパラメータに対しては深さ1の評価です。ときにユーザは完全評価や深さ1の評価を明示的に行う必要があります。たとえば、Maple セッションにおいて かつ であるとき の値は何でしょう。x や y がグローバル変数である対話的なセッションでは x は 1 に評価され、x は「完全評価された」と言います。深さ1の評価では、コマンド eval(x, 1) を用います。この場合 y が得られます。しかし、Maple プロシージャの内部で、x がローカル変数またはパラメータであるとき、x は y と評価され、x は「深さ1で評価された」と言います。パラメータについては、変数をグローバル変数でないパラメータとして渡す場合にのみ、このことが関係します。というのは、変数はプロシージャに渡される前に完全評価されるからです。ローカル変数やパラメータに対する完全評価は eval(x) により得られ、この例では 1 となります。
コール eval(e) は式 e が 2 つの遅延評価 (uneval 参照) まで完全評価されることを意味します。これは e の中のそれぞれの名前がその値まで評価され、値は再帰的に評価される、そして e の中のそれぞれの関数呼び出しはそのパラメータを評価して実行されるが、遅延評価の 2 つのレベルを越えては評価されないことを意味します。
コール eval(x, 1) は x を深さ 1 で評価することを意味しています。つまり、名前 x に割り当てられた値がそれ以上評価されることなく返されます。より一般に、eval(x, n) は名前の深さ n までの評価を行います。
深さ n (n>1) までの評価は、深さ n-1 まで評価してもまだ単に名前であるような式に対して有用です。コールeval(x, n) は、n-1 から名前をさらに 1 つ深くして評価した結果を返します。
深さ n の評価は名前以外の式に対して直接適用することもできます。結果は式の実際の構造がどのように自動簡単化と相互作用するかにより大きく変わり得ます。
table、rtable および module のような配列型コンテナオブジェクトに を適用することは、各要素に map することではありません。map(eval,M) を使用して、オブジェクトの中の要素 M を評価します。
evalhf 環境で実行されるプロシージャ内部から呼び出された場合、eval は evalhf の外部で評価を行います。eval に対する引数シーケンス内のすべてが、シンボリックモード (つまり、記号、整数、ソフトウェアの浮動小数点値) で評価されます。評価の結果は、ハードウェアの浮動小数点またはその配列に変換されます。変換できない場合は、例外が発生します。
スレッド安全性
eval コマンドは、Maple 15 以後スレッドセーフです。ただし、与えられた式の評価自体がスレッドセーフである場合に限ります。
スレッド安全性に関する詳細は、index/threadsafe を参照してください。
例
eval を用いて「点」における評価を行う例
poly := x^3+3*x+2;
eval(poly, x=1);
poly := x*y+3*z+2;
eval(poly,[x=2,y=3,z=t]);
eval(int(sin(x),x),x=1);
eval が誤った答えの代わりに(正しい)エラーを返す例
expr := sin(x)/x;
eval(expr,x=0);
Error, numeric exception: division by zero
limit(expr,x=0);
eval を用いた不活性な積分、導関数の例
integral := int(f(t,a),t=a..x);
eval(integral,{t=0,a=1});
der := diff(f(x),x) + f(x);
eval(der,x=0);
いくつかの深さにおける変数 a の評価
a := b;
b := c;
c := x+1;
デフォルトの完全な再帰評価
a;
完全な再帰評価の実行
eval(a);
eval(a,1);
eval(a,2);
eval(a,3);
eval(a,4);
eval と subs の比較
eval コマンドは、subs コマンドとは異なります。
expr := sin(x)/cos(x);
subs(x = 0, expr);
eval(expr, x = 0);
eval と subs コマンドは、それぞれ異なる方法で不活性な積分の評価を行います。subs コマンドは、不活性な式の場合では指定した値を式に挿入するのみで、評価を実行することはありません。
上記の使用例
a := 'a':
subs({a = 1, t = 0}, integral);
eval(integral, {t=0, a=1});
subs(x=0, der);
eval(der, x=0);
関連項目
Eval、evala、evalb、evalc、evalf、evalhf、evaln、evalr、Extending Maple、limit、RealDomain、rtable_eval、subs、value
Download Help Document