Фигурные скобки означают списки в Mathematica, поэтому ваша функция выводит матрицу из одного элемента, а не скаляр. Измените пары {}
, которые вы используете для группировки в нормальные скобки. Тот факт, что вы получаете двойные фигурные скобки, показывает, что существует два уровня скобок для конвертации.
f = (s1 - Log[1000./(Norm[{2.83, 0, 2} - {u, v, w}])^3])^2 + (s2 -
Log[1000./(Norm[{0, 2.83, -2} - {u, v, w}])^3])^2 + (s3 -
Log[1000./(Norm[{-2.83, 0, 2} - {u, v, w}])^3])^2 + (s4 -
Log[1000./(Norm[{0, -2.83, -2} - {u, v, w}])^3])^2;
Как еще одно замечание, я бы изменил значения Integer
(1000
) на действительные числа (1000.
), поскольку остальная часть входных данных представлена в действительных числах с машинной точностью. Как Бретт напомнил мне в комментариях, результат не будет отличаться, но если вы делаете много повторных вычислений, вы можете заметить небольшое ускорение производительности, и вам будет легче Компилировать функция, если вы хотите дальнейшее улучшение производительности.
(Отредактировано, когда я понял, что это матричный вывод 1 * 1, а не векторный вывод.)