Два большинство бесполезных комментариев я когда-либо видел...
try
{
...
}
catch
{
// TODO: something catchy
}
я отправил этого в Ежедневной газете WTF также, таким образом, я обрежу его только к комментарию...
// TODO: The following if block should be reduced to one return statememt:
// return Regex.IsMatch(strTest, NAME_CHARS);
if (!Regex.IsMatch(strTest, NAME_CHARS))
return false;
else
return true;
Math.NET - это математический набор инструментов с открытым исходным кодом, написанный на C # для платформы Microsoft .NET, цель которого - обеспечить автономную чистую структуру как для числовых научных, так и для символьных алгебраических вычислений. В частности, Math.NET Numerics является результатом слияния dnAnalytics с Math.NET Iridium и включает следующие функции:
Я не могу поручиться, что он лучший или более эффективный, но пару дней назад я узнал, что Лука Болоньезе разработал библиотеку финансовых функций для. NET
Вы можете найти его здесь: http://code.msdn.microsoft.com/FinancialFunctions
Может быть, это будет полезно для вас.
Вы можете проверить http://www.dmoz.org/Science/Math/Software/ - там перечислено несколько C #. Я бы посоветовал попробовать несколько (демонстрационные версии, если они коммерческие) и провести профилирование, чтобы увидеть, соответствуют ли они вашим требованиям. Вы также можете использовать MATLAB - см. Раздел «Ограничения и альтернативы» этой записи. (У меня нет личного опыта работы с этими инструментами.)
Взгляните на f # http://research.microsoft.com/en-us/um/cambridge/projects/fsharp/
Он будет частью Visual Studio 2010.
У меня нет опыта работы с мостом Mathematica / .NET, но я использовал мост Mathematica / Java, который, судя по документации, очень похож. Конечно, я не могу ответить на один вопрос: насколько хороша реализация интерфейса с точки зрения стабильности и производительности.
Концептуально я обнаружил, что интерфейс Java для вызова Mathematica довольно хорош. У вас есть набор объектов и методов, которые позволяют запускать сеансы Mathematica и отправлять им выражения Mathematica для оценки. Вы можете отправить текст (что легко в простых случаях, но сложно, если вам нужно что-то нетривиальное) или более структурированные объекты Expr
, которые отражают структуру синтаксического дерева. Эти выражения позволят вам делать что угодно: вычислять интегралы численно или символически, брать производные, решать ОДУ и т. д.
Единственная область, где некоторые из них не работают, - обработка ошибок. В Mathematica нет исключений как таковых; вместо этого он выдает «сообщения», когда сталкивается с проблемами, и продолжает попытки оценить выражение, над которым работает. Это имеет некоторый смысл в свете довольно необычной семантики Mathematica (где она работает с выражениями с повторной перезаписью правил), но стандартный набор методов для связи с Mathematica не позволяет вам легко отслеживать эти сообщения изнутри Java (или, как кажется, , .NET), хотя можно написать свои собственные методы, которые лучше справляются с этой задачей.
В Mathematica нет исключений как таковых; вместо этого он выдает «сообщения», когда сталкивается с проблемами, и продолжает попытки оценить выражение, над которым работает. Это имеет некоторый смысл в свете довольно необычной семантики Mathematica (где она работает с выражениями с повторной перезаписью правил), но стандартный набор методов для связи с Mathematica не позволяет вам легко отслеживать эти сообщения изнутри Java (или, как кажется, , .NET), хотя можно написать свои собственные методы, которые лучше справляются с этой задачей. В Mathematica нет исключений как таковых; вместо этого он выдает «сообщения», когда сталкивается с проблемами, и продолжает попытки оценить выражение, над которым работает. Это имеет некоторый смысл в свете довольно необычной семантики Mathematica (где она работает с выражениями с повторной перезаписью правил), но стандартный набор методов для связи с Mathematica не позволяет вам легко отслеживать эти сообщения изнутри Java (или, как кажется, , .NET), хотя можно написать свои собственные методы, которые лучше справляются с этой задачей. довольно необычная семантика (где он работает с выражениями с повторяющейся перезаписью правил), но набор методов по умолчанию для взаимодействия с Mathematica не позволяет вам легко отслеживать эти сообщения изнутри Java (или, похоже, .NET), хотя он можно написать свои собственные методы, которые лучше справятся с этим. довольно необычная семантика (где он работает с выражениями с повторяющейся перезаписью правил), но набор методов по умолчанию для взаимодействия с Mathematica не позволяет вам легко отслеживать эти сообщения изнутри Java (или, похоже, .NET), хотя он можно написать свои собственные методы, которые лучше справятся с этим.Язык программирования Microsoft Visual F # был специально разработан для такого рода работы, поэтому вы, вероятно, захотите просто вызвать существующее решение F # из своего Код C #. Например, в Visual Studio 2010 с нашей установленной библиотекой F # for Numerics вы можете интегрировать x 3 -x-1 от -3 до 3 в интерактивном режиме следующим образом:
> Functional.integrate (fun [x] -> x**3.0 - x - 1.0) [-3.0, 3.0];;
val it : float = -6.0
и вычислить это частная производная функции по x
при x = 2
следующим образом:
> Functional.d (fun x -> x**3.0 - x - 1.0) 2.0;;
val it : float = 11.0