Форум программистов, компьютерный форум, киберфорум
Численные методы
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
25 / 0 / 0
Регистрация: 12.03.2023
Сообщений: 25

Как правильно задать параметр сходимости?

06.10.2025, 18:51. Показов 1210. Ответов 17

Студворк — интернет-сервис помощи студентам
Дорогие форумчане!
Прошу вашей помощи — я, к сожалению, уже не знаю, что делать.
Не получается правильно задать параметр сходимости: преподаватель постоянно указывает на ошибки в его формулировке.
Я не совсем понимаю, как правильно его записать, чтобы расчет учитывал сходимость и имел допустимую погрешность.
Буду очень благодарен за подсказки или примеры, как это правильно оформляется.
 Комментарий модератора 
Правила форума: пункт 4.7. Как можно более полно описывайте суть проблемы или вопроса, что было сделано для ее решения и какие результаты получены.

Visual Basic
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
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
Option Explicit
Function f(x As Double) As Double
    f = 3 * Sin(8 * x) - 0.7 * x + 0.9
End Function
 
Function f_prime(x As Double) As Double
    f_prime = 24 * Cos(8 * x) - 0.7
End Function
 
Function f_second_prime(x As Double) As Double
    f_second_prime = -192 * Sin(8 * x)
End Function
 
Function GreekXi() As String
    GreekXi = ChrW(&H3BE)
End Function
 
Function GreekAlpha() As String
    GreekAlpha = ChrW(&H3B1)
End Function
 
Function GreekDelta() As String
    GreekDelta = ChrW(&H3B4)
End Function
 
Function GreekEpsilon() As String
    GreekEpsilon = ChrW(&H3B5)
End Function
 
Sub НастройкаРешенияКомбинированным()
    Dim ws As Worksheet
    Dim sheetName As String: sheetName = "Комбинированный метод"
 
    On Error Resume Next
    Set ws = ThisWorkbook.Sheets(sheetName)
    On Error GoTo 0
 
    If ws Is Nothing Then
        Set ws = ThisWorkbook.Sheets.Add(After:=ThisWorkbook.Sheets(ThisWorkbook.Sheets.count))
        ws.Name = sheetName
    End If
    ws.Activate
    ws.Cells.Clear
    
    ws.Cells.Interior.color = RGB(255, 255, 255)
    ws.Cells.Font.Name = "Arial"
    ws.Cells.Font.size = 10
    
    With ws.Range("A1:J1")
        .Merge
        .Value = "РЕШЕНИЕ НЕЛИНЕЙНОГО УРАВНЕНИЯ КОМБИНИРОВАННЫМ МЕТОДОМ"
        .Font.bold = True
        .Font.size = 14
        .Font.color = vbWhite
        .HorizontalAlignment = xlCenter
        .VerticalAlignment = xlCenter
        .Interior.color = RGB(47, 82, 143)
        .RowHeight = 30
    End With
    
    ws.Range("A3").Value = "Входные данные": ws.Range("A3").Font.bold = True
    ws.Range("A4").Value = "Функция f(x):"
    ws.Range("B4").Value = "3*Sin(8x) - 0.7x + 0.9"
    
    ws.Range("A6").Value = "Интервал отделения [a, b]:"
    ws.Range("A7").Value = "a =": ws.Range("A7").HorizontalAlignment = xlRight
    ws.Range("A8").Value = "b =": ws.Range("A8").HorizontalAlignment = xlRight
    
    With ws.Range("B7:B8")
        .Interior.color = RGB(255, 242, 204)
        .Borders.LineStyle = xlContinuous
        .Borders.color = RGB(191, 144, 0)
        .NumberFormat = "0.00"
    End With
    ws.Range("B7").Value = -10
    ws.Range("B8").Value = 10
    
    ws.Range("D6").Value = "Точность вычислений:"
    ws.Range("D7").Value = GreekEpsilon() & " (по аргументу) =": ws.Range("D7").HorizontalAlignment = xlRight
    ws.Range("D8").Value = GreekDelta() & " (по функции) =": ws.Range("D8").HorizontalAlignment = xlRight
    
    With ws.Range("E7:E8")
        .Interior.color = RGB(222, 235, 247)
        .Borders.LineStyle = xlContinuous
        .Borders.color = RGB(68, 114, 196)
        .NumberFormat = "0.00001"
    End With
    ws.Range("E7").Value = 0.00001
    ws.Range("E8").Value = 0.00001
    
    Dim btn As Object
    On Error Resume Next
    ws.Buttons("btnРешить").Delete
    On Error GoTo 0
    
    Set btn = ws.Buttons.Add(ws.Range("G5").left, ws.Range("G5").Top, 193, 50)
    With btn
        .Caption = "Найти и уточнить все корни"
        .Name = "btnРешить"
        .OnAction = "РешитьУравнениеКомбинированным"
        .Font.size = 11
        .Font.bold = True
    End With
    
    ws.Columns("A:J").AutoFit
    ws.Columns("A").ColumnWidth = 25
    ws.Columns("D").ColumnWidth = 20
    ws.Columns("J").ColumnWidth = 15
End Sub
 
Function ОтделитьКорни(a As Double, b As Double) As Variant
    Dim roots As Object
    Set roots = CreateObject("System.Collections.ArrayList")
    
    Const step As Double = 0.115
    
    Dim x1 As Double: x1 = a
    Dim x2 As Double
    Dim f1 As Double: f1 = f(x1)
    Dim f2 As Double
    
    Do While x1 < b
        x2 = x1 + step
        If x2 > b Then x2 = b
        
        f2 = f(x2)
        
        If f1 * f2 <= 0 Then
            roots.Add Array(x1, x2)
        End If
        
        x1 = x2
        f1 = f2
    Loop
    
    If roots.count > 0 Then
        Dim result() As Variant
        ReDim result(1 To roots.count, 1 To 2)
        Dim i As Long
        For i = 0 To roots.count - 1
            result(i + 1, 1) = roots(i)(0)
            result(i + 1, 2) = roots(i)(1)
        Next i
        ОтделитьКорни = result
    Else
        ОтделитьКорни = Empty
    End If
End Function
 
Function УточнитьКореньКомбинированным(a As Double, b As Double, epsilon As Double, delta As Double)
    Dim x_left As Double, x_right As Double
    Dim f_left As Double, f_right As Double
    Dim iterations As Long, f_evals As Long, f_prime_evals As Long, f_second_evals As Long
    Dim alpha As Double, prev_interval As Double, current_interval As Double
 
    x_left = a: x_right = b
    iterations = 0: f_evals = 0: f_prime_evals = 0: f_second_evals = 0
 
    f_left = f(x_left): f_evals = f_evals + 1
    f_right = f(x_right): f_evals = f_evals + 1
 
    current_interval = Abs(x_right - x_left)
    alpha = 0
 
    Dim x_middle As Double, f_middle As Double
 
    Do
        iterations = iterations + 1
        prev_interval = current_interval
 
        Dim f_sec_prime_val As Double
        f_sec_prime_val = f_second_prime(x_left): f_second_evals = f_second_evals + 1
 
        Dim x_newton As Double, x_chord As Double
        Dim f_prime_val As Double
 
        If f_left * f_sec_prime_val > 0 Then
            f_prime_val = f_prime(x_left): f_prime_evals = f_prime_evals + 1
            If Abs(f_prime_val) < 0.000000000001 Then Exit Do
 
            x_newton = x_left - f_left / f_prime_val
            x_chord = x_right - f_right * (x_right - x_left) / (f_right - f_left)
 
            x_left = x_newton
            x_right = x_chord
        Else
            f_prime_val = f_prime(x_right): f_prime_evals = f_prime_evals + 1
            If Abs(f_prime_val) < 0.000000000001 Then Exit Do
 
            x_newton = x_right - f_right / f_prime_val
            x_chord = x_left - f_left * (x_right - x_left) / (f_right - f_left)
 
            x_left = x_chord
            x_right = x_newton
        End If
 
        f_left = f(x_left): f_evals = f_evals + 1
        f_right = f(x_right): f_evals = f_evals + 1
 
        current_interval = Abs(x_right - x_left)
        If prev_interval > 0.000000000000001 Then
            alpha = current_interval / (prev_interval ^ 2)
        End If
 
        x_middle = (x_left + x_right) / 2
        f_middle = f(x_middle): f_evals = f_evals + 1
 
        If current_interval / 2 <= epsilon And Abs(f_middle) <= delta Then Exit Do
 
        If iterations > 200 Then Exit Do
    Loop
 
    Dim root As Double: root = x_middle
    Dim arg_error As Double: arg_error = current_interval / 2
    Dim func_error As Double: func_error = Abs(f_middle)
 
    УточнитьКореньКомбинированным = Array(root, arg_error, func_error, iterations, _
                                         f_evals, f_prime_evals, f_second_evals, alpha)
