Домашняя страница Undo Do New Save Карта сайта Обратная связь Поиск по форуму
МИР MS EXCEL - Гость.xls

Вход

Регистрация

Напомнить пароль

 

= Мир MS Excel/Найти х методом хорд. - Мир MS Excel

Старая форма входа
  • Страница 1 из 1
  • 1
Модератор форума: китин, _Boroda_  
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Найти х методом хорд. (Формулы/Formulas)
Найти х методом хорд.
_Душка_ Дата: Понедельник, 26.10.2015, 23:13 | Сообщение № 1
Группа: Пользователи
Ранг: Прохожий
Сообщений: 5
Репутация: 0 ±
Замечаний: 20% ±

Excel 2010
Вечер добрый.
Дано уравнение 8*SINX-3/X=0
Требуется найти х методом хорд. Х найти один, самый первый.
Сделана табуляция (по значения 1,2,3,4,5) и по ней построен график, видится что х=3.
Я понимаю как найти х вручную. Я худо-бедно могу разобрать блок-схему. Но прога вообще не выдает результата. Никакого. Ошибку я найти самостоятельно не в состоянии. Ибо программист я так себе...
Преподаватель сказал использовать цикл Do While....Loop
[vba]
Код
Sub Lab()
Dim a As Double, b As Double, E As Double, x As Double, x0 As Double
E = 0.005
a = Range("A1").Value
b = Range("A5").Value
x0 = b
fa = 8 * Sin(a) - 3 / (a)
fb = 8 * Sin(b) - 3 / (b)
fx0 = 8 * Sin(x0) - 3 / (x0)
Do While Abs(fx0 > E)
If fa * fb < 0 Then
b = x0
End If
fa = 8 * Sin(a) - 3 / (a)
x0 = (a + b) / 2
fx0 = 8 * Sin(x0) - 3 / (x0)
Loop
x0 = b

End Sub
[/vba]
 
Ответить
СообщениеВечер добрый.
Дано уравнение 8*SINX-3/X=0
Требуется найти х методом хорд. Х найти один, самый первый.
Сделана табуляция (по значения 1,2,3,4,5) и по ней построен график, видится что х=3.
Я понимаю как найти х вручную. Я худо-бедно могу разобрать блок-схему. Но прога вообще не выдает результата. Никакого. Ошибку я найти самостоятельно не в состоянии. Ибо программист я так себе...
Преподаватель сказал использовать цикл Do While....Loop
[vba]
Код
Sub Lab()
Dim a As Double, b As Double, E As Double, x As Double, x0 As Double
E = 0.005
a = Range("A1").Value
b = Range("A5").Value
x0 = b
fa = 8 * Sin(a) - 3 / (a)
fb = 8 * Sin(b) - 3 / (b)
fx0 = 8 * Sin(x0) - 3 / (x0)
Do While Abs(fx0 > E)
If fa * fb < 0 Then
b = x0
End If
fa = 8 * Sin(a) - 3 / (a)
x0 = (a + b) / 2
fx0 = 8 * Sin(x0) - 3 / (x0)
Loop
x0 = b

End Sub
[/vba]

Автор - _Душка_
Дата добавления - 26.10.2015 в 23:13
doober Дата: Вторник, 27.10.2015, 00:15 | Сообщение № 2
Группа: Друзья
Ранг: Ветеран
Сообщений: 947
Репутация: 323 ±
Замечаний: 0% ±

Excel 2010
Результат =3,01697355819812
[vba]
Код
Sub Lab_from_Doober()
    Dim a As Double, b As Double, E As Double
    E = 0.005
    a = 2   'Range("A1").Value
    b = 4    ' Range("A5").Value
   Результат = Хорда(a, b, E)
End Sub
Function f(ByVal x As Double) As Double
      f = 8 * Sin(x) - 3 / (x)
End Function
  Function Хорда(ByVal a As Double, ByVal b As Double, ByVal epsilon As Double) As Double
        Do While Math.Abs(b - a) > epsilon
            a = b - (b - a) * f(b) / (f(b) - f(a))
            b = a - (a - b) * f(a) / (f(a) - f(b))
        Loop
      Хорда = b
    End Function
[/vba]




Сообщение отредактировал doober - Вторник, 27.10.2015, 00:16
 
Ответить
СообщениеРезультат =3,01697355819812
[vba]
Код
Sub Lab_from_Doober()
    Dim a As Double, b As Double, E As Double
    E = 0.005
    a = 2   'Range("A1").Value
    b = 4    ' Range("A5").Value
   Результат = Хорда(a, b, E)
End Sub
Function f(ByVal x As Double) As Double
      f = 8 * Sin(x) - 3 / (x)
End Function
  Function Хорда(ByVal a As Double, ByVal b As Double, ByVal epsilon As Double) As Double
        Do While Math.Abs(b - a) > epsilon
            a = b - (b - a) * f(b) / (f(b) - f(a))
            b = a - (a - b) * f(a) / (f(a) - f(b))
        Loop
      Хорда = b
    End Function
[/vba]

Автор - doober
Дата добавления - 27.10.2015 в 00:15
_Душка_ Дата: Вторник, 27.10.2015, 00:46 | Сообщение № 3
Группа: Пользователи
Ранг: Прохожий
Сообщений: 5
Репутация: 0 ±
Замечаний: 20% ±

Excel 2010
doober, спасибо. А можно с пояснениями? Что я делала не так?
И всё равно не выдает видимых результатов.
 
Ответить
Сообщениеdoober, спасибо. А можно с пояснениями? Что я делала не так?
И всё равно не выдает видимых результатов.

Автор - _Душка_
Дата добавления - 27.10.2015 в 00:46
doober Дата: Вторник, 27.10.2015, 01:01 | Сообщение № 4
Группа: Друзья
Ранг: Ветеран
Сообщений: 947
Репутация: 323 ±
Замечаний: 0% ±

Excel 2010
И всё равно не выдает видимых результатов.

Это как?
добавте еще одну строку кода и будет вам видимый результат.[vba]
Код
Результат = Хорда(a, b, E)
MsgBox "корень= " & Результат & vbCrLf & _
"Значение функции =" & f(Результат) & vbCrLf & _
"What I have done , I decided this difficult lab"
[/vba]


 
Ответить
Сообщение
И всё равно не выдает видимых результатов.

Это как?
добавте еще одну строку кода и будет вам видимый результат.[vba]
Код
Результат = Хорда(a, b, E)
MsgBox "корень= " & Результат & vbCrLf & _
"Значение функции =" & f(Результат) & vbCrLf & _
"What I have done , I decided this difficult lab"
[/vba]

Автор - doober
Дата добавления - 27.10.2015 в 01:01
_Душка_ Дата: Вторник, 27.10.2015, 01:12 | Сообщение № 5
Группа: Пользователи
Ранг: Прохожий
Сообщений: 5
Репутация: 0 ±
Замечаний: 20% ±

Excel 2010
Когда нажимаю запустить, открывается окно запуска, там выбираю Run и тишина, больше никаких видимых действий.
И добавлять куда?


Сообщение отредактировал _Душка_ - Вторник, 27.10.2015, 01:13
 
Ответить
СообщениеКогда нажимаю запустить, открывается окно запуска, там выбираю Run и тишина, больше никаких видимых действий.
И добавлять куда?

Автор - _Душка_
Дата добавления - 27.10.2015 в 01:12
doober Дата: Вторник, 27.10.2015, 01:19 | Сообщение № 6
Группа: Друзья
Ранг: Ветеран
Сообщений: 947
Репутация: 323 ±
Замечаний: 0% ±

Excel 2010
Ниже этой
Результат = Хорда(a, b, E)
В коде моего первого поста


 
Ответить
СообщениеНиже этой
Результат = Хорда(a, b, E)
В коде моего первого поста

Автор - doober
Дата добавления - 27.10.2015 в 01:19
_Душка_ Дата: Вторник, 27.10.2015, 01:20 | Сообщение № 7
Группа: Пользователи
Ранг: Прохожий
Сообщений: 5
Репутация: 0 ±
Замечаний: 20% ±

Excel 2010
Красным выделяет. Возможно из-за вот таких знаков & vbCrLf & _?
 
Ответить
СообщениеКрасным выделяет. Возможно из-за вот таких знаков & vbCrLf & _?

Автор - _Душка_
Дата добавления - 27.10.2015 в 01:20
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Найти х методом хорд. (Формулы/Formulas)
  • Страница 1 из 1
  • 1
Поиск:

Яндекс.Метрика Яндекс цитирования
© 2010-2024 · Дизайн: MichaelCH · Хостинг от uCoz · При использовании материалов сайта, ссылка на www.excelworld.ru обязательна!