このページの翻訳は最新ではありません。ここをクリックして,英語の最新版を参照してください。
計算精度を下げてMATLAB®の速度を引き上げます。精度を下げるには,符号数学工具箱™の関数vpa
と数字
で提供される可変精度演算を使用します。精度を下げることで正確度は低下しますが,動作性能が向上します。詳細は,数値演算またはシンボリック演算の選択を参照してください。
たとえば,大規模行列C
のリーマンゼータ関数を求めるのは時間がかかります。最初に,C
を初期化します。
(X, Y) = meshgrid((0:0.0025:综合)(5:-0.05:0));C = X + Y*i;
その際,泽塔(C)
の計算に要する時間がわかります。
抽搐泽塔(C);toc
运行时间是340.204407秒。
ここで,vpa
を使用して精度を下げ,この演算を繰り返します。まず,数字
を使用してvpa
で使用する精度を10
桁に引き下げる変更を行います。次に,vpa
を使用して,C
の精度を引き下げて再度泽塔(C)
を求めます。演算が大幅に高速化します。
数字(10)vpaC = vpa(C);抽搐泽塔(vpaC);toc
经过时间是113.792543秒。
メモ
vpa
の出力はシンボリックです。シンボリック値を受け取らないMATLAB関数でシンボリック出力を使用するには,双
を使用してシンボリック値を倍精度に変換します。
行列が大きいほど計算時間の差も非常に大きくなります。たとえば,次のような1001
行301
列の行列C
を考えます。
(X, Y) = meshgrid((0:0.0025:综合)(5:-0.005:0));C = X + Y*i;
10桁の精度で泽塔(vpa (C))
を実行すると15分かかりますが,泽塔(C)
の実行はその3倍の時間がかかります。
数字(10)vpaC = vpa(C);抽搐泽塔(vpaC);toc
经过时间是886.035806秒。
抽搐泽塔(C);toc
经过时间是2441.991572秒。
メモ
精度を”引き上げる”場合は,数値計算精度の引き上げを参照してください。