End Function
 
Sub РешитьУравнениеКомбинированным()
    Dim ws As Worksheet: Set ws = ActiveSheet
    Application.ScreenUpdating = False
    
    Dim a As Double, b As Double, epsilon As Double, delta As Double
    On Error GoTo InputError
    a = ws.Range("B7").Value
    b = ws.Range("B8").Value
    epsilon = ws.Range("E7").Value
    delta = ws.Range("E8").Value
    If a >= b Then GoTo InputError
    
    ' Очистка предыдущих результатов
    ws.Range("A11:J200").Clear
    ws.Range("A11:J200").Interior.color = xlNone
    ws.Range("A11:J200").Borders.LineStyle = xlNone
    
    Dim outRow As Long: outRow = 11
    Dim startTime As Double: startTime = Timer
    
    Dim intervals As Variant
    intervals = ОтделитьКорни(a, b)
    
    If IsEmpty(intervals) Then
        ws.Range("A" & outRow).Value = "На интервале [" & a & ", " & b & "] корни не найдены."
        ws.Range("A" & outRow).Font.color = vbRed
        Application.ScreenUpdating = True
        Exit Sub
    End If
    
    ws.Range("A" & outRow).Value = "Результаты уточнения корней": ws.Range("A" & outRow).Font.bold = True
    outRow = outRow + 1
    
    Dim headers As Variant
    headers = Array("№", "Интервал [a, b]", "Корень " & GreekXi(), "Погр. |b-a|/2", _
                    "|f(" & GreekXi() & ")|", "Итераций", "Выч. f", "Выч. f'", "Выч. f''", _
                    "Парам. сход. (" & GreekAlpha() & ")")
    
    With ws.Range(ws.Cells(outRow, 1), ws.Cells(outRow, UBound(headers) + 1))
        .Value = headers
        .Font.bold = True
        .Interior.color = RGB(221, 235, 247)
        .Borders.LineStyle = xlContinuous
        .HorizontalAlignment = xlCenter
    End With
    
    Dim k As Long
    For k = 1 To UBound(intervals, 1)
        outRow = outRow + 1
        Dim interval_a As Double, interval_b As Double
        interval_a = intervals(k, 1)
        interval_b = intervals(k, 2)
        
        Dim result As Variant
        result = УточнитьКореньКомбинированным(interval_a, interval_b, epsilon, delta)
        
        ws.Cells(outRow, 1).Value = k
        ws.Cells(outRow, 2).Value = "[" & Format(interval_a, "0.00000") & "; " & Format(interval_b, "0.00000") & "]"
        ws.Cells(outRow, 3).Value = result(0)
        ws.Cells(outRow, 4).Value = result(1)
        ws.Cells(outRow, 5).Value = result(2)
        ws.Cells(outRow, 6).Value = result(3)
        ws.Cells(outRow, 7).Value = result(4)
        ws.Cells(outRow, 8).Value = result(5)
        ws.Cells(outRow, 9).Value = result(6)
        ws.Cells(outRow, 10).Value = result(7)
        
        With ws.Range(ws.Cells(outRow, 1), ws.Cells(outRow, UBound(headers) + 1))
            .Borders.LineStyle = xlContinuous
            .HorizontalAlignment = xlCenter
        End With
        ws.Cells(outRow, 2).HorizontalAlignment = xlLeft
        ws.Cells(outRow, 3).NumberFormat = "0.00000000"
        ws.Cells(outRow, 4).NumberFormat = "0.00E+00"
        ws.Cells(outRow, 5).NumberFormat = "0.00E+00"
        ws.Cells(outRow, 10).NumberFormat = "0.000"
    Next k
    
    Dim endTime As Double: endTime = Timer
    outRow = outRow + 2
    ws.Cells(outRow, 1).Value = "Общее время выполнения: " & Format(endTime - startTime, "0.0000") & " сек."
    ws.Cells(outRow, 1).Font.bold = True
    
    ws.Columns("A:J").AutoFit
    Application.ScreenUpdating = True
    MsgBox "Готово! Найдено и уточнено корней: " & UBound(intervals, 1), vbInformation
    Exit Sub
    
InputError:
    MsgBox "Ошибка входных данных! Убедитесь, что начало интервала (a) меньше его конца (b).", vbCritical
    Application.ScreenUpdating = True
End Sub
0
Лучшие ответы (1)
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
06.10.2025, 18:51
Ответы с готовыми решениями:

Найти радиус сходимости R, область сходимости E степенных рядов
Не могу решить, потому что никак до меня не доходит двойной факториал(

Определить радиус сходимости и область сходимости
Напишите правильное решение пожалуйста

Радиус сходимости и область абсолютной сходимости ряда
Радиус сходимости ряда \sum_{n=0}^\infty c_n(x+1)^n равен 5. Укажите область его абсолютной...

17
Эксперт по математике/физике
11055 / 7358 / 3986
Регистрация: 14.01.2014
Сообщений: 16,770
06.10.2025, 19:44
И где у Вас "параметр сходимости" в коде? А лучше бы приложили алгоритм используемого комбинированного метода Ньютона и хорд? с указанием этого "параметра сходимости".
1
1714 / 1152 / 300
Регистрация: 05.10.2014
Сообщений: 5,597
06.10.2025, 19:51
нам все 312 строк кода анализировать?
1
 Аватар для Pphantom
2243 / 1503 / 690
Регистрация: 17.03.2022
Сообщений: 4,790
06.10.2025, 20:18
Цитата Сообщение от Qiyas Посмотреть сообщение
Буду очень благодарен за подсказки или примеры, как это правильно оформляется.
Ну первая очевидная подсказка: это оформляется в виде формул с текстом, а не в виде кода на VB.
0
25 / 0 / 0
Регистрация: 12.03.2023
Сообщений: 25
06.10.2025, 21:38  [ТС]
Вот тут

Visual Basic
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
Function УточнитьКореньКомбинированным(a As Double, b As Double, epsilon As Double, delta As Double)
    Dim x_left As Double, x_right As Double
    Dim f_left As Double, f_right As Double
    Dim iterations As Long, f_evals As Long, f_prime_evals As Long, f_second_evals As Long
    Dim alpha As Double
 
    x_left = a: x_right = b
    iterations = 0: f_evals = 0: f_prime_evals = 0: f_second_evals = 0
 
    f_left = f(x_left): f_evals = f_evals + 1
    f_right = f(x_right): f_evals = f_evals + 1
 
    ' Переменные для вычисления параметра сходимости
    Dim prev_prev_mid As Double, prev_mid As Double, current_mid As Double
    Dim x_middle As Double, f_middle As Double
    
    x_middle = (x_left + x_right) / 2
    prev_prev_mid = x_middle
    prev_mid = x_middle
    current_mid = x_middle
    alpha = 0
 
    Do
        iterations = iterations + 1
        prev_prev_mid = prev_mid
        prev_mid = current_mid
 
        Dim f_sec_prime_val As Double
        f_sec_prime_val = f_second_prime(x_left): f_second_evals = f_second_evals + 1
 
        Dim x_newton As Double, x_chord As Double
        Dim f_prime_val As Double
 
        If f_left * f_sec_prime_val > 0 Then
            f_prime_val = f_prime(x_left): f_prime_evals = f_prime_evals + 1
            If Abs(f_prime_val) < 0.000000000001 Then Exit Do
 
            x_newton = x_left - f_left / f_prime_val
            x_chord = x_right - f_right * (x_right - x_left) / (f_right - f_left)
 
            x_left = x_newton
            x_right = x_chord
        Else
            f_prime_val = f_prime(x_right): f_prime_evals = f_prime_evals + 1
            If Abs(f_prime_val) < 0.000000000001 Then Exit Do
 
            x_newton = x_right - f_right / f_prime_val
            x_chord = x_left - f_left * (x_right - x_left) / (f_right - f_left)
 
            x_left = x_chord
            x_right = x_newton
        End If
 
        f_left = f(x_left): f_evals = f_evals + 1
        f_right = f(x_right): f_evals = f_evals + 1
 
        current_mid = (x_left + x_right) / 2
        f_middle = f(current_mid): f_evals = f_evals + 1
        If iterations >= 3 Then
            Dim denominator As Double
            denominator = Abs(prev_mid - prev_prev_mid) ^ 2
            If denominator > 0.000000000000001 Then
                alpha = Abs(current_mid - prev_mid) / denominator
            End If
        End If
 
        ' Критерии остановки
        If Abs(x_right - x_left) / 2 <= epsilon And Abs(f_middle) <= delta Then Exit Do
        If iterations > 200 Then Exit Do
    Loop
 
    Dim root As Double: root = current_mid
    Dim arg_error As Double: arg_error = Abs(x_right - x_left) / 2
    Dim func_error As Double: func_error = Abs(f_middle)
 
    УточнитьКореньКомбинированным = Array(root, arg_error, func_error, iterations, _
                                         f_evals, f_prime_evals, f_second_evals, alpha)
End Function
Добавлено через 5 минут
Я сразу отправил весь код для наглядности, чтобы вы понимали ход моей работы. Поскольку в противном случае вы всё равно запросили бы полную реализацию, я решил не усложнять и отправил всё сразу.

Visual Basic
1
2
3
4
5
6
7
8
9
10
11
' В функции УточнитьКореньКомбинированным:
 
' Вычисление параметра сходимости по формуле из задания
' α = |xₙ - xₙ₋₁| / |xₙ₋₁ - xₙ₋₂|ᵏ, где k = 2
If iterations >= 3 Then
    Dim denominator As Double
    denominator = Abs(prev_mid - prev_prev_mid) ^ 2
    If denominator > 0.000000000000001 Then
        alpha = Abs(current_mid - prev_mid) / denominator
    End If
End If
0
Эксперт по математике/физике
11055 / 7358 / 3986
Регистрация: 14.01.2014
Сообщений: 16,770
06.10.2025, 21:59
Странная формула для параметра сходимости - почему в знаменателе стоит квадрат?
0
25 / 0 / 0
Регистрация: 12.03.2023
Сообщений: 25
06.10.2025, 22:01  [ТС]
Вот условия задания
Задание

Написать программу отделения корней и их уточнения одним из нижеперечисленных методов:
а) методом дихотомии;
б) методом хорд;
в) методом золотого сечения;
г) методом Ньютона;
д) методом итераций;
е) комбинированным методом.

Входные данные:
  • функция f(x) и её первая и вторая производные (для метода Ньютона, итераций и комбинированного метода);
  • интервал [a, b];
  • точность по аргументу и по функции ε1, ε2.

Выходные данные:
  • корни ξ, точность решения;
  • значения функции f(ξ);
  • количество итераций n;
  • количество вычислений функции f(x) и её производных;
  • время счёта;
  • параметр сходимости

    https://www.cyberforum.ru/cgi-bin/latex.cgi?<br />
\alpha =\frac{\left| \,x_n\,-\,x_{n-1}\,\right|}{\left| \,x_{n-1}\,-\,x_{n-2}\,\right|^k}<br />

    где k - порядок сходимости, n - номер последнего приближения корня.
Было написано два макроса: один для оформления страницы, а другой - решение задания. Полный код, который вы можете скопировать и вставить в Excel для проверки работы. Дело в том, что реализацию таких заданий было бы лучше сделать на Python, но я решил сделать в VBA Excel, с которым работаю уже больше 4 месяцев. Только это задание осталось из 8, и потому решил попросить вас, уважаемый, чтобы понять, почему у меня параметр сходимости (α) получается не в пределах 1-2.
0
Эксперт по математике/физике
11055 / 7358 / 3986
Регистрация: 14.01.2014
Сообщений: 16,770
06.10.2025, 22:40
Цитата Сообщение от Qiyas Посмотреть сообщение
почему у меня параметр сходимости (α) получается не в пределах 1-2.
А почему он должен быть в этих пределах?
0
25 / 0 / 0
Регистрация: 12.03.2023
Сообщений: 25
06.10.2025, 22:51  [ТС]
обычно 0.1-2.0 для комбинированного метода
0
Эксперт по математике/физике
11055 / 7358 / 3986
Регистрация: 14.01.2014
Сообщений: 16,770
06.10.2025, 23:50
Цитата Сообщение от Qiyas Посмотреть сообщение
обычно 0.1-2.0 для комбинированного метода
Обычно он в пределах меньше 1 для чисто ньютоновского метода (второго порядка сходимости, когда берётся k=2, поэтому в знаменателе степень 2).
Посмотрел код "комбинированного" метода - там одновременно берутся итерации по формулам методов Ньютона и хорд, а потом берётся арифметическое среднее полученных значений. Ясно, что такой метод не будет обладать квадратичной сходимостью! Скорей всего по этой причине параметр альфа может легко выйти за допустимые значения!
0
25 / 0 / 0
Регистрация: 12.03.2023
Сообщений: 25
07.10.2025, 09:13  [ТС]
Скорость сходимости всего процесса определяется скоростью самого быстрого из его компонентов.
Метод Ньютона имеет квадратичную сходимость (порядок ~2.0).
Метод хорд имеет сверхлинейную сходимость (порядок ~1.618).
Поскольку одна из границ интервала приближается к корню с квадратичной скоростью, то и общая скорость сходимости длины интервала |b_n - a_n| также является квадратичной
0
2890 / 1925 / 208
Регистрация: 05.06.2011
Сообщений: 5,617
07.10.2025, 09:45
Цитата Сообщение от Qiyas Посмотреть сообщение
Скорость сходимости всего процесса определяется скоростью самого быстрого из его компонентов
Ну, вы ещё скажите, что стадо бежит со скоростью самого быстрого из оленей.

Добавлено через 1 минуту
Например, с какой скоростью будет убывать https://www.cyberforum.ru/cgi-bin/latex.cgi?\frac{x+x^2}2 при https://www.cyberforum.ru/cgi-bin/latex.cgi?x\to0?
0
25 / 0 / 0
Регистрация: 12.03.2023
Сообщений: 25
07.10.2025, 12:44  [ТС]
Я попробую использовать метод хорд, который имеет сходимость порядка ~1.618

Добавлено через 1 час 55 минут
Может ли кто-нибудь помочь мне с уточнением корня комбинированным методом? Я попробовал всё, что понимаю, знаю, и что нашёл в интернете. Мне нужно использовать именно параметр сходимости, который указан в методичке к заданию.
0
2890 / 1925 / 208
Регистрация: 05.06.2011
Сообщений: 5,617
07.10.2025, 15:37
Ну дык сказано же ж:
Цитата Сообщение от Pphantom Посмотреть сообщение
Ну первая очевидная подсказка: это оформляется в виде формул с текстом, а не в виде кода на VB
Математическая проблема оформляется языком математики. Что именно нужно? Только не надо ещё раз про программу рассказывать.
0
Эксперт по математике/физике
11055 / 7358 / 3986
Регистрация: 14.01.2014
Сообщений: 16,770
07.10.2025, 17:57
Цитата Сообщение от Qiyas Посмотреть сообщение
Может ли кто-нибудь помочь мне с уточнением корня комбинированным методом? Я попробовал всё, что понимаю, знаю, и что нашёл в интернете. Мне нужно использовать именно параметр сходимости, который указан в методичке к заданию.
Во-первых, проблема с уточнением корней уравнения (которых аж двадцать) комбинированным методом? Почему именно этим методом, когда на заданных узких интервалах длиной 0.115 можно сразу ньютоновским методом (или просто методом хорд)?
Во-вторых, почему проблема именно в параметре сходимости, который, судя по коду программы, вычисляется просто для выходной информации и не влияет на результаты уточнения корней?
1
25 / 0 / 0
Регистрация: 12.03.2023
Сообщений: 25
07.10.2025, 19:09  [ТС]
Добрый день.

Дело в том, что у меня всё правильно реализовано, и я нашёл все приближённые корни. Единственная проблема — с параметром сходимости, который я не знаю, как правильно написать, чтобы он работал в VBA Excel.

Что касается Вашего вопроса: Учитель просил меня найти минимальное расстояние между корнями. Я, конечно, нашёл его и задал в программе как константу 0.155, чтобы не пропустить ни один корень.
Миниатюры
Как правильно задать параметр сходимости?  
0
Эксперт по математике/физике
11055 / 7358 / 3986
Регистрация: 14.01.2014
Сообщений: 16,770
07.10.2025, 19:53
Лучший ответ Сообщение было отмечено VSI как решение

Решение

Цитата Сообщение от Qiyas Посмотреть сообщение
Единственная проблема — с параметром сходимости, который я не знаю, как правильно написать
Само по себе выражение для параметра написано правильно. Попробуйте вместо комбинированного метода использовать в чистом виде метод Ньютона и посмотрите, какие числа выйдут для параметра сходимости. Кстати, по числу итераций (3-4) ясно, что можно ограничиться чистым Ньютоном!
Эту формулу нельзя использовать для вычисления параметра сходимости в рамках комбинированного метода, так как текущие значения приближения к корням получаются с помощью усреднения значений, полученных одновременно по двум разным формулам.
Поэтому такие нелепые значения этого параметра выходят - особенно для первых и последних корней!
1
25 / 0 / 0
Регистрация: 12.03.2023
Сообщений: 25
09.10.2025, 11:06  [ТС]
Убрали квадрат и вычислили коэффициент линейной сходимости
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
09.10.2025, 11:06
Помогаю со студенческими работами здесь

Область сходимости и радиус сходимости
Какая разница между областью сходимости и радиусом сходимости?

Определить радиус и интервал сходимости и исследовать поведение в граничных точках интервала сходимости
Определить радиус и интервал сходимости и исследовать поведение в граничных точках интервала...

Найти область сходимости, исследовать поведение ряда в граничных точках области сходимости ряда
Найти область сходимости, исследовать поведение ряда в граничных точках области сходимости ряда...

Найти радиус и интервал сходимости степенного ряда. Исследовать сходимость ряда на концах интервала сходимости
Сумма(n=1 до бесконечности) (-1)^n*(x+10)^n/sqrt(n(n+1)) Правила форума, пункт 4.7. Как можно...

Радиус сходимости и интервал сходимости
\sum_{n=1}^{\infty } \frac{{(6-2x)}^{n}}{{5}^{n-1}} Вопрос такой, решаю с помощью признака...


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

Или воспользуйтесь поиском по форуму:
18
Ответ Создать тему
Новые блоги и статьи
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Access
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут. В век Веб все очень привыкли к дизайну Single-Page-Application . Быстренько разберем подход "на фреймах". Мы делаем одну. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru