Форум программистов и сисадминов CyberForum.ru
Вернуться   Форум программистов и сисадминов CyberForum.ru > Форум Форум программистов > Форум .NET > Форум C# .NET > Форум C# для начинающих
Восстановить пароль Регистрация

Ответ Создать новую тему
 
Старый 22.05.2012, 00:53   #1
Nerfius
Новичок
 
Регистрация: 22.05.2012
Сообщений: 2
Репутация: 0 (0)
Построить линейный тренд методом наименьших квадратов / C# для начинающих

Сразу извините, если что-то не так в оформлении, я на форуме новичок , кстати классный форум, много интересных тем... К делу, пишу прогу, которая должна построить линейный тренд методом наименьших квадратов, на данной стадии она умеет выводить координаты точек из текстового фаила в лист и рисовать на панельке разные стандартные графики, но они, к сожалению, пока никак не связаны с моей задачей (я вообще взял этот кусок из другой программы). Так вот в этом куске есть функция, которая должна переводить координаты в пиксели и рисовать по ним точки на графике, тобишь на панельке, за точки я планирую взять эллипсы, кто шарит, помогите с этим шагом, я калякал по-всякому, получается каша...
Код 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()); 
            }
 
        }
 
        
    }
}
Старый 27.05.2012, 18:52  [ТС]   #2
Nerfius
Новичок
 
Регистрация: 22.05.2012
Сообщений: 2
Репутация: 0 (0)
Построить линейный тренд методом наименьших квадратов / C# для начинающих

Я сам справился...
Код 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);
 
            }
            
        }
Другие темы раздела Форум начинающих программистов C#. Вопросы по C#.NET от начинающих. Помощь студентам и школьникам в решении задач.
Собрать все коды в программу для курсовой C#
Помогите пожалуйста, если не трудно, то сроки дико поджимают, а времени не хватает... Есть текст программы в общем виде(пример) текст.док Нужно его загнать в с# и вместо программы(идз) которая там вставить свою, которая уже сделана, в архиве Если не трудно, помогите это сделать, то...
Реализовать удаление элементов из очереди потоком C#
Доброго времени суток. Будьте так добры в следующем. Имеем: static int count = 0; static object locker = new object(); static Queue<string> qe = new Queue<string>(); static string nate = "Ihaveall"; static void Worker() { int c = 0; ...
Старый 27.05.2012, 18:52
Yandex
Объявления
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Ответ Создать новую тему

Похожие темы
Тема Автор
С++ для начинающих C++ Линейный Метод Наименьших Квадратов. ошибка в расчетах
Разработка программы аппроксимации табличной функции степенным рядом( линейный метод наименьших квадратов). использование глобальных переменных не допускается. Ошибка в расчетах. Думаю, что проблема тут while(!strstr(s1,"EOF")) { fscanf(f,"%s%s",s1,s2); x=atof(s1); y=atof(s2);...
prettynetty
MathCAD Уравнение методом наименьших квадратов
Ребята! Подскажите пожалуйста как решить уравнение Lny=a+Lnb1x1+Lnb2x2+Lnb3x3 методом наименьших квадратов?
mc.hrum
MS Office Excel методом наименьших квадратов
Доброго времени суток.Если кому не трудно помогите с этим заданием. Найти методом наименьших квадратов коэффициенты линейного уравнения, аппроксимирующего экспериментальные данные (результат округлять до 2 знаков после запятой): а) x 1 2 3 4 5 y 2,25 3,37 5,06 7,59 11,4
den=
MathCAD аппроксимация методом наименьших квадратов
добрый день , нужно произвести аппроксимацию по методу МНК (метод наименьших квадратов). d. Построить график изменения погрешности восстановления. Оценить дисперсию ошибки. Выбрать наилучшую частоту дискретизации, сигнала по вот этой формуле y1 = N * log(N + 1) / (N ^ 2 - 1) * sin((2 * pi * 100 /...
RusH=
С++ для начинающих Минимизация функции методом наименьших квадратов
У кого есть исходники реализации метода наименьших квадратов на С++, если есть применение её для оценки какой нибудь функции.
desant0112
Опции темы

Текущее время: 07:19. Часовой пояс GMT +4.

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.7 PL3
Copyright ©2000 - 2014, vBulletin Solutions, Inc.