Форум программистов, компьютерный форум, киберфорум
C# Windows Forms
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.63/8: Рейтинг темы: голосов - 8, средняя оценка - 4.63
0 / 0 / 2
Регистрация: 13.12.2012
Сообщений: 17

Нарисовать по полученным точкам кривую Эйлера

14.09.2014, 17:28. Показов 1761. Ответов 5
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
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;
 
namespace Моделирование1
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
            double x, y, a, b, h, h2;
 
 
            y = 0;
            a = 0;
            b = 3;
            h = 3;
            x = a;
 
            //f(x, y)=2*y/x*x*x ;
 
            if (x == a)
            {
                do
                {
                    Console.WriteLine("{0} {1}", x, y);
                    y += h * 2 * y / x * x * x;
                    x += h;
 
                    chart1.ChartAreas[0].AxisX.Interval = x; // для оси X
                    chart1.ChartAreas[0].AxisY.Interval = y; // для оси Y
 
 
                } while (x <= b + 0.1);
            }
            else
            {
                do
                {
                    h2 = h / 2;
 
                    Console.WriteLine("{0} {1}", x, y);
                    y += h2 * 2 * y / x * x * x;
                    x += h2;
 
                    chart1.ChartAreas[0].AxisX.Interval = x; // для оси X
                    chart1.ChartAreas[0].AxisY.Interval = y; // для оси Y
 
 
                } while (x <= b + 0.1);
            }
 
 
            Console.ReadLine();
            chart1.Series[0].ChartType = System.Windows.Forms.DataVisualization.Charting.SeriesChartType.Spline;
        }
 
        public static double f(double x, double y)
        {
            return Math.Cos(y) + 3 * x;
        }
 
 
    }
}

Можете помочь пожалуйста! Необходимо, в windows forms, нарисовать по полученным точкам кривую Эйлера, мы имеем промежуток, начальные x и y, а также шаг - h. Причем если мы попадпем в промежуток то шаг h, а если не попадаем то шаг - h/2. нужно изобразить, я делал в консольном приложении, он вычислил мне необходимые точки, но я не знаю как это перепихнуть на форму чтоб отрисовывало, я пробовал через chart.
0
Лучшие ответы (1)
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
14.09.2014, 17:28
Ответы с готовыми решениями:

Реализовать кривую Безье по четырем точкам
Помогите,пожалуйста,реализовать кривую Безье по 4-м точкам с помощью Graphics.DrawBezier()

Нарисовать кривую
Здравствуйте. Пожалуйста, подскажите. Как нарисовать кривую? Нужно сделать так, чтобы, щелкнув по кнопке, на форме можно было бы нарисовать...

Нарисовать кривую Леви
Помогите ,что я сделал не так почему-то не хочет рисовать Кривую Леви .Вот код using System.Drawing; using System.Drawing.Drawing2D; ...

5
93 / 94 / 51
Регистрация: 19.06.2013
Сообщений: 323
15.09.2014, 10:02
Тогда скиньте код консольного приложения. Потому что этот код не рабочий!
C#
1
y += h * 2 * y / x * x * x;
Результат NaN
0
0 / 0 / 2
Регистрация: 13.12.2012
Сообщений: 17
15.09.2014, 10:14  [ТС]
Здесь я просто вывел точки, без проверок и доп шага h/2. Ввод чисел осуществляется через пробел.
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
 
namespace ConsoleApplication1
{
    class Program
    {
 
        public static void Main(string[] args)
        {
            double x, y, a, b, h;
            Console.WriteLine("введите y, a, b, h");
            double[] input = Console.ReadLine().Split().Select(Double.Parse).ToArray();
 
            y = input[0];
            a = input[1];
            b = input[2];
            h = input[3];
            x = a;
 
            do
            {
                Console.WriteLine("{0} {1}", x, y);
                y += h * f(x, y);
                x += h;
            } while (x <= b + 0.1);
 
            Console.ReadLine();
        }
 
        public static double f(double x, double y)
        {
            return Math.Cos(y) + 3 * x;
        }
    }
}
0
93 / 94 / 51
Регистрация: 19.06.2013
Сообщений: 323
15.09.2014, 11:49
Лучший ответ Сообщение было отмечено LaCnD как решение

Решение

Для начала добавьте ссылку к проекту. Правой кнопкой мыши на Ваш проект в окне Обзор проектов - добавить ссылку (Add reference...) - Далее вкладка .NET и щелкните дважды на System.Windows.Forms.DataVisualization. Готово. На форме разместите четыре textBox'а, один Button и один Chart. Теперь вверху кода вставьте:
C#
1
using System.Windows.Forms.DataVisualization.Charting;
Ну а вот и сам код:
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }
 
        public static double f(double x, double y)
        {
            return Math.Cos(y) + 3 * x;
        }
 
        private void button1_Click(object sender, EventArgs e)
        {
            double x, y, a, b, h;
 
            y = Convert.ToDouble(textBox1.Text);
            a = Convert.ToDouble(textBox2.Text);
            b = Convert.ToDouble(textBox3.Text);
            h = Convert.ToDouble(textBox4.Text);
            x = a;
 
            List<double> ox = new List<double>();
            List<double> oy = new List<double>();
 
            do
            {
                ox.Add(x);
                oy.Add(y);
                y += h * f(x, y);
                x += h;
            } while (x <= b + 0.1);
 
            for (int i = 0; i < ox.Count; i++)
                chart1.Series[0].Points.AddXY(ox[i], oy[i]);
 
            chart1.DataBind();
        }
    }
