А делал я их на питоне с использованием некой библиотечки для отрисовки графиков. Правда перед тем, как выбрал именно ее, я поискал в инете похожие разработки под C#, Java, но увы ничего стоящего не нашел(что есно не говорит о том, что их нет).
В итоге я ни капельки не пожалел. Во-первых, питон очень хорошо подходит для написания математических приложений (чего только стоит нативная поддержка комплексных чисел), во-вторых он обладает красивым, понятным синтаксисом :)..
Вот например интерполяция функции многочленом Лагранжа:
При этом все, что я сделал - непосредственно посчитал значения функции, многочлена и сформировал 3 списка:
funcx - список значений аргумента
funcy - список значений функции
Lny - список значений интерп. многочлена
и два списка для отображения узлов интерполяции
ly - значения аргумента в узлах интерполяции
ly - значения функции в узлах интерполяции
и обратился к функциям модуля pylab библиотечки matplotlib, который отвечает за построение и отображение графиков
# function
plot(funcx, funcy, '-', lw=1)
#interpolation
plot(funcx, Lny, '-',lw=2)
# узлы
plot(lx,ly, 'ro', lw=2)
xlabel('X')
ylabel('Y')
title('Lab6')
grid(True)
Прошу обратить внимание на ту формочку, куда выводится график. В ней присутствует возможность приближения, перемещения графика, сохранения в PNG.. Правда есть несколько минусов, с которыми пришлось мириться - это низкая скорость работы(отрисовки и работы с графиком, т.к. графический интерфейс библиотеки написан под Tkinter) и баги, возникающие при очень сильном приближении. Но все это терпимо, а представленного функционала вполне достаточно для выполнения лабораторных работ.
Функции Pylab повторяют функции пакета MatLab и обладают достаточно удобным и интересным синтаксисом параметров. Вот например функция plot. Она строит график по двум входным спискам - списку аргументов и значений, но есть еще параметры для настройки отображения самого графика: 'ro' - красные кружочки, '-' - просто линия, '--' - штриховая линия и т.д. Очень наглядно, никаких вам констант и бинарных флагов..
Еще пример - решение задачи Коши для диф уравнения методом Рунге-Кутта и Адамса:

Код
# Итак, все что нужно молодому питонисту, чтобы сделать вычмат:
Необходимые пакеты:
NumPy
Matplotlib
Офф:
http://matplotlib.sourceforge.net/
Доки:
http://matplotlib.sourceforge.net/api.pdf
http://matplotlib.sourceforge.net/users_guide_0.91.2svn.pdf
1 комментарий:
Комплексные числа, готовый компонент для рисования графиков ... сильно экономят время, а это так кстати было в этом семестре
Отправить комментарий