Страницы: 1
RSS
Необходимо найти сумму всех значений Y по известному уравнению графика и зная первое и последнее значения Y.
 
Необходимо найти сумму всех значений Y по известному уравнению графика и зная первое и последнее значения Y.
А так же необходимо найти значение X по значению ∑Y.
Я пробовал через нахождение определенного интеграла, но как это вычисление впихнуть в одну ячейку, я не знаю.
Помогите пожалуйста с решением задачи!
Пример прикрепил.
 
Код
=СУММЕСЛИМН($C$9:$C$32;$C$9:$C$32;">="&C43;$C$9:$C$32;"<="&B43)
 
Но у значений Х1 и Х35 там свой числовой ряд от 0,88 до 0,17 и сумма там получается 10,140
 
Если задача звучит так. В диапазоне B43:C43 заданы значения y1 и y2. Найти советующие им x1 и x2. Найти определённый интеграл от x1 до x2. Формула для определённого интеграла будет:
Код
=$C$6*СТЕПЕНЬ(СТЕПЕНЬ(C43/$C$6;1/$C$5);$C$5+1)/($C$5+1)-$C$6*СТЕПЕНЬ(СТЕПЕНЬ(B43/$C$6;1/$C$5);$C$5+1)/($C$5+1)
 
Ого, вот это уже ближе к решению задачи, спасибо большое за ответ.
Скажите пожалуйста, а точного результата вычисления равной сумме 8,22 (ячейка D40) из примера числового ряда нет, это из-за погрешности, о чем нам не равный единице R квадрат и говорит, да? А поднять точность до второго (первого) знака после запятой можно? Поможет ли применение другого метода вычисления определенного интеграла?
Изменено: sir.benoit - 16.05.2024 10:16:55
 
Всё это легко решается дополнительными столбцами. Но у вас же ограничение:
Цитата
написал:
вычисление впихнуть в одну ячейку
В этом случае можно, например, сумму значений Yi получить c помощью пользовательской функции.
Код
'Это в ячейку D40
=ИНТЕГРАЛ(B40;C40;$C$5;$C$6)


'Это в стандартный модуль.
Function GetX(y As Double, b As Double, c As Double) As Double
    GetX = (y / c) ^ (1 / b)
End Function
Function GetY(x As Double, b As Double, c As Double) As Double
    GetY = c * (x ^ b)
End Function

Function ИНТЕГРАЛ(y1 As Double, y2 As Double, b As Double, c As Double) As Double
    
    Dim dd As Double
    Dim x1 As Double
    Dim x2 As Double
    x1 = GetX(y1, b, c)
    x2 = GetX(y2, b, c)
    If x1 > x2 Then
        dd = x2
        x2 = x1
        x1 = dd
    End If
    dd = 0
    Do
        If x1 > x2 Then Exit Do
        dd = dd + GetY(x1, b, c)
        x1 = x1 + 1
    Loop
    
    ИНТЕГРАЛ = dd
End Function
 
В стандартный модуль, это куда и как?)))) ...я в этом совсем не бельмеса)))
 
Создание макросов и пользовательских функций на VBA (planetaexcel.ru) пункт "Создание пользовательских функций на VBA".
 
Спасибо, понял, сейчас разберусь. А вот, вы не могли бы и вторую часть задачи решить, где мы уже ищем значение Х?
 
Если речь про нахождение x по известному y, то можете воспользоваться функцией GetX из кода, приведённого выше.
 
Понял, спасибо вам огромное! Сейчас разберусь с ВБА, ни когда этим не пользовался!
 
Цитата
написал:
то можете воспользоваться функцией GetX из кода
Первая часть задачи работает, точность устраивает, феноменально!

Функция GetX не подходит для второй части задачи.
Вторая часть задачи - нам необходимо по результату полученной суммы Y (ячейка D40), найти X.
Изменено: sir.benoit - 16.05.2024 11:47:31
 
Код
'Это в ячейку G57
=xИНТЕГРАЛ(B57;F57;$C$5;$C$6)
Код
'В стандартный модуль добавить функции.
Function xИНТЕГРАЛ(y1 As Double, сумма_y As Double, b As Double, c As Double) As Double
    
    Dim ii As Long
    Dim dd As Double
    Dim x1 As Double
    x1 = GetX(y1, b, c)
    
    Do
        dd = dd + GetY(x1, b, c)
        If dd > сумма_y Then Exit Do
        x1 = x1 + 1
        
        ii = ii + 1
        If ii > 1000 Then Exit Function
    Loop
    
    xИНТЕГРАЛ = myLin(сумма_y, x1 - 1, x1, dd - GetY(x1, b, c), dd)
End Function

Private Function myLin(y0 As Double, x1 As Double, x2 As Double, y1 As Double, y2 As Double) As Double
    myLin = x1 + ((y0 - y1) / (y2 - y1)) * (x2 - x1)
End Function
Повторюсь. Всё это можно делать стандартными средствами Excel, используя вспомогательные диапазоны.
Вы готовы применять пользовательские функции, которые видите первый раз в жизни, но почему-то не готовы применять стандартные средства.
Наверное, логика есть, но её не видно.
 
Цитата
написал:
Наверное, логика есть, но её не видно.
Вы совершенно правы!))))
Огромное вам спасибо, вы меня очень выручили! Можно ли к вам будет обратится в будущем по этой теме за дополнительными консультациями, но в частном порядке (не тут), естественно за финансовое вознаграждение?!))))  
 
Вэлкам!
https://fishki.net/upload/users/2023/11/02/816268/8b369357db0cde1b26a915e09­a88dd6f.jpg
Страницы: 1
Наверх