Форум программистов, компьютерный форум CyberForum.ru
Наши страницы

C# для начинающих

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 19, средняя оценка - 4.95
Nerfius
Сообщений: n/a
#1

Построить линейный тренд методом наименьших квадратов - C#

22.05.2012, 00:53. Просмотров 2545. Ответов 1
Метки нет (Все метки)

Сразу извините, если что-то не так в оформлении, я на форуме новичок , кстати классный форум, много интересных тем... К делу, пишу прогу, которая должна построить линейный тренд методом наименьших квадратов, на данной стадии она умеет выводить координаты точек из текстового фаила в лист и рисовать на панельке разные стандартные графики, но они, к сожалению, пока никак не связаны с моей задачей (я вообще взял этот кусок из другой программы). Так вот в этом куске есть функция, которая должна переводить координаты в пиксели и рисовать по ним точки на графике, тобишь на панельке, за точки я планирую взять эллипсы, кто шарит, помогите с этим шагом, я калякал по-всякому, получается каша...
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
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
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 System.IO;
 
namespace LinearTrend
{
    public partial class Form1 : Form
    {        
 
 
        double x1, x2;
        double y1, y2;
        int W, H;
 
        public Form1()
        {
            InitializeComponent();
        }
 
        int x2p(double x)
        {
            return (int)(W * (x - x1) / (x2 - x1) + 0.5);
        }
 
        int y2p(double y)
        {
            return (int)(H * (y - y2) / (y1 - y2) + 0.5);
        }
 
        //double lt(double x)
        //{
        //    return Math.Sin(x);
        //}
 
        private void Form1_Load(object sender, EventArgs e)
        {
            W = panel1.Width;
            H = panel1.Height;
            x1 = -10;
            x2 = 10;
            y1 = 2;
            y2 = -2;
        }
 
        private void panel1_Paint(object sender, PaintEventArgs e)
        {
            //нарисуем оси
            Pen p = new Pen(Color.Black);
            Point p1 = new Point(x2p(x1), y2p(0));
            Point p2 = new Point(x2p(x2), y2p(0));
            e.Graphics.DrawLine(p, p1, p2);
            p1 = new Point(x2p(0), y2p(y1));
            p2 = new Point(x2p(0), y2p(y2));
            e.Graphics.DrawLine(p, p1, p2);
            
            
            //Рисуем графику
            //double step = 0.1;
            //p.Color = Color.Red;
            //double x = x1;
            //p1 = new Point(x2p(x), y2p(lt(x)));
            //x += step;
            //p2 = new Point(x2p(x), y2p(lt(x)));
            //for (; x < x2; x += step)
            //{
            //    p2 = new Point(x2p(x), y2p(lt(x)));
            //    e.Graphics.DrawLine(p, p1, p2);
            //    p1 = p2;
            //}
 
 
        }
 
 
        
 
 
        //ВЫВОД КООДИНАТ в LIST
        public struct Pnt
        {
            public int X;
            public int Y;
        }
 
        private List<Pnt> lst_coords = new List<Pnt>();
 
 
        private void FileMenuLoadCoordinats_Click(object sender, EventArgs e)
        {
            if (openFileDialog.ShowDialog() == DialogResult.OK)
            {
                string message = string.Empty;//""
                StreamReader reader = new StreamReader(openFileDialog.FileName,Encoding.GetEncoding("windows-1251"));
                message = reader.ReadToEnd();
 
                
                
                string[] coords = message.Split(';');
                foreach (string item in coords)
                {
                    if (item.Trim() == string.Empty) continue;
                    string str_x = item.Replace("\r","").Replace("\n","").Split('\t')[0];
                    string str_y = item.Replace("\r","").Replace("\n","").Split('\t')[1];
                    int int_x=-1,int_y=-1;
                    if(int.TryParse(str_x,out int_x)&&int.TryParse(str_y,out int_y))
                    {
                        lst_coords.Add(new Pnt() { X = int_x, Y = int_y });
                    }
                }
 
            }
        }
 
        private void button1_Click(object sender, EventArgs e)
        {
            foreach (Pnt item in lst_coords)
            {
                listBox1.Items.Add(item.X.ToString() + " " + item.Y.ToString()); 
            }
 
        }
 
        
    }
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
22.05.2012, 00:53
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Построить линейный тренд методом наименьших квадратов (C#):

Методом наименьших квадратов вычислить параметры для заданной группы точек на плоскости - C#
Программисты, пожалуйста помогите!!! через 2 недели сдать надо, я незнаю как делать(( Нам необходимо создать программу, которая методом...

Метод наименьших квадратов - C#
Здравствуйте! Помогите пожалуйста составить программу в C#, а то я полный ноль в этом( Линейная аппроксимация МНК Буду очень...

.NET 2.x Метод наименьших квадратов - C#
Всем привет :) Есть ли у кого реализованный метод МНК в случае линейной модели или может кто подскажет как применить alglib...

Реализовать метод наименьших квадратов - C#
Хелп,я новичок. Срочно нужно сделать регрессионную модель ..выбрала МНК, а как сделать не знаю ХЕЛП!! Спасибо)

Использование метода наименьших квадратов по формуле ax^2+bx - C#
Здравствуйте. Помогите пожалуйста объяснить выделенное место в коде: это один из методов класса для аппроксимации функции ax^2+bx, где...

Метод наименьших квадратов(линейная регрессия) - C#
Собственно по сути задачи есть страны, у стран есть ввп за определенные года ну допустим с 1990 по 1995 есть формула вида y = a0 + a1x1 +...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Nerfius
Сообщений: n/a
27.05.2012, 18:52 #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
private void panel1_Paint(object sender, PaintEventArgs e)
        {
 
            //нарисуем оси
            DrawAxes(e.Graphics);
            //нарисуем точки
            DrawPoints(lst_coords, e.Graphics);
            //нарисуем линию тренда
            DrawLinearTrend(lst_coords, e.Graphics);
        }
 
 
        private void DrawPoints(List<Point> lst_coord, Graphics g)
        {
            if (lst_coord.Count == 0) return;
 
            Pen pen = new Pen(Color.Red);
            foreach (Point coor in lst_coord)
            {
 
                g.DrawEllipse(pen, x2p(coor.X), y2p(coor.Y), 5, 5);
 
            }
            
        }
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
27.05.2012, 18:52
Привет! Вот еще темы с ответами:

Метод наименьших квадратов - исправить ошибки в коде - C#
Здравствуйте! Помогите пожалуйста! Уже очень много раз переделывал и не помогает(((( Нужно построить модель метода наименьших квадратов! ...

Программа шифрования методом четырех квадратов - C#
Добрый день! Помогите пожалуйста из отладкой программы. Основной код программы уже написан, на данном этапе нужно добиться того, чтобы...

Построить методом прямых приближенное решение задачи - C#
Добрый день. Необходимо построить методом прямых приближенное решение задачи. Программу необходимо написать на Microsoft Visual Studio C#,...

Методом наименьших квадратов построить модель - MathCAD
методом наименьших квадратов построить модель y(x) = a +b*x^2 и найти дисперсию ошибок моделирования xi = -1;2;4;5 yi = -5; -2; 10;...


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

Или воспользуйтесь поиском по форуму:
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru