Цель работы: Учимся работать с системой программирования и мыслить в функциональном стиле
Научитесь выполнять код на F#, преимущественно в интерактивном режиме. Все возможные варианты использования F# описаны на официальном сайте [смотрите USE в меню]. Рекомендованные варианты (в порядке предпочтения):
- Установите Visual Studio Code с Ionide Extension
- Установите полную Visual Studio с поддержкой F# (и затем используйте окно F# Interactive)
- Установите окружение Jupyter Notebook с поддержкой .NET
- Используйте онлайн-окружение через браузер (например, Repl.it)
После того, как вы научились выполнять код, выполните задания ниже.
Напишите программу на F#, которая распечатает значения некоторой математической функции f(x), заданной вариантом задания в соответствии с таблицей, на заданном (в таблице) интервале [a,b]. Функцию необходимо вычислить тремя способами:
- С помощью встроенных функций F#
- Используя наивный способ вычисления ряда Тейлора, где каждый член ряда вычисляется по формуле
- Используя умный способ вычисления ряда Тейлора, где каждый следующий член вычисляется на основе предыдущего.
В двух последних случаях, вам необходимо осуществлять суммирование членов до тех пор, пока их абсолютное значение не станет меньше некоторого заданного небольшого значения eps. Необходимое число членов суммы также необходимо напечатать в таблице.
Вот как будет выглядеть таблица:
x | Builtin | Smart Taylor | # terms | Dumb Taylor | # terms |
---|---|---|---|---|---|
a | ... | ... | ... | ... | |
... | |||||
b | ... | ... | ... | ... |
Используйте формат вывода в функции
printfn
, чтобы напечатать таблицу красиво.
Функции и их разложения в ряд Тейлора определены в таблице. Используйте свой вариант задания в соответствии с номером в списке группы.
Для высокой оценки задания необходимо хорошо осуществить функциональную декомпозицию задачи. Например, функции для реализации аналогов цикла while
имеет смысл реализовать отдельно, и затем использовать при вычислении как наивного, так и умного ряда.
Реализуйте функцию для численного решения трансцендентных алгебраических уравнений, используя следующие алгоритмы нахождения корней:
Вам необходимо разработать функции для решения произвольных уравнений, которые передаются как параметр-функция. Используйте также тот факт, что метод Ньютона является частным случаем метода итераций.
Примените три функции решения к трем последовательным уравнениям из таблицы, начиная со своего варианта задания. У вас должна получиться табличка из 9 решений (3 уравнения по 3 метода на каждое).