.NET 4.x Разработать программу для построения графиков функции - C#
Формулировка задачи:
Разработать программу для построения графиков функции. Считать из файла, указанного пользователем значения абсциссы Х (не менее 20 значений), произвести сортировку Х по возрастанию, рассчитать для них значения ординаты У, записать результат вычисления в новый файл в формате:
Х1 У1а У1в
Х2 У2а У2в
Диапазон изменения значений переменной x — произвольный, задаваемый пользователем с учётом областей определения функций.
1- функция (|x-1|/2)-1.75
2- функция (x/3)cos(x-1-(П/3))
Решение задачи: «.NET 4.x Разработать программу для построения графиков функции»
textual
Листинг программы
using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Windows.Forms; using ZedGraph; using System.IO; namespace WindowsFormsApplication1 { public partial class app : Form { public app() { InitializeComponent(); } public void Open_Click(object sender, EventArgs e) { OpenFileDialog dialog = new OpenFileDialog(); dialog.Filter = "Текстовый документ |*.txt"; if (dialog.ShowDialog() == System.Windows.Forms.DialogResult.OK) { char[] delimiter = new char[] { '\n', '\t', ' ', '\r' }; string[] s = File.ReadAllText(dialog.FileName).Split(delimiter, StringSplitOptions.RemoveEmptyEntries); double[] xValues = (from val in s let res = double.Parse(val) orderby res select res).Distinct().ToArray(); GraphPane pane = zedGraph.GraphPane; // Получим панель для рисования // Очистим список кривых на тот случай, если до этого сигналы уже были нарисованы pane.CurveList.Clear(); PointPairList f1_list = new PointPairList(); // Создадим список точек для кривой Графика №1 PointPairList f2_list = new PointPairList(); // Создадим список точек для кривой Графика №2 // Заполним массив точек для Графика №1 foreach (float x in xValues) { double y = (x / 3f) * Math.Cos(x - 1f - (Math.PI / 3f)); f1_list.Add(x, y); } // Заполним массив точек для Графика №2 // Интервал и шаги по X могут не совпадать на разных кривых foreach (float x in xValues) { double y = (Math.Abs(x - 1) / 2) * 1.75; f2_list.Add(x, y); } // Создадим кривую с названием "График №1", // которая будет рисоваться голубым цветом (Color.Blue), // Опорные точки будут выделяться плюсиками (SymbolType.Plus) LineItem f1_curve = pane.AddCurve("График №1", f1_list, Color.Blue, SymbolType.Plus); // Создадим кривую с названием "График №2", // которая будет рисоваться красным цветом (Color.Red), // Опорные точки будут выделяться плюсиками (SymbolType.Plus) LineItem f2_curve = pane.AddCurve("График №2", f2_list, Color.Red, SymbolType.Plus); // Вызываем метод AxisChange (), чтобы обновить данные об осях. // В противном случае на рисунке будет показана только часть графика, // которая умещается в интервалы по осям, установленные по умолчанию zedGraph.AxisChange(); // Обновляем график zedGraph.Invalidate(); } } private void Save_Btn_Click(object sender, EventArgs e) { } private void Save_img_Btn_Click(object sender, EventArgs e) { // Для сохранения картинки всего компонента ZedGraphControl // достаточно вызвать метод SaveAsBitmap(). // Создание и показ диалога выбора имени файла возьмет на себя ZedGraphControl zedGraph.SaveAsBitmap(); } } }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д