Программа «Графер» предназначенa для построения и преобразования графиков функций различного вида. Графер обеспечивает демонстрацию связи формулы и графика функций. Для школьников использование Графера облегчает изучение графиков функций, обеспечивает наглядность и простоту в использовании. Для преподавателей Графер может служить хорошим средством для подготовки к занятиям, для создания наглядных пособий и т. д.
Построение графиков функций можно производить в декартовой и полярной системах координат. Пользователь может самостоятельно задать функцию вида , параметрического вида , или полярную функцию . Имеется набор «стандартных» функций: степенных, тригонометрических и гиперболических. К графикам функций можно строить касательные.
Графер даёт возможность производить над функциями и их графиками различные преобразования: смещение графика функций относительно координатных осей, сжатие, растяжение, зеркальное отображение относительно осей координат. Можно производить взаимные преобразования нескольких функций, такие как сложение функций, умножение и деление одной функции на другую, преобразование вида . При этом соответствующие преобразования одновременно влияют как на графическое изображение функции, так и на её аналитический вид.
Graph построение графиков
Имеются различного рода графические возможности, предназначенные для оформления графиков функций, для придания им более наглядного вида. Можно ставить надписи, отмечать точки, отрезки, интервалы и многое другое.
Так как для построения функций используются численные, а не аналитические методы, возможны некоторые неточности построения в сложных критических точках.
C помощью программы «Графер» можно создавать симуляции, демонстрирующие различные математические законы и теоремы, связанные с графиками и их функциями.
Панель инструментов имеет многофункциональную структуру. Она разделена закладками на 7 групп: Главная , Фигуры , Функции , Тригонометрические , Гиперболические , Преобразования , Управление (рисунок H.2.4.1). Наибольший интерес для широкого круга пользователей представляют первые шесть групп.
Группа Главная даёт пользователю возможности, которые позволяют сохранять данные, создавать координатные плоскости, строить графики всевозможных, задаваемых произвольным образом функций. Фигуры предназначена для создания схематических рисунков и надписей.
Группы Функции , Тригонометрические , Гиперболические предназначены для построения графиков стандартных функций, параметры которых пользователь может задавать самостоятельно. Группа Преобразования позволяет преобразовывать функции и их графики. Группа Управление используется для написания объектно-ориентированных программ, с целью создания симуляций, демонстрирующих различные преобразования, законы и теоремы, связанные с функциями и их графиками. При загрузке программы сразу появляется декартовая координатная плоскость, параметры которой при необходимости можно изменить (это будет рассмотрено более подробно в следующих разделах руководства).
Основы Matplotlib. Визуализация данных. Графики и диаграммы в Python
Внешний вид программы «Графер»
Как построить график функции
Программа «Графер» даёт пользователю возможность задавать функции вида , параметрические функции , и функции для полярной системы координат .
Свойства задаваемой функции
Посмотрим, как это можно делать на примере функции . На панели инструментов выберете закладку Главная . Нажмите на кнопку График , затем переведите курсор мыши на координатные оси и щёлкните один раз левой кнопкой. В результате откроется окно Свойства функции , где вам необходимо задать саму функцию, а также ещё ряд её свойств.
Результат проделанной работы изображён на рисунке H.2.4.2. Когда все необходимые параметры установлены, нажмите кнопку OK . Теперь график функции появился на координатной плоскости. Поместите на координатную плоскость легенду. Для этого на панели инструментов нажмите на кнопку Легенда , переведите курсор мыши на то место координатной плоскости, где вы хотите поместить легенду и щёлкните один раз левой кнопкой мыши. То, что у вас должно получиться, изображено на рисунке H.2.4.3.
График функции и легенда к нему.
Как изменить параметры графика функции
Для того чтобы изменить параметры графика функции, выберите закладку Главная , нажмите на панели инструментов кнопку Выделить , наведите курсор мыши на график функции и два раза кликните на нём левой кнопкой. Откроется окно Свойства , в котором вы можете изменить параметры графика функции.
Аналогичным образом производятся изменения параметров всех остальных объектов Графера.
Построение элементарных графиков функций
Программа «Графер» позволяет работать с элементарными функциями: степенными, тригонометрическими и гиперболическими. Для примера выберите закладку Тригонометрические и постройте график какой-нибудь тригонометрической функции, например . Принцип построения такой же, как и для графиков функций, которые мы уже строили раньше. Особенность стандартных функций состоит в том, что изначально функция задана в наиболее простом из всех возможных для неё виде; например, для функции , которая имеет общий вид , коэффициенты выбраны следующим образом: , , , . Пользователь может сам изменять коэффициенты , , , и смотреть, что при этом происходит с графиком функции. Давайте понаблюдаем, что происходит с синусом при различных , , , . Возьмите , при этом график функции растянется в 2 раза по оси (рисунок H.2.4.4). Возьмите , и вы получите двукратное сжатие графика по оси (рисунок H.2.4.4).
Графики функций вида .
Как изменить масштаб координатной плоскости
Попробуйте изменить масштаб координатной плоскости. Для этого на панели инструментов нажмите на кнопку Выделить , затем переведите курсор мыши на координатную плоскость и щёлкните один раз левой кнопкой. После этой манипуляции координатную плоскость можно подвергать различного рода трансформациям. По краям координатной плоскости появились чёрные маркеры.
Наведя курсор мыши на один из маркеров, вы можете сжать или растянуть координатную плоскость в любом направлении. Для того, чтобы задать новый масштаб и внести изменения в ряд других свойств, наведите курсор мыши на координатную плоскость и щёлкните два раза левой кнопкой мыши. Откроется окно Свойства (рисунок H.2.4.5). Теперь вы можете задать границы шкалы и шаг сетки по осям, цвета фона, осей, сетки и подписей, названия осей, отображение всех этих элементов и другие свойства координатной плоскости.
Задание нового масштаба для координатной плоскости и изменение её свойств
Как удалить, сохранить данные, извлечь сохранённые данные
Если у вас возникла необходимость удалить какой-нибудь объект, воспользуйтесь кнопкой Удалить на панели инструментов. Для этого после нажатия кнопки, наведите курсор мыши на тот объект, который вы хотите удалить и щёлкните один раз левой кнопкой. Также вы можете удалить объект с помощью кнопки Delete , находящейся на клавиатуре. Для этого выделите требуемый объект при помощи кнопки Выделить , находящейся на панели инструментов, а затем нажмите на кнопку Delete , находящуюся на клавиатуре.
Если вам необходимо, чтобы Графер начал свою работу сначала и не сохранял данные, введённые вами до этого, воспользуйтесь кнопкой Перезагрузить Панели инструментов.
Для того, чтобы сохранить введённые вами данные, выберете закладку Elements на панели инструментов и воспользуйтесь кнопкой Сохранить . График сохранится в файле с расширением *.set . Вы сможете получить доступ к сохранённым данным при помощи кнопки Загрузить , находящейся по соседству с кнопкой Сохранить .
Можно сохранить введённые данные в виде рисунка с расширением *.jpg при помощи кнопки Сохранить рисунок .
Преобразования графиков и их функций
Выберите закладку Преобразования . Давайте теперь произведём обратное преобразование какого-нибудь графика функции. Для этого нажмите на панели инструментов кнопку Выделить , наведите курсор мыши на тот график функции, который вы хотите подвергнуть преобразованию, щёлкните один раз левой кнопкой. Выбранный вами график выделится штрихпунктирной линией. После этого нажмите на панели инструментов кнопку Обратная функция , и вы получите обратное преобразование выделенной функции.
Для преобразования двух функций (например для того, чтобы перемножить две функции) вам необходимо одну из функций выделить так, как это делалось для нахождения обратной функции, а вторую функцию выделить следующим образом: держа нажатой кнопку Shift на клавиатуре и, наведя курсор мыши на график функции, щёлкнуть один раз левой кнопкой. Далее действуйте так же, как при нахождении обратной функции. На рисунке H.2.4.6 розовым цветом представлен результат преобразования , где , а .
Результат преобразования .
С помощью Преобразования можно проделать ещё ряд преобразований: переместить график в любое место координатной плоскости, сжать и растянуть, произвести различные зеркальные отображения, взять модуль.
Когда вы производите какие-нибудь преобразования графиков функций, то они влияют не только на графическое представление функции, но и на её аналитический вид. «Графер» даёт возможность наблюдать как за графическими, так и за аналитическими изменениями функции при различных преобразованиях графиков функций. Для того чтобы посмотреть на то, какой аналитический вид имеет функция после преобразования, нажмите на кнопку Выделить , находящуюся на панели инструментов, наведите курсор мыши на тот график функции, который был подвержен преобразованию, и кликните на нём два раза мышкой. В диалоговом окне вы увидите формулу функции.
Как добавить вспомогательную информацию
Схематические надписи и рисунки
Вы можете сделать схематические надписи для большей наглядности полученной картинки. Для этого выберете закладку Фигуры . Проведите к каждому из полученных в предыдущем пункте графиков стрелочки и сделайте к ним соответствующие графикам функций надписи, отражающие суть проделанных нами преобразований (рисунок H.2.4.7). Используя закладку Фигуры , можно построить прямоугольник, овал и другие графические примитивы. В свойствах можно задать цвет фигуры, а также сделать её закрашенной.
Схематические надписи
Кнопка Формула , находящаяся в группе Главная , даёт возможность записывать различные математические выражения и формулы с использованием специальных символов и знаков, делать надписи на координатной плоскости.
Для того чтобы воспользоваться этой возможностью, выберите закладку Главная на панели инструментов, нажмите на кнопку Формула , переведите курсор мыши в то место координатной плоскости, где вы хотите сделать надпись и один раз щёлкните левой кнопкой мыши. Откроется окно редактора, изображённое на рисунке H.2.4.8. Теперь произведите нужную вам надпись и, нажав на кнопку Сохранить , находящуюся в окне редактора формул, вставьте эту надпись на координатной плоскости (рисунок H.2.4.9).
Редактор формул и математических выражений
Математическое выражение, записанное в редакторе формул и математических выражений, вставили в рисунок
Кнопки «На задний план» и «На передний план»
Вы можете работать одновременно с несколькими координатными плоскостями, как показано на рисунке H.2.4.10. Для того чтобы поместить одну координатную плоскость поверх другой и наоборот, выберите закладку Главная и воспользуйтесь кнопками «На задний план» или «На передний план» .
Работа с несколькими координатными плоскостями
Группа Главная содержит в себе функции, с помощью которых можно: выделять на графике функций точки, интервалы, рисовать отрезки, касательные, прямые и полуплоскости. Такие возможности могут понадобиться для графического решения уравнений, неравенств, систем уравнений и неравенств, а также для графического представления теорем и математических законов.
Для того чтобы выделить на графике функций какую-нибудь точку, нажмите на кнопку Точка , наведите курсор мыши на то место графика функции, где вы хотите поставить точку, и один раз кликните левой кнопкой мыши, появится точка. При необходимости можно нарисовать выколотую точку, поменять размер точки, цвет, нарисовать точку с проекциями на оси (рисунок H.2.4.11). Все эти изменения производятся в окне Свойства .
Касательные и отрезки
В группе Главная есть такие кнопки, как Отрезок и Касательная , которые могут понадобиться для графического представления математических теорем, например для графического представления теоремы Лагранжа (рисунок H.2.4.12).
Графическое представление теоремы Лагранжа
Полуплоскости и интервалы
Кнопки Полуплоскость и Интервал группы Главная используют для графического решения уравнений, неравенств и систем уравнений и неравенств. Об их практическом применении будет говориться в пункте «Уравнения и неравенства».
Уравнения и неравенства
С помощью программы «Графер» можно легко получать графические решения уравнений, систем уравнений и неравенств, это способствует хорошему пониманию при изучении уравнений, систем уравнений и неравенств. Вы можете аналитически решить задачу, а потом проверить правильность своего решения с помощью программы «Графер».
Давайте получим графическое решение уравнения . Постройте график функции . Точки, в которых (график функции пересекается с осью будут решениями данного уравнения. А именно, это , , . Для наглядности отметьте решения на графике точками (рисунок H.2.4.13). Для этого выберите закладку Главная и воспользуйтесь кнопкой Точка .
Графическое представление решения уравнения
Аналогичным образом можно решать системы уравнений. На рисунке H.2.4.14 представлено графическое решение системы уравнений и . Решением системы будет точка (–1; 0), т. к. при , графики функций и одновременно пересекают ось .
Графическое представление решения системы уравнений
«Графер» имеет возможности, которые необходимы для графического представления решений неравенств и систем неравенств. Давайте получим графическое решение простейшего неравенства . Для этого постройте график функции . На панели инструментов выберете закладку Главная . Воспользуйтесь кнопкой Полуплоскость для того, чтобы выделить ту часть координатной плоскости, в которой график функции удовлетворяет условию задачи.
В нашем случае необходимо выделить всю координатную полуплоскость с положительными . Для этого откройте окно Свойства полуплоскости и в графе Знак неравенства выберете «> 0». Также в Свойства полуплоскости вы можете задать на своё усмотрение ряд других свойств полуплоскости.
После установки всех необходимых параметров в Свойстваx полуплоскости , нажмите на кнопку OK . Теперь можете выделить всю координатную полуплоскость с положительными . Для корректировки положения полуплоскости нажмите на кнопку Выделить на панели инструментов, выделите полуплоскость. На границе полуплоскости появятся два чёрных маркера. Наведите курсор мыши на маркер и, держа нажатой левую кнопку, измените положение полуплоскости в нужном направлении. Выделите все , при которых . Для выделения интервалов выберите закладку Главная и воспользуйтесь кнопкой Интервал . Получается, что неравенство выполняется для Результат проделанных манипуляций представлен на рисунке H.2.4.15.
Графическое представление решения неравенства
Давайте изобразим графически решение системы неравенств и (рисунок H.2.4.16). Решением такой системы неравенств будут все
Графическое решение системы неравенств
Параметрические и полярные функции
В некоторых случаях возникает необходимость построения графиков параметрических функций. Например, для графического изображения таких функций, в которых нельзя найти однозначную зависимость , будет удобнее представить функцию в параметрическом виде и построить её график. Функция , (рисунок H.2.4.17), является примером функции, которую проще представлять в параметрическом виде, а не в виде зависимости , так как в последнем случае зависимость будет не однозначной и гораздо более сложной, чем в случае параметрического представления. Графер даёт возможность строить графики функций в полярной системе координат, , где t можно выразить в радианах или в градусах (задаётся в Свойствах полярной функции ). На рисунке H.2.4.18 изображён график функции в полярной системе координат.
График параметрической функции ,
Источник: mathematics.ru
24.Графика. Рисуем функции
Создать программу вывода текста и рисования в форме графиков функций. Проект – WindowsForm приложение.
Пример. Создать программу рисования в форме графика функции с поясняющим текстом. Проект – WindowsForms приложение. Функция — синус. Программа предусматривает рисование графика в форме Form1 линиями с помощью метода DrawLine. Над графиком с помощью метода DrawString выводится поясняющий текст.
Кнопка Старт вызывает построение графиков в окне.
public partial class Form1 : Form
private void button1_Click(object sender, EventArgs e)
int imax =100; //число точек в периоде
int t=2; //число периодов
int amp=70; //амплитуда
int h = 40; //отступ для текста
int x0=20; //начала координат
double[] f = new double [imax*t+10];
f[i] = Math.Round(amp * Math.Sin(2 * Math.PI / imax * i));
Graphics g = Graphics.FromHwnd(this.Handle); // Где рисуем
Pen pen = Pens.Black; // Чем рисуем
g.DrawString(«График синусоиды», new Font(«Arial», 14),
Brushes.Red, 0, 0); //Вывод текста
//textBox1.Text = «График синусоиды»;
g.DrawLine(pen , x0, y0, x0+imax*t, y0); //Рисуем ось X
g.DrawLine(pen, x0, y0-amp, x0, y0+amp); //Рисуем ось Y
int f1 = y0 — (int)f[i]; //Координата Y[i]
int f2 = y0 — (int)f[i + 1]; //Координата Y[i+1]
g.DrawLine(pen, x0+i, f1, x0+i+1, f2);
private void Form1_Load(object sender, EventArgs e)
При прогоне программы получается результат:
24.2.Компонент Chart
Создать программу отображения диаграммы двух функций с использованием компонента Chart. Проект – WindowsForm приложение.
Пример. Создать программу отображения диаграммы двух функций sin(x) и cos(x) с использованием компонента Chart. Проект – WindowsForm приложение. Стиль линий Spline.
Создаем – WindowsForm приложение. В форму заносим компоненты chart1 для отображения диаграммыи button1 для создания стартового обработчика событий.
В окне свойств Button1 задаем его свойству Text значение Старт.
В окне компонента Chart1 в раэделе Seies определяем две серии:
- Для функции sin(x) с именем Синус.
- Для функции cos(x) с именем Косинус.
Двойным щелчком по кнопке создаем в окне кода шаблон обработчика собыия нажатия кнопки. Функциоинальная часть обработчика включает задание в цикле наборов данных для серий.
public partial class Form1 : Form
private void chart1_Click(object sender, EventArgs e)
private void button1_Click(object sender, EventArgs e)
y = Math.Sin(Math.PI / 5 * x);
y = Math.Cos(Math.PI / 5 * x);
private void Form1_Load(object sender, EventArgs e)
При запуске программы отображается форма, в которой .прорисовываются диаграмма с двумя поименованными сериями и кнопка старта. Самаих графиков пока нет, так как данные для них формирует обработчик.
Кнопка button1 (Старт). Она вызывает построение графиков в окне.
Источник: studfile.net
С++ как начертить график в консольном приложении?
У меня есть код, находящий значения конхоиды Никомеда, и я хотел бы реализовать отрисовку графика по точкам(параллельно с вычислением значений). Я пытался сделать отрисовку прямо в консоли, но в моей реализации график отрисовывается моментально и пропадает при первой перерисовке окна. Есть ли какие-то другие варианты отрисовать график? Я думаю о варианте открыть еще одно окно (WinForm) и отрисовать уже в нем, но не могу найти примера чего-то подобного.
#define _USE_MATH_DEFINES #define _CRT_SECURE_NO_WARNINGS #include #include #include #include #include #include #include using namespace std; void Conhoid(void) < float h = M_PI / 180,x,y,a = 20,r = 40; float f = -3; while (f > DWORD WINAPI Stream(LPVOID lparoun) < Conhoid(); return 0; >DWORD WINAPI DrawStream(LPVOID lparoun) < HWND hwnd = GetConsoleWindow(); HDC hdc = GetDC(hwnd); float h = M_PI / 180, x, y, a = 20, r = 40; float f = -3; while (f ReleaseDC(hwnd, hdc); std::cin.ignore(); return 0; > int main() < setlocale(LC_ALL, «RUSSIAN»); DWORD dwStream = 1; HANDLE hStream, drawStream; hStream = CreateThread(NULL, 0, Stream, dwStream); drawStream = CreateThread(NULL, 0, DrawStream, dwStream); if (hStream == NULL) printf(«Поток не запущенn»); else < printf(«Поток завершилсяn»); printf(«n»); CloseHandle(hStream); >_getch(); return 0; >
Отслеживать
20.1k 6 6 золотых знаков 37 37 серебряных знаков 81 81 бронзовый знак
задан 10 янв 2020 в 19:25
303 3 3 серебряных знака 14 14 бронзовых знаков
Ну можно еще рисовать в битмап или используя что-то типа gnuplot
10 янв 2020 в 19:27
Рисуйте график в файле звездочками, как делали во времена алфавитно-цифровых дисплеев. Потом просматривайте а Блокноте. 🙂
11 янв 2020 в 8:41
> Рисуйте график в файле звездочками, как делали во времена алфавитно-цифровых дисплеев. — ну конечно, последние 25 лет развития компьютеров нужны были именно для этого. Хотя иногда задумываешься: нарисовать график функции на ZX Spectrum или БК-0010 было немного попроще, чем сейчас на среднем офиснмо компьютере
7 окт 2020 в 18:08
Выплёвывайте данные в gnuplot. Он — сила, и это решение кроссплатформенно.
7 окт 2020 в 20:19
2 ответа 2
Сортировка: Сброс на вариант по умолчанию
То, что вы рисуете напрямую в окне консоли, затирается стандартным обработчиком отрисовки conhost при следующем обновлении окна (как при выводе нового текста в консоль, так и при изменении, например, размеров ее окна). Переопределить этот обработчик нельзя, но можно отобразить свое окно поверх консоли, как показано в примере ниже. Кроме того, код рисования графика в вопросе рисует график по отдельным точкам, я переделал его с SetPixel на MoveTo/LineTo, чтобы он выглядел непрерывным.
#define _USE_MATH_DEFINES #define _CRT_SECURE_NO_WARNINGS #include #include #include #include #include #include #include WCHAR szTitle[] = L»Conhoid»; WCHAR szWindowClass[] = L»ConhoidWndClass»; //координаты окна const int WND_X = 300; const int WND_Y = 50; const int WND_W = 400; const int WND_H = 400; ATOM MyRegisterClass(HINSTANCE hInstance); LRESULT CALLBACK WndProc(HWND, UINT, WPARAM, LPARAM); DWORD WINAPI Draw(HDC hdc); DWORD WINAPI Run(LPVOID lpThreadParameter) < HINSTANCE hInstance = GetModuleHandle(NULL); HWND hCon = GetConsoleWindow(); RECT rc; MSG msg; MyRegisterClass(hInstance); //инициализация класса окна GetWindowRect(hCon, //получаем положение окна консоли //создаем окно HWND hWnd = CreateWindowW(szWindowClass, szTitle, WS_BORDER, rc.left + WND_X, rc.top + WND_Y, WND_W, WND_H, hCon, nullptr, hInstance, nullptr); SetWindowLong(hWnd, GWL_STYLE, 0); //убираем строку заголовка if (hWnd == nullptr) < printf(«Error CreateWindown»); return 0; >ShowWindow(hWnd, SW_SHOW); UpdateWindow(hWnd); //запуск цикла обработки сообщений while (GetMessage( TranslateMessage( DispatchMessage( >return 0; > ATOM MyRegisterClass(HINSTANCE hInstance) < WNDCLASSEXW wcex; wcex.cbSize = sizeof(WNDCLASSEX); wcex.style = CS_HREDRAW | CS_VREDRAW; wcex.lpfnWndProc = WndProc; wcex.cbClsExtra = 0; wcex.cbWndExtra = 0; wcex.hInstance = hInstance; wcex.hIcon = LoadIcon(nullptr, IDI_APPLICATION); wcex.hCursor = LoadCursor(nullptr, IDC_ARROW); wcex.hbrBackground = (HBRUSH)GetStockObject(GRAY_BRUSH); wcex.lpszMenuName = NULL; wcex.lpszClassName = szWindowClass; wcex.hIconSm = LoadIcon(nullptr, IDI_APPLICATION); return RegisterClassExW( >LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam) < HDC hdc; switch (message) < case WM_PAINT: PAINTSTRUCT ps; hdc = BeginPaint(hWnd, Draw(hdc); EndPaint(hWnd, break; default: return DefWindowProc(hWnd, message, wParam, lParam); >return 0; > void Conhoid(void) < float h = M_PI / 180, x, y, a = 20, r = 40; float f = -3; while (f > DWORD WINAPI Stream(LPVOID lparoun) < Conhoid(); return 0; >DWORD WINAPI Draw(HDC hdc) < float h = M_PI / 180, x, y, a = 20, r = 40; float x0, y0; float f = -3; x = a + r * cos(f); y = a * sin(f) / cos(f) + r * sin(f); x0 = x; y0 = y; SelectObject(hdc, GetStockObject(WHITE_PEN)); MoveToEx(hdc, 300 + x, 50 + y, nullptr); while (f else < MoveToEx(hdc, 300 + x, 50 + y, nullptr); >f += h; x0 = x; y0 = y; > return 0; > int main() < setlocale(LC_ALL, «RUSSIAN»); DWORD dwStream = 1; HANDLE hStream, drawStream; hStream = CreateThread(NULL, 0, Stream, dwStream); drawStream = CreateThread(NULL, 0, Run, dwStream); if (hStream == NULL) printf(«Поток не запущенn»); else < printf(«Поток завершилсяn»); printf(«n»); CloseHandle(hStream); >_getch(); return 0; >
Источник: ru.stackoverflow.com