0
0 / 0 / 2
Регистрация: 13.12.2012
Сообщений: 17
15.09.2014, 23:03  [ТС]
BroDIK, сделал так как ты написал, но ничего не робит, ввожу данные , а ничего не рисуется( Как быть?

Извиняюсь, забыл, поставить в свойствах привязку к клику, (пустая бошка)! Работает, огнь! Спасибо!)))

Добавлено через 18 минут
C#
1
2
3
4
for (int i = 0; i < ox.Count; i++)
                chart1.Series[0].Points.AddXY(ox[i], oy[i]);
 
            chart1.DataBind();
Ой, забыл спросить, а что происходит в цикле, и что такое databind?
0
93 / 94 / 51
Регистрация: 19.06.2013
Сообщений: 323
16.09.2014, 11:20
LaCnD, в цикле мы выносим на 1-ю граф.линию точки (линия это Series, индекс нулевой). Функция AddXY() поочереди ставит точки из массивов ox и oy на линию.

Ну а функция DataBind() осуществляет привязку данных элемента к источнику данных (MSDN). Короче говоря, прорисовывает и фиксирует данные на графике

P.S. Не забудьте поставить лучший ответ в теме, как благодарность
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
16.09.2014, 11:20
Помогаю со студенческими работами здесь

Нарисовать кривую методом DrawCurve
Здравствуйте! Подскажите, можно ли нарисовать кривую методом DrawCurve(Pen pen, Point points), когда все точки находятся не в массиве...

Нарисовать непрерывную кривую используя контрол Chart
В общем необходимо нарисовать график, для этого использую chart. Тип диаграммы Point (ChartArea=Point), вот из этих Point-ов нужно...

Нарисовать простой график по точкам в Chart
Где у меня был супер мануал по этому контролу. Там можно самые разные диаграммы рисовать. Но к сожалению потерял его. Теперь в инете...

Как в ZedGraph нарисовать график по точкам
Доброго времени суток! Подскажите пожалуйста, как в ZedGraph нарисовать график по точкам. Те задано 20 точек, фактически это гистограмма, и...

Как в ZedGraph нарисовать график по точкам?
Привет всем! Подскажите пожалуйста, как в ZedGraph нарисовать график по точкам. Впервые работаю с ZedGraph. Написала код не могу понять в...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Новые блоги и статьи
Жизнь в неопределённости
kumehtar 23.03.2026
Жизнь — это постоянное существование в неопределённости. Например, даже если у тебя есть список дел, невозможно дойти до точки, где всё окончательно завершено и больше ничего не осталось. В принципе,. . .
Модель здравоСохранения: работники работают быстрее после её введения.
anaschu 23.03.2026
geJalZw1fLo Корпорация до введения программа здравоохранения имела много невыполненных работниками заданий, после введения программы количество заданий выросло. Но на выплатах по больничным это. . .
1С: Контроль уникальности заводского номера
Maks 23.03.2026
Алгоритм контроля уникальности заводского (или серийного) номера на примере документа выдачи шин для спецтехники с табличной частью. Данные берутся из регистра сведений, по которому настроено. . .
Хочу заставить корпорации вкладываться в здоровье сотрудников: делаю мат модель здравосохранения
anaschu 22.03.2026
e7EYtONaj8Y Z4Tv2zpXVVo https:/ / github. com/ shumilovas/ med2. git
1С: Программный отбор элементов справочника по группе
Maks 22.03.2026
Установка программного отбора элементов справочника "Номенклатура" из модуля формы документа. В качестве фильтра для отбора справочника служит группа номенклатуры. Отбор по наименованию группы. . .
Как я обхитрил таблицу Word
Alexander-7 21.03.2026
Когда мигает курсор у внешнего края таблицы, и нам надо перейти на новую строку, а при нажатии Enter создается новый ряд таблицы с ячейками, то мы вместо нервных нажатий Энтеров мы пишем любые буквы. . .
Krabik - рыболовный бот для WoW 3.3.5a
AmbA 21.03.2026
без регистрации и смс. Это не торговля, приложение не содержит рекламы. Выполняет свою непосредственную задачу - автоматизацию рыбалки в WoW - и ничего более. Однако если админы будут против -. . .
1С: Программный отбор элементов справочника по значению перечисления
Maks 21.03.2026
Установка программного отбора элементов справочника "Сотрудники" из модуля формы документа. В качестве фильтра для отбора служит значение перечислений. / / Событие "НачалоВыбора" реквизита на форме. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru