Жуткая функция
Релиб
Форумы       Участники    Календарь    Кто он-лайн?
Добро пожаловать, гость ( Вход | Регистрация )
        



Жуткая функция Expand / Collapse
Автор
Сообщение
19.05.2007 13:06
новичок

новичокновичокновичокновичокновичокновичокновичокновичок

участник
Last Login: 26.05.2007 20:49
Сообщ.: 6, Visits: 6

По-моему считается не то, что надо. По крайнеё мере я так думаю.  А вы как думаете?

 

Составить процедуру и функцию для вычисления:

 

                   Y = 1+ + +  

 

принимая, что аргумент Х по модулю меньше единицы. Вычисления проводить до тех пор, пока модуль разности между очередным слагаемым и его предыдущим значением больше малой заданной величины, рассматриваемой в качестве точности вычислений.

            Полученные подпрограммы записать в модуль. Используя  подпрограммы модуля, вывести на экран с заданной точностью таблицу значений Y для аргумента Х  от его заданного начального значения до заданного конечного значения с заданным шагом.

 

 

Private Sub Form_Load()

  Label1 = "      Составить процедуру и функцию для вычисления:" & vbCrLf & _

   "Y = 1 + 2/x + 2*3/x^2 + 2*3*2/x^3 + 2*3*2*3/x^4 + ... ," & vbCrLf & _

   "принимая, что аргумент X по модулю меньше единицы. Вычисления проводить до тех пор, пока модуль " & vbCrLf & _

   "разности между очередным слагаемым и его предыдущим значением больше за-данной величины, " & vbCrLf & _

   "рассматриваемой в качестве точности вычислений." & vbCrLf & _

   "      Полученные подпрограммы записать в модуль. Используя подпрограммы модуля, вывести с заданной " & vbCrLf & _

   "точностью таблицу значений Y для аргумента  X от его заданного начального значения до заданного " & vbCrLf & _

   "конечного значения с заданным шагом изменения."

End Sub

Public Sub p(ByVal x!, ByVal eps#, ByRef sum#)

  Dim pred#, posl#

  Dim ch%, sum_sk_ch%, sk_ch%

  Dim zn%, sum_sk_zn%, sk_zn%

  Dim z%, kf!

       

     ch = 1

     zn = 2: sum_sk_zn = 31: sk_zn = 4

     z = 1: sum = 1 + x / 2

     pred = 1: posl = x / 2

     Do While Abs(Abs(pred) - Abs(posl)) > eps

        sk_zn = sum_sk_zn - sk_zn: zn = zn + sk_zn

        kf = ch / zn

        pred = posl

        posl = pred * z * kf * x

        sum = sum + posl

     Loop

End Sub

 

Public Function f(ByVal x!, ByVal eps#) As Double

   Dim pred#, posl#, sum#

   Dim ch%, sum_sk_ch%, sk_ch%

   Dim zn%, sum_sk_zn%, sk_zn%

   Dim z%, kf!

     ch = 1

     zn = 2: sum_sk_zn = 31: sk_zn = 4

     z = 1: sum = 1 + x / 2

     pred = 1: posl = x / 2

     Do While Abs(Abs(pred) - Abs(posl)) > eps

        sk_zn = sum_sk_zn - sk_zn: zn = zn + sk_zn

        kf = ch / zn

        pred = posl

        posl = pred * z * kf * x

        sum = sum + posl

     Loop

     f = sum

End Function

Private Sub Command1_Click()

   Dim x As Single, y As Double

   Dim xn As Single, dx As Single, xk As Single

   Dim eps As Double, b As Boolean, s As String

   Dim g As Double, i As Byte, j As Byte

     

      xn = Val(InputBox("Введите начальное значение x"))

      Label3.Caption = "Начальное значение x = " & xn

     

      dx = Val(InputBox("Введите шаг по x"))

      Label4.Caption = "Шаг по x = " & dx

     

      xk = Val(InputBox("Введите конечное значение x"))

      Label5.Caption = "Конечное значение x = " & xk

     

      eps = Val(InputBox("Введите точность вычисления"))

      Label6.Caption = "Точность вычислений = " & eps

     

      'Выбор средства вычислений: с помощью процедуры или функции

     

      If Combo1.Text = "Процедура" Then

         b = True

      Else

         b = False

      End If

     

      'Вычисление значения суммы ряда для заданного интервала значений x.

     

      List1.Clear

      x = xn

      Do While x < xk + 0.5 * dx

        If b Then

           Call p(x, eps, y)

        Else

           y = f(x, eps)

        End If

      

        ' Вывод результатов вычисления суммы ряда с заданной точностью

       

        g = eps: j = 0

        Do While g < 1

           g = g * 10

           j = j + 1

        Loop

        s = "#0."

           For i = 1 To j

              s = s & "0"

           Next i

        List1.AddItem "  " & Format(x, "0.00") & Space(16) & Format(y, s)

       

        ' Переход к следующему значению x из заданного диапазона

       

        x = x + dx

      Loop

      End Sub

Private Sub Command3_Click()

  End

End Sub

 

Помогите, если сможете!

 

Сообщ. #913425
30.05.2007 12:31
новичок

новичокновичокновичокновичокновичокновичокновичокновичок

участник
Last Login: 30.05.2007 17:22
Сообщ.: 8, Visits: 29
не совсем понятна закономерность ряда... напиши хотя бы 7-8 первых слагаемых... потом поговорим.
Сообщ. #913758
« пред. тема | след. тема »


Эту тему читают Expand / Collapse
Посетители: 0 (0 гостей, 0 участников, 0 скрыт.участников)
Сейчас нет участников, просматривающих тему.
Модераторы: Alexey, boombastik, bazile, pl, Comanche, Alexey Spirin

Время GMT +3:00, Сейчас 3:56