1 / 1 / 0
Регистрация: 16.03.2015
Сообщений: 16
1

Решить систему ДУ методом Эйлера

10.06.2015, 02:45. Показов 1973. Ответов 2
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Здравствуйте. Будьте добры, подсобите. Начну по порядку. Есть система ДУ, надо решить методом Эйлера. Если для одного уравнения я могу сообразить
Кликните здесь для просмотра всего текста

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
static double VpuskV (double angle, double l, double Ss, double V)
        {
            return V *= (Math.Sin(angle) + (l * 2 * Math.Sin(angle) * Math.Cos(angle)) / 2)
              / (2 / (Ss - 1) + (1 - Math.Cos(angle) + (l / 4) * (1 - (2 * Math.Cos(angle) * Math.Cos(angle) - 1))));
 
 
        }
private void button1_Click(object sender, EventArgs e)
        {
            double angle = 0 * Math.PI / 180;
            double angle1 = 180 * Math.PI / 180;
            int n = Convert.ToInt32(textBox8.Text);
            double h = (angle1 - angle) / n;
            double V1 = V;
            double V = Vc;
            for (int i = 1; i <= n; i++)
            {
                double f1 = VpuskV(angle, l, Ss, V);
                angle += h;
                V += f1 * h;
                V1 = V;
            }
            string temp = "";
            temp += Convert.ToString(V);
            textBox21.Text = temp;
          }

то для системы я, мягко говоря, слабоват.) Плюсом в системе такая заноза, что значение "V" присутствует и во втором, и в третьем уравнениях (аналогичная ситуация и с искомыми значениями второго и третьего уравнений -- также присутствуют в друг друге). Может у кого-нибудь найдется пример, кто-нибудь подскажет что дельное? (Так понимаю, надо через массивы действовать?)
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
10.06.2015, 02:45
Ответы с готовыми решениями:

Как решить систему из двух уравнений методом Эйлера?
Полно кодов интернете для решения ОДУ методом Эйлера. А кто нибудь знает как решить СИСТЕМУ из двух...

Решить уравнение колебания маятника методом Эйлера
Здравствуйте! Такая проблема надо решить уравнение колебания маятника методом Эйлера. Колебания...

Решить дифференциальное уравнение второго порядка методом эйлера
Нужно решить дифференциальное уравнение второго порядка методом эйлера. На экран вывести график...

Решить систему диффиренциальных уравнений методом сеток
Доброго времени суток! Помогите перевести код с Pascal в C#. Не обязательно весь) Мне главное...

