Форум программистов, компьютерный форум CyberForum.ru Форум программистов | Компьютерный форум | Форум web-программистов | Форум по электронике и бытовой технике | Форум о софте | Научный форум | Карьера и бизнес
CyberForum.ru - форум программистов и сисадминов > > > >
Восстановить пароль Регистрация

Ответ Создать новую тему
 
Nerfius
Гость
Сообщений: n/a
22.05.2012, 00:53     Построить линейный тренд методом наименьших квадратов
  #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()); 
            }
 
        }
 
        
    }
}
AdAgent
Объявления
22.05.2012, 00:53
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);
 
            }
            
        }
Yandex
Объявления
27.05.2012, 18:52
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Ответ Создать новую тему

Похожие темы
Тема Раздел Автор Дата
MathCAD методом наименьших квадратов построить модель
методом наименьших квадратов построить модель y(x) = a +b*x^2 и найти дисперсию ошибок моделирования xi = -1;2;4;5 yi = -5; -2; 10; 20; Не получается реализовать :cry: вот сделал не знаю...
MathCAD igor myakota 04.07.2014 13:46
Линейный тренд и метод наименьших квадратов C#
Программа методом наименьших квадратов вычесляет параметры оптимальной прямой для заданной группы точек на плоскости и отображает точки и построенную прямую. Точки должны читаться из файла....
Заказать программу Komi_ 28.05.2013 06:45
Pascal ABC Построить линейную модель y=a0+a1*x методом наименьших квадратов
Построить линейную модель y=a0+a1*x методом наименьших квадратов. Предсказать значение y в точке x0 (0 внизу икса) и в точке x=10. X= 0,4; 1,1; 1,4; 1,6; 2,4; 2,9; 3,5; 3,9; 4,4; 4,7. ...
Pascal ABC SGUPS 26.09.2012 07:17
C# Написать программу, вычисляющую коэффициенты полинома при интерполяции методом наименьших квадратов
Здравствуйте. Суть такова, нужно написать программу которая вычисляла б коэффициенты полинома при интерполяции методом наименьших квадратов и показывала график. Для графики использовал библиотеку...
C# для начинающих tsmaggot1 12.05.2012 02:49
C# Методом наименьших квадратов вычислить параметры для заданной группы точек на плоскости
Программисты, пожалуйста помогите!!! через 2 недели сдать надо, я незнаю как делать(( Нам необходимо создать программу, которая методом наименьших квадратов вычисляет параметры для заданной группы...
C# для начинающих PR13RAK 24.04.2012 08:19
C# Приближение функциии методом наименьших квадратов
Помогите плз ваще не понимаю как сделать . Надо написать программу чтоб она приближала функцию методом НАИМЕНЬШИХ КВАДРАТОВ. я даже сам метод не помнимаю мы его не проходили, но я вот нашел саму...
C# для начинающих cthutq10cfe 25.12.2011 19:25
C# Составить программу, аппроксимирующую набор экспериментальных точек методом наименьших квадратов
Помогите пожалуйста..... в С#(си шарпе) составить программу, аппроксимирующую набор экспериментальных точек методом наименьших квадратов Значения х y чтоб вводились с клавиатуры.
C# для начинающих cthutq10cfe 19.12.2011 22:27
Опции темы

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

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