Увеличьте скорость MATLAB ®, снизив точность вычислений. Уменьшите точность, используя арифметику переменной точности, предоставляемую vpa и digits функции в символьных математических Toolbox™. При снижении точности достигается повышение производительности за счет снижения точности. Дополнительные сведения см. в разделе Выбор числовой или символьной арифметики.
Например, нахождение дзета-функции Римана большой матрицы C занимает много времени. Сначала инициализируйте C.
[X,Y] = meshgrid((0:0.0025:.75),(5:-0.05:0)); C = X + Y*i;
Затем найдите время, необходимое для вычисления zeta(C).
tic zeta(C); toc
Elapsed time is 340.204407 seconds.
Теперь повторите эту операцию с меньшей точностью, используя vpa. Сначала измените точность, используемую vpa до более низкой точности 10 цифры с помощью digits. Затем используйте vpa для снижения точности C и найти zeta(C) снова. Операция идет значительно быстрее.
digits(10) vpaC = vpa(C); tic zeta(vpaC); toc
Elapsed time is 113.792543 seconds.
Примечание
vpa вывод символичен. Чтобы использовать символьный вывод с функцией MATLAB, которая не принимает символьные значения, преобразуйте символьные значения в двойную точность с помощью double.
Для более крупных матриц разница во времени вычисления может быть еще более значительной. Например, рассмотрим 1001около-301 матрица C.
[X,Y] = meshgrid((0:0.0025:.75),(5:-0.005:0)); C = X + Y*i;
Управление zeta(vpa(C)) с 10-значной точностью занимает 15 минут, во время работы zeta(C) занимает в три раза больше времени.
digits(10) vpaC = vpa(C); tic zeta(vpaC); toc
Elapsed time is 886.035806 seconds.
tic zeta(C); toc
Elapsed time is 2441.991572 seconds.
Примечание
Если требуется увеличить точность, см. раздел Увеличение точности числовых вычислений.