Сложные вычисления в C#

Два большинство бесполезных комментариев я когда-либо видел...

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;
13
задан Developer 5 May 2016 в 18:28
поделиться

6 ответов

Math.NET - это математический набор инструментов с открытым исходным кодом, написанный на C # для платформы Microsoft .NET, цель которого - обеспечить автономную чистую структуру как для числовых научных, так и для символьных алгебраических вычислений. В частности, Math.NET Numerics является результатом слияния dnAnalytics с Math.NET Iridium и включает следующие функции:

  • вещественные и сложные , плотная и разреженная линейная алгебра (с LU , QR , собственными значениями , ... разложениями)
  • процедуры интегрирования (квадратур) числовых функций
  • интегральные преобразования
13
ответ дан 2 December 2019 в 00:03
поделиться

Я не могу поручиться, что он лучший или более эффективный, но пару дней назад я узнал, что Лука Болоньезе разработал библиотеку финансовых функций для. NET

Вы можете найти его здесь: http://code.msdn.microsoft.com/FinancialFunctions

Может быть, это будет полезно для вас.

1
ответ дан 2 December 2019 в 00:03
поделиться

Вы можете проверить http://www.dmoz.org/Science/Math/Software/ - там перечислено несколько C #. Я бы посоветовал попробовать несколько (демонстрационные версии, если они коммерческие) и провести профилирование, чтобы увидеть, соответствуют ли они вашим требованиям. Вы также можете использовать MATLAB - см. Раздел «Ограничения и альтернативы» этой записи. (У меня нет личного опыта работы с этими инструментами.)

0
ответ дан 2 December 2019 в 00:03
поделиться

Взгляните на f # http://research.microsoft.com/en-us/um/cambridge/projects/fsharp/

Он будет частью Visual Studio 2010.

0
ответ дан 2 December 2019 в 00:03
поделиться

У меня нет опыта работы с мостом 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), хотя он можно написать свои собственные методы, которые лучше справятся с этим.

1
ответ дан 2 December 2019 в 00:03
поделиться

Язык программирования 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
1
ответ дан 2 December 2019 в 00:03
поделиться
Другие вопросы по тегам:

Похожие вопросы: