Генерация, а затем с использованием полинома Тейлора в C #
-
09-10-2019 - |
Вопрос
Я написал простую реализацию графики в C #, и я могу графические вещи, сравнивая каждый пиксель в положение на графике, который он представляет и подключил эту позицию в функцию, которую я должен увидеть, если она на кривой. Это все хорошо и хорошо.
Проблема у меня есть сгенерированный полиномиальный полиномиал Тейлора. Например, я могу создать Nth Taylor Polynomial трансцендентной функции F, ориентированной на C, делая
суммирование этого от 0 до n с переменной счетчиком k = ((производное kth f (c)) * (xc) ^ k) / k!
Я не уверен, как сделать математическую разметку на Stackoverflow, ни я слишком компетентна с этим в Интернете, но я надеюсь, что это понятно. Левая сторона может быть написана как Sigma _k = 0 ^ n или что-то в этом роде с _, представляющая раздел под Sigma и ^ ^, представляющую часть выше ...
Так что я в конечном итоге генерирую полиномиал Тейлора 6-й степени для COS (X), сосредоточенного в 0 (Maclaurin, я знаю), который выглядит что-то вроде
"1 - x ^ 2/2! + X ^ 4/4! - x ^ 6/6!"
Это можно сделать с помощью простых строковых манипуляций в C #. Я могу просто перебраться и добавить следующий член в строку.
Я действительно не могу понять, как я сможет использовать строку в качестве функции, чтобы сравнить с позициями графа, чтобы увидеть, действительно ли эта позиция графа на этот график, чтобы поэтому график его. По сути: как бы я использовал строку как фактическую математическую функцию в C #, или есть лучший способ сделать это.
Очень жаль, если это запутанно ... действительно стараюсь изо всех сил, чтобы объяснить это так, как люди могут помочь.
Решение
Вам нужен анализатор строки -> функция. Видеть MathParser Например, что, вероятно, делает все, что вы упомянули, вам нужно.
Другие советы
С общей перспективы, в любое время вы хотите преобразовать строку в то, что делает работу, вы должны реализовать парсер, который будет интерпретировать строку и выполнять действия, продиктованные им. Для математических формул дерево выражения может быть использовано для поддержания порядка операций и группировки. Вероятно, существует некоторые библиотеки математических выражений, которые сделают это, или вы можете катиться своим собственным. Это не тривиальная задача, но это, безусловно, возможно.
После того, как у вас есть дерево выражения, чтобы выяснить, если значение f (x) для данного х является графикой, просто оцените его. Для графика F (X) вы можете проверить x первым, чтобы увидеть, попадет ли оно в видимой области графической области. Если это делает, оцените f (x), и если точка (x, f (x)) - это графический, затем нарисуйте точку.