2
660 / 530 / 137
Регистрация: 07.07.2011
Сообщений: 1,232
10.06.2015, 10:10 2
phag,
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
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
    internal class MethodEuler : INotifyPropertyChanged
    {
        #region protected Fields
 
        protected double _endInterval;
 
        protected Func<double, double, double> _func;
 
        protected double _h;
 
        protected double _x0;
 
        protected  double _y0;
 
        #endregion protected  Fields
 
        #region Public Constructors
 
        /// <summary>
        /// Инициализирует новый обьект <see cref="MethodEuler"/> класса.
        /// </summary>
        public MethodEuler ()
            : this ( 0.001, -10, 0 )
        {
        }
 
        /// <summary>
        /// Инициализирует новый обьект <see cref="MethodEuler"/> класса.
        /// </summary>
        /// <param name="H">Шаг сетки.</param>
        /// <param name="X0">Начальное условие.</param>
        /// <param name="Y0">Начальное условие.</param>
        public MethodEuler ( double H = 0.001, double X0 = -10, double Y0 = 0 )
        {
            this._h = H;
            this._x0 = X0;
            this._y0 = Y0;
        }
 
        #endregion Public Constructors
 
        #region Public Events
 
        /// <summary>
        /// Происходит при изменении значения свойства.
        /// </summary>
        public  event PropertyChangedEventHandler PropertyChanged;
 
        #endregion Public Events
 
        #region Public Properties
 
        /// <summary>
        /// Получает или задает конечный интервал по оси X.
        /// </summary>
        /// <value>
        /// Точка конца отрезка.
        /// </value>
        public double EndInterval
        {
            get
            {
                return _endInterval;
            }
 
            set
            {
                SetField ( ref _endInterval, value );
            }
        }
 
        /// <summary>
        /// Функция F(x, y).
        /// </summary>
        /// <value>
        /// Функция F(x, y).
        /// </value>
        public Func<double, double, double> Func
        {
            get
            {
                return _func;
            }
 
            set
            {
                SetField ( ref _func, value );
            }
        }
 
        /// <summary>
        /// Получает или задает шаг сетки.
        /// </summary>
        /// <value>
        /// Шаг сетки.
        /// </value>
        public double H
        {
            get
            {
                return _h;
            }
 
            set
            {
                SetField ( ref _h, value );
            }
        }
 
        /// <summary>
        /// Получает или задает начальное условие x0.
        /// </summary>
        /// <value>
        /// Начальное условие x0.
        /// </value>
        public double X0
        {
            get
            {
                return _x0;
            }
 
            set
            {
                SetField ( ref _x0, value );
            }
        }
 
        /// <summary>
        /// Получает или задает начальное условие y0.
        /// </summary>
        /// <value>
        /// Начальное условие y0.
        /// </value>
        public double Y0
        {
            get
            {
                return _y0;
            }
 
            set
            {
                SetField ( ref _y0, value );
            }
        }
 
        #endregion Public Properties
 
        #region Public Methods
 
        public IEnumerable<Tuple<double, double>> GetSolution ()
        {
            double nextX = X0;
            double nextY = Y0;
 
            for ( double i = X0; Math.Round ( i, 5 ) <= EndInterval; i += H )
            {
                yield return new Tuple<double, double> ( nextX, nextY );
 
                nextY = nextY + Func ( nextX, nextY ) * H;
                nextX += H;
                nextX = Math.Round ( nextX, 5 );
            }
        }
 
        public IEnumerable<Tuple<double, double>> GetSolution ( double x0, double y0, double h )
        {
            this.X0 = x0;
            this.Y0 = y0;
            this.H = h;
 
            return GetSolution ();
        }
 
        #endregion Public Methods
 
        #region Protected Methods
 
        /// <summary>
        /// Called when [property changed].
        /// </summary>
        /// <param name="propertyName">Name of the property.</param>
        protected void OnPropertyChanged ( string propertyName )
        {
            PropertyChangedEventHandler handler = PropertyChanged;
            if ( handler != null )
                handler ( null, new PropertyChangedEventArgs ( propertyName ) );
        }
 
        /// <summary>
        /// Sets the field.
        /// </summary>
        /// <typeparam name="T"></typeparam>
        /// <param name="field">The field.</param>
        /// <param name="value">The value.</param>
        /// <param name="propertyName">Name of the property.</param>
        /// <returns></returns>
        protected bool SetField<T> ( ref T field, T value, [CallerMemberName] string propertyName = null )
        {
            if ( EqualityComparer<T>.Default.Equals ( field, value ) )
                return false;
 
            field = value;
            OnPropertyChanged ( propertyName );
 
            return true;
        }
 
        #endregion Protected Methods
    }
Вот как то писал для одного уравнения, очень легко модифицировать и под систему
0
1 / 1 / 0
Регистрация: 16.03.2015
Сообщений: 16
10.06.2015, 14:33  [ТС] 3
Спасибо, постараюсь разобраться. А в моем примере нельзя присобачить систему?
То есть, добавив еще 2 функции, что-то добавить для общего решения этих самых функций.
0
10.06.2015, 14:33
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
10.06.2015, 14:33
Помогаю со студенческими работами здесь

Решить систему линейных уравнений методом Гаусса с применением классов
помогите,пожалуйста,решить систему линейных уравнений методом Гаусса с применением классов,саму...

Методом итераций решить систему линейных уравнений с точностью до 0.001
Методом итераций решить систему линейных уравнений с точностью до 0.001 Помогите исправить...

Методом итераций решить систему линейных уравнений с точностью до 0.001
решение системы линейных уравнений методом простой итерации с# помоги пожалуйста переделать...

Решить уравнение методом итераций, методом ньютона и методом половинного деления
решить уравнение методом итераций,методом ньютона и методом половинного деления x-1 / (3 + sin...


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

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

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru