Программа для решения уравнений методом Ньютона: улучшить код - VB

Узнай цену своей работы

Формулировка задачи:

Имеется программа для решения уравнений методом Ньютона в VB 6.0.Только в моей проге максимальная степень 5-я которую считает,а попросили сделать,чтобы степень была не ограниченной.Сам тыркался-что-то не получается,почему-то находит ошибку если степени большие(15,20 и т.п). И заодно чтоб при вводе степени-появлялись окна в которые нужно вводить переменные уравнения-вроде Inputbox надо использовать,но что-то не получается.Помогите плз
Листинг программы
  1. Dim A#(6), a1#, b1#, x#
  2. Dim m%, n%
  3. Const eps = 0.01
  4. Private Sub Command1_Click()
  5. Label4 = "Результат:"
  6. A(0) = Val(Text2.Text)
  7. A(1) = Val(Text3.Text)
  8. A(2) = Val(Text4.Text)
  9. A(3) = Val(Text5.Text)
  10. A(4) = Val(Text6.Text)
  11. A(5) = Val(Text7.Text)
  12. a1 = Val(Text8.Text)
  13. b1 = Val(Text9.Text)
  14. n = Val(Text1.Text)
  15. Label5 = n & " " & a1 & " " & f(a1): Label6 = b1 & " " & f(b1)
  16. 'проверяем на сходимость
  17. If f(a1) * f(b1) >= 0 Then
  18. MsgBox ("Условие не выполняется!")
  19. Else
  20. 'ищем начальную точку
  21. If fp2(a1) > 0 Then
  22. ElseIf f(a1) > 0 Then
  23. x = a1
  24. ElseIf f(b1) > 0 Then
  25. x = b1
  26. End If
  27. If fp2(a1) < 0 Then
  28. ElseIf f(a1) < 0 Then
  29. x = a1
  30. ElseIf f(b1) < 0 Then
  31. x = b1
  32. End If
  33. 'Метод Ньютона
  34. Dim x0#, x1#
  35. x0 = x
  36. Label4 = Label4 + Chr(13)
  37. Do
  38. 'вычисляем приближение
  39. x1 = x0 - f(x0) / fp(x0)
  40. Label4 = Label4 + CStr(x1) + Chr(13)
  41. x0 = x1
  42. Loop While Abs(f(x0)) > eps Or Abs(x0 - x1) > eps
  43. End If
  44.  
  45. Picture1.Scale (-150, 150)-(150, -150) 'расположение системы координат и масштаб
  46. Picture1.Cls
  47. Picture1.Line (-150, 0)-(150, 0) 'Ось Х
  48. Picture1.Line (0, -250)-(0, 150) 'Ось Y
  49. For XX = -150 To 150 Step 30 'Засечки на оси Х
  50. Picture1.Line (XX, -5)-(XX, 5) 'размер засечек с обеих сторон оси Х
  51. Next
  52. For Y = -150 To 150 Step 50 'Засечки на Y
  53. Picture1.Line (-5, Y)-(5, Y)
  54. Next
  55. nn = Val(Text1.Text)
  56. a11 = Val(Text3.Text)
  57. a2 = Val(Text4.Text)
  58. a3 = Val(Text5.Text)
  59. a4 = Val(Text6.Text)
  60. a5 = Val(Text7.Text)
  61. a0 = Val(Text2.Text)
  62. On Error Resume Next ' Откладываем перехват ошибок.
  63. Mashtab = 10 ' масштаб графика
  64. For XX = -1.5 * (10 / Mashtab) To 1.5 * (10 / Mashtab) Step 1 / 1000 'Шаг в знач. качества
  65. Y = a0 + a11 * XX + a2 * XX ^ 2 + a3 * XX ^ 3 + a4 * XX ^ 4 + a5 * XX ^ 5
  66. Picture1.Circle (XX * Mashtab, Y * Mashtab), 1
  67. Next XX
  68. End Sub
  69. Function f(ByVal x As Double) As Double
  70. f = A(0)
  71. For i = 1 To n
  72. f = f + A(i) * x ^ i
  73. ' f = A(0) + A(1) * x + A(2) * x * x + A(3) * x * x * x + A(4) * x * x * x * x
  74. Next
  75. End Function
  76. Function fp(ByVal x As Double) As Double
  77. fp = 0
  78. For i = 1 To n
  79. fp = fp + i * A(i) * x ^ (i - 1)
  80. ' Производная fp = A(1) + 2 * A(2) * x + 3 * A(3) * x * x + 4 * A(4) * x * x * x
  81. Next
  82. End Function
  83. Function fp2(ByVal x As Double) As Double
  84. fp2 = 0
  85. For i = 1 To n
  86. fp2 = fp2 + (i - 1) * i * A(i) * x ^ (i - 2)
  87. ' fp2 = 2 * A(2) + 6 * A(3) * x + 12 * A(4) * x * x
  88. Next
  89. End Function
  90.  
  91. Private Sub Text1_Change()
  92. n = Val(Text1.Text)
  93. If n < 1 Or n > 5 Then
  94. MsgBox " степень от 1 до 5"
  95. Text1.SetFocus
  96. End If
  97. End Sub

Решение задачи: «Программа для решения уравнений методом Ньютона: улучшить код»

textual
Листинг программы
  1.     Picture1.Scale (a1 - 1, f(a1))-(b1 + 1, f(b1))
  2.     Picture1.Cls
  3.     Picture1.Line (a1, 0)-(b1, 0)  '??? ?
  4.    Picture1.Line (0, f(a1))-(0, f(b1))   '??? Y
  5.  
  6.            
  7.     For i% = 0 To 10000
  8.         XX = a1 + (b1 - a1) / 10000 * i
  9.         Y = f(XX)
  10.         Picture1.PSet (XX, Y)
  11.     Next

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

13   голосов , оценка 3.615 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы