Я создал графический калькулятор, который работает для большинства функций. Он принимает инфиксное выражение пользовательской строки и преобразует его в постфиксное для упрощения вычислений. Затем я перебираю и передаю значения x в постфиксное выражение, чтобы получить значение Y для построения графиков с помощью pygame.
Первая проблема, с которой я столкнулся, заключалась в расчетах невозможных вещей. (например, деление на ноль, квадратный корень из -1, 0 ^ неположительное число). Если бы произошло что-то подобное, я бы вывел None, и этот пиксель не был бы добавлен в список точек для построения графика.
* Я показал все различные попытки, которые я предпринял, чтобы помочь вам понять, откуда я взялся. Если вы хотите видеть только мой самый последний код и метод, перейдите туда, где написано «текущий».
Метод 1
Мой первый метод заключался в том, что после того, как я получил все значения пикселей, я рисовал их с помощью функции pygame aalines. Это работало, за исключением того, что это не работало, когда между фактическими точками были пропущенные точки, потому что это просто рисовало линию через точки. (1/x не будет работать, но что-то вроде 0^x будет)
Вот как выглядит 1/x при использовании метода aalines

Метод 1.1
Моя следующая идея заключалась в разделении строка на две строки каждый раз, когда обратно печаталось None. Это работало для 1/x, но я быстро понял, что это будет работать только в том случае, если одно из переданных значений X точно соответствует значению Y, равному None. 1/x может работать, но 1/(x+0,0001) не будет работать.
Метод 2
Мой следующий метод заключался в преобразовании значения x каждого пикселя в соответствующее значение точки x в окне (например, (0,0) в окне графика на самом деле будет пикселем (249,249) в окне программы 500x500). Затем я вычислял каждое значение y с помощью только что созданных значений x. Это будет работать для любой линии, наклон которой не превышает 1 или
Подробнее здесь: https://stackoverflow.com/questions/290 ... python-2-7
Мобильная версия