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

Вход

Регистрация

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

 

= Мир MS Excel/Поиск переменной X и запись в VB - Мир MS Excel

Старая форма входа
  • Страница 1 из 1
  • 1
Модератор форума: китин, _Boroda_  
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Вопросы по VB, VBS, VB.net » Поиск переменной X и запись в VB (Макросы/Sub)
Поиск переменной X и запись в VB
vdekameron Дата: Понедельник, 08.12.2014, 20:06 | Сообщение № 1
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 177
Репутация: 0 ±
Замечаний: 0% ±

Excel 2010
есть уравнение:
y=-0,000000000004054333*x^6+0,000000005379052*x^5-0,000002929692*x^4+0,0008371415*x^3-0,1319086*x^2+10,75147*x-332,5882
y=9.9888 Мне нужно записать уравнение в Visual Basic чтобы получить x . Подскажите пожалуйста как записать это уравнение x=....??? должно получиться 260. Я просто не знаю как отсюда вычленить x :(


Сообщение отредактировал vdekameron - Вторник, 09.12.2014, 08:29
 
Ответить
Сообщениеесть уравнение:
y=-0,000000000004054333*x^6+0,000000005379052*x^5-0,000002929692*x^4+0,0008371415*x^3-0,1319086*x^2+10,75147*x-332,5882
y=9.9888 Мне нужно записать уравнение в Visual Basic чтобы получить x . Подскажите пожалуйста как записать это уравнение x=....??? должно получиться 260. Я просто не знаю как отсюда вычленить x :(

Автор - vdekameron
Дата добавления - 08.12.2014 в 20:06
buchlotnik Дата: Вторник, 09.12.2014, 01:17 | Сообщение № 2
Группа: Заблокированные
Ранг: Участник клуба
Сообщений: 3442
Репутация: 929 ±
Замечаний: 20% ±

2010, 2013, 2016 RUS / ENG
vdekameron, конкретизируйте вопрос. Записать уравнение для икс не получится - уравнения от пятой степени и выше аналитически не разрешимы. Тут нужны численные методы. У вашего уравнения два действительных корня, ни один из которых не равен 260 - легко убедиться подстановкой.
 
Ответить
Сообщениеvdekameron, конкретизируйте вопрос. Записать уравнение для икс не получится - уравнения от пятой степени и выше аналитически не разрешимы. Тут нужны численные методы. У вашего уравнения два действительных корня, ни один из которых не равен 260 - легко убедиться подстановкой.

Автор - buchlotnik
Дата добавления - 09.12.2014 в 01:17
SLAVICK Дата: Вторник, 09.12.2014, 02:23 | Сообщение № 3
Группа: Модераторы
Ранг: Старожил
Сообщений: 2290
Репутация: 766 ±
Замечаний: 0% ±

2019
А у меня 260 сошлось, и еще 82 точнее вот:
82,12712006234
260,00111059658
Решал через "поиск решения" :D
данные - анализ - поиск решения <_<
К сообщению приложен файл: 222455.xls (37.0 Kb)


Иногда все проще чем кажется с первого взгляда.

Сообщение отредактировал SLAVICK - Вторник, 09.12.2014, 02:25
 
Ответить
СообщениеА у меня 260 сошлось, и еще 82 точнее вот:
82,12712006234
260,00111059658
Решал через "поиск решения" :D
данные - анализ - поиск решения <_<

Автор - SLAVICK
Дата добавления - 09.12.2014 в 02:23
ShAM Дата: Вторник, 09.12.2014, 05:07 | Сообщение № 4
Группа: Друзья
Ранг: Старожил
Сообщений: 1347
Репутация: 249 ±
Замечаний: 0% ±

Excel 2010
Ребята, ничего, что модератор сделал замечание и нарушение еще не исправлено???
 
Ответить
СообщениеРебята, ничего, что модератор сделал замечание и нарушение еще не исправлено???

Автор - ShAM
Дата добавления - 09.12.2014 в 05:07
buchlotnik Дата: Вторник, 09.12.2014, 06:30 | Сообщение № 5
Группа: Заблокированные
Ранг: Участник клуба
Сообщений: 3442
Репутация: 929 ±
Замечаний: 20% ±

2010, 2013, 2016 RUS / ENG
ShAM, я тоже жду будет ли исправлено, не раскрываюсь

SLAVICK, у ТС чётко написано - надо внести в VB, ну и замечание модератора тоже стоило учесть
 
Ответить
СообщениеShAM, я тоже жду будет ли исправлено, не раскрываюсь

SLAVICK, у ТС чётко написано - надо внести в VB, ну и замечание модератора тоже стоило учесть

Автор - buchlotnik
Дата добавления - 09.12.2014 в 06:30
vdekameron Дата: Вторник, 09.12.2014, 08:33 | Сообщение № 6
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 177
Репутация: 0 ±
Замечаний: 0% ±

Excel 2010
SLAVICK, buchlotnik, Спасибо за понимание. Тему сменил. Не знаю как по-другому написать. Решение этого уравнения есть - 260. SLAVICK, прав. Я тоже его нашел через решение уравнений в интернете. Но мне нужно его записать в VB. Т.е. повторюсь у меня будет известен игрик и мне по этому уравнению нужно будет постоянно находить икс.
 
Ответить
СообщениеSLAVICK, buchlotnik, Спасибо за понимание. Тему сменил. Не знаю как по-другому написать. Решение этого уравнения есть - 260. SLAVICK, прав. Я тоже его нашел через решение уравнений в интернете. Но мне нужно его записать в VB. Т.е. повторюсь у меня будет известен игрик и мне по этому уравнению нужно будет постоянно находить икс.

Автор - vdekameron
Дата добавления - 09.12.2014 в 08:33
SLAVICK Дата: Вторник, 09.12.2014, 08:36 | Сообщение № 7
Группа: Модераторы
Ранг: Старожил
Сообщений: 2290
Репутация: 766 ±
Замечаний: 0% ±

2019
Как то не отследил название. Думал уже переименовали :(
Через поиск решения сделал на быструю руку. Чтобы проверить решение. В вба тоже не сложно переложить. Ну пока тема не испралена не будубуду :D
Пока писал сообщение тему переименовали :o
Через пару часов если никто не опередит попробую сделать в вбавба :p


Иногда все проще чем кажется с первого взгляда.

Сообщение отредактировал SLAVICK - Вторник, 09.12.2014, 08:39
 
Ответить
СообщениеКак то не отследил название. Думал уже переименовали :(
Через поиск решения сделал на быструю руку. Чтобы проверить решение. В вба тоже не сложно переложить. Ну пока тема не испралена не будубуду :D
Пока писал сообщение тему переименовали :o
Через пару часов если никто не опередит попробую сделать в вбавба :p

Автор - SLAVICK
Дата добавления - 09.12.2014 в 08:36
vdekameron Дата: Вторник, 09.12.2014, 09:02 | Сообщение № 8
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 177
Репутация: 0 ±
Замечаний: 0% ±

Excel 2010
SLAVICK, Спасибо большое. Вчера создал тему и искал решение в интернете. Сегодня как увидел что нужно переименовать, сразу сделала. В VB будет x=(ход решения)=260 , а если будет два решения я думаю разберусь как выбрать то, что мне нужно. Еще поищу сейчас , может сам что-то нарою. %)
 
Ответить
СообщениеSLAVICK, Спасибо большое. Вчера создал тему и искал решение в интернете. Сегодня как увидел что нужно переименовать, сразу сделала. В VB будет x=(ход решения)=260 , а если будет два решения я думаю разберусь как выбрать то, что мне нужно. Еще поищу сейчас , может сам что-то нарою. %)

Автор - vdekameron
Дата добавления - 09.12.2014 в 09:02
buchlotnik Дата: Вторник, 09.12.2014, 09:15 | Сообщение № 9
Группа: Заблокированные
Ранг: Участник клуба
Сообщений: 3442
Репутация: 929 ±
Замечаний: 20% ±

2010, 2013, 2016 RUS / ENG
vdekameron, с 260 - я вчера погорячился - один из коэффициентов не с тем знаком ввел. Собственно предлагаю решение методом Ньютона/ Оно реализовано в модуле. Принцип работы - см. итерации на самом листе. В зависимости от начального приближения находим один или второй корень
Кстати, корни вышли:
82,1271196
260,0010917

[vba]
Код
Sub newton()
x = [j6].Value
s = -332.5882 - [k6].Value
Do
      x1 = x
       y = -4.054333E-12 * x ^ 6 + 0.000000005379052 * x ^ 5 - 0.000002929692 * x ^ 4 + 0.0008371415 * x ^ 3 - 0.1319086 * x ^ 2 + 10.75147 * x + s
       y_ = -6 * 4.054333E-12 * x ^ 5 + 5 * 0.000000005379052 * x ^ 4 - 4 * 0.000002929692 * x ^ 3 + 3 * 0.0008371415 * x ^ 2 - 2 * 0.1319086 * x + 10.75147
       x = x - y / y_
       i = i + 1
       DoEvents
Loop While Abs(x1 - x) > 10 ^ (-8)
[k7].Value = (x1 + x) / 2
End Sub
[/vba]
К сообщению приложен файл: 5499041.xls (46.5 Kb)


Сообщение отредактировал buchlotnik - Вторник, 09.12.2014, 09:27
 
Ответить
Сообщениеvdekameron, с 260 - я вчера погорячился - один из коэффициентов не с тем знаком ввел. Собственно предлагаю решение методом Ньютона/ Оно реализовано в модуле. Принцип работы - см. итерации на самом листе. В зависимости от начального приближения находим один или второй корень
Кстати, корни вышли:
82,1271196
260,0010917

[vba]
Код
Sub newton()
x = [j6].Value
s = -332.5882 - [k6].Value
Do
      x1 = x
       y = -4.054333E-12 * x ^ 6 + 0.000000005379052 * x ^ 5 - 0.000002929692 * x ^ 4 + 0.0008371415 * x ^ 3 - 0.1319086 * x ^ 2 + 10.75147 * x + s
       y_ = -6 * 4.054333E-12 * x ^ 5 + 5 * 0.000000005379052 * x ^ 4 - 4 * 0.000002929692 * x ^ 3 + 3 * 0.0008371415 * x ^ 2 - 2 * 0.1319086 * x + 10.75147
       x = x - y / y_
       i = i + 1
       DoEvents
Loop While Abs(x1 - x) > 10 ^ (-8)
[k7].Value = (x1 + x) / 2
End Sub
[/vba]

Автор - buchlotnik
Дата добавления - 09.12.2014 в 09:15
vdekameron Дата: Вторник, 09.12.2014, 10:16 | Сообщение № 10
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 177
Репутация: 0 ±
Замечаний: 0% ±

Excel 2010
Люди, неужели ничего проще нет((( :( buchlotnik, Исходя из этого решения искомая величина получается 82,13. А мне нужна 260. И как мне потом объяснить VB какая именно величина мне нужна.
 
Ответить
СообщениеЛюди, неужели ничего проще нет((( :( buchlotnik, Исходя из этого решения искомая величина получается 82,13. А мне нужна 260. И как мне потом объяснить VB какая именно величина мне нужна.

Автор - vdekameron
Дата добавления - 09.12.2014 в 10:16
vdekameron Дата: Вторник, 09.12.2014, 10:57 | Сообщение № 11
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 177
Репутация: 0 ±
Замечаний: 0% ±

Excel 2010
Ой спасибо всем за потраченное время!!!! Хочу похвастаться как выкрутился из этой ситуации. Просто когда строил график поменял местами икс и игрик. График от этого не поменялся, зато функция по линии тренда вышла та, которая и надо. Она имеет вид y=0,001969327*x^6-0,1682957*x^5+5,933678*x^4-110,5317*x^3+1149,016*x^2-6350,822*x+14921,57 Но теперь уже по сути я вместо икса подставляю значения игрик, соответственно искомая величина икс))) hands
 
Ответить
СообщениеОй спасибо всем за потраченное время!!!! Хочу похвастаться как выкрутился из этой ситуации. Просто когда строил график поменял местами икс и игрик. График от этого не поменялся, зато функция по линии тренда вышла та, которая и надо. Она имеет вид y=0,001969327*x^6-0,1682957*x^5+5,933678*x^4-110,5317*x^3+1149,016*x^2-6350,822*x+14921,57 Но теперь уже по сути я вместо икса подставляю значения игрик, соответственно искомая величина икс))) hands

Автор - vdekameron
Дата добавления - 09.12.2014 в 10:57
vdekameron Дата: Вторник, 09.12.2014, 10:58 | Сообщение № 12
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 177
Репутация: 0 ±
Замечаний: 0% ±

Excel 2010
Вот
К сообщению приложен файл: 2339449.xlsx (20.0 Kb)
 
Ответить
СообщениеВот

Автор - vdekameron
Дата добавления - 09.12.2014 в 10:58
buchlotnik Дата: Вторник, 09.12.2014, 11:05 | Сообщение № 13
Группа: Заблокированные
Ранг: Участник клуба
Сообщений: 3442
Репутация: 929 ±
Замечаний: 20% ±

2010, 2013, 2016 RUS / ENG
vdekameron, перечитайте внимательномоё сообщение
Цитата
В зависимости от начального приближения находим один или второй корень
В файле-примере задайте начальное значение для x = 500 и пересчитайте. Получите, что надо.
Цитата
неужели ничего проще нет
да куда уж проще. Или как предложил SLAVICK через поиск решения - но и в этом случае, в зависимости от исходного значения x вы будете получать разный результат 82 или 260
А так в принципе если уравнение имеет два действительных решения, выбирать только одно как-то странно.
 
Ответить
Сообщениеvdekameron, перечитайте внимательномоё сообщение
Цитата
В зависимости от начального приближения находим один или второй корень
В файле-примере задайте начальное значение для x = 500 и пересчитайте. Получите, что надо.
Цитата
неужели ничего проще нет
да куда уж проще. Или как предложил SLAVICK через поиск решения - но и в этом случае, в зависимости от исходного значения x вы будете получать разный результат 82 или 260
А так в принципе если уравнение имеет два действительных решения, выбирать только одно как-то странно.

Автор - buchlotnik
Дата добавления - 09.12.2014 в 11:05
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Вопросы по VB, VBS, VB.net » Поиск переменной X и запись в VB (Макросы/Sub)
  • Страница 1 из 1
  • 1
Поиск:

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