Другие языки программирования и технологии
Какой язык программирования лучше всего для сложных математических расчетов?
Пишу программу на Java и столкнулся с такой проблемой, как отбрасывание значений, т. е. при вычислении суммы ряда при больших значениях Java начинает отбрасывать значения. Особенно в циклах. Эти формулы никак нельзя изменить, поэтому нужен язык программирования с очень высокой точностью расчётов. Какой язык программирования в соотношении популярность/точность лучше всего выбрать?
Если проблема в накапливающихся ошибках вычисления, то можно использовать любой язык программирования в котором есть библиотека big_math. Название условное. В разных языках она может называться по своему. Однако, суть проста. Вместо real, float или extended вы используете класс в котором кранится массив цифр достаточной длины. Понятно, что работает это намного медленней, чем вычисления с использованием обычных вещественных типов (real, float или extended), однако таким образом вы может поднять точность там, где она действительно нужна.
Сначала поищите библиотеку на языке, которым вы хорошо владеете. Можно попробовать пакет Wolfram Mathematica. В нем такие вычилсения делать можно, но нужно осовить язык программирования этого пакета. Короче, варинатов решения проблемы много.
Если говорить о Java, то поисковик на запрос BigMath for Java показал несколько готовых библиотек. Скачивайте, сравнивайте и пользуйтесь.
Кроме того, в программировании лучше сумировать ряды в обратном порядке. Находите член ряда, который достаточно мал и сумиируете от меньшего к большему. Благодаря такому приему малые челены ряда не тонут в ошибках округления, когда вы начинаете вычислять сумму с самого большого члена.
Сначала поищите библиотеку на языке, которым вы хорошо владеете. Можно попробовать пакет Wolfram Mathematica. В нем такие вычилсения делать можно, но нужно осовить язык программирования этого пакета. Короче, варинатов решения проблемы много.
Если говорить о Java, то поисковик на запрос BigMath for Java показал несколько готовых библиотек. Скачивайте, сравнивайте и пользуйтесь.
Кроме того, в программировании лучше сумировать ряды в обратном порядке. Находите член ряда, который достаточно мал и сумиируете от меньшего к большему. Благодаря такому приему малые челены ряда не тонут в ошибках округления, когда вы начинаете вычислять сумму с самого большого члена.
Что значит "начинает отбрасывать значения"? Не совсем понятно. Конкретный пример приведите
Костя Сафронов
При увеличении значений исходных данных увеличивается ошибка в расчетах. Формулы проверенные и в них ошибок нет.
Султан Абдыжапаров
Что здесь не понятного? Типичный выход за пределы разрядности числа.
Для математики, вроде как, Fortran хорошо подходит.
На счет недостаточной разрядности числа, обычно это решается подключением сторонней библиотеки для работы с большими числами.
На счет недостаточной разрядности числа, обычно это решается подключением сторонней библиотеки для работы с большими числами.
Для таких целей подойдёт любой, где определён и без "костылей" используется 40-битный тип дробных чисел. К примеру, в Delphi таким типом является Extended.
Когда быстродействия не требуется, а высокая точность очень важна, тогда целесообразно использовать математические пакеты: Maple, MathCAD, MATLAB, Mathematica и подобные.
Иногда при работе с числовыми рядами существует способ их упростить (например, разбить на несколько рядов, часть из которых является разложением каких-либо функций, а другая часть сходится быстрее исходного ряда), в таких случаях нужда в длительных высокоточных расчётах и вовсе отпадает, в этом также могут помочь вышеперечисленные пакеты.
Когда быстродействия не требуется, а высокая точность очень важна, тогда целесообразно использовать математические пакеты: Maple, MathCAD, MATLAB, Mathematica и подобные.
Иногда при работе с числовыми рядами существует способ их упростить (например, разбить на несколько рядов, часть из которых является разложением каких-либо функций, а другая часть сходится быстрее исходного ряда), в таких случаях нужда в длительных высокоточных расчётах и вовсе отпадает, в этом также могут помочь вышеперечисленные пакеты.
Похожие вопросы
- Можете ли вы привести пример применения сложных математических расчётов в программировании?
- Умею решать математические задачи, а на языке программирование вообще ни капли даже в голову не приходит как?
- Составьте топ от самых легких языков программирования до самых сложных
- А какие языки программирования изучали в 80х и на чём вы их изучали?
- Почему язык программирования C++ считается одним из самых сложных языков программирования?
- Какой язык программирования выбрать для изучения для начинающего ? (внутри)
- С какого языка программирования начать?
- Какой язык программирования следует изучить в первую очередь, если в программировании вообще ничего не понимаешь?
- И снова про языки программирования ^_^ Поправьте, если я ошибаюсь где-то.
- Виды языков программирования
такие числа (покуда они рациональные) проще записывать именно в виде дроби, в том числе дроби, где числитель и знаменатель - вышеупомянутые большие числа.
многие языки поддерживают такой тип данных (обычно называется Rational) из коробки или с помощью отдельных математических библиотек.