通过降低精度来提高速度
增加MATLAB®的速度,通过降低你的计算精度。方法提供的变精度算法降低精度vpa
而且数字
函数在符号数学工具箱™。当您降低精度时,您将通过降低精度来获得性能。详细信息请参见选择数字或符号算术.
例如,求大矩阵的黎曼ζ函数C
要花很长时间。首先,初始化C
.
[X,Y] = meshgrid((0:0.0025:.75),(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:.75),(5:-0.005:0));C = X + Y*i;
运行泽塔(vpa (C))
10位数的精度需要15分钟,同时运行泽塔(C)
需要三倍的时间。
(10) vpaC = vpa(C);抽搐泽塔(vpaC);toc
运行时间为886.035806秒。
抽搐泽塔(C);toc
运行时间为2441.991572秒。
请注意
如果你想的话增加精密,看提高数值计算的精度.