|
Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » VBS/WSH/JS - [решено] Неправильно выполняется VBS скрипт для решения уравнений |
|
VBS/WSH/JS - [решено] Неправильно выполняется VBS скрипт для решения уравнений
|
Новый участник Сообщения: 3 |
Профиль | Отправить PM | Цитировать Есть сей скрипт, решающий уравнения.Он работает по количеству циклов.
a = InputBox("Введите левую часть уравнения","GA Solving") b = 0 min = InputBox("Введите минимальное значение корня","GA Solving") max = InputBox("Введите максимальное значение корня","GA Solving") r = InputBox("Введите количество циклов на определение одного корня(больше - точнее)","GA Solving") s = InputBox("Введите количество попыток определить корень(если вы встретили уравнение с одним корнем ставьте 1;ставьте всегда больше к-ва корней)","GA Solving") Randomize For z=1 to s c = ((max - min + 1)*Rnd + min) d = ((max - min + 1)*Rnd + min) e = ((max - min + 1)*Rnd + min) f = ((max - min + 1)*Rnd + min) k1 = replace (a,"x",""& c &"") k2 = replace (a,"x",""& d &"") k3 = replace (a,"x",""& e &"") k4 = replace (a,"x",""& f &"") k1 = replace (k1,",",".") k2 = replace (k2,",",".") k3 = replace (k3,",",".") k4 = replace (k4,",",".") k1 = eval(k1) k2 = eval(k2) k3 = eval(k3) k4 = eval(k4) l = 1/Abs(k1) m = 1/Abs(k2) n = 1/Abs(k3) o = 1/Abs(k4) f = c*l+d*m+e*n+f*o/(l+m+n+o) For n=1 to r c = ((max - min + 1)*Rnd + min) d = ((max - min + 1)*Rnd + min) e = ((max - min + 1)*Rnd + min) k1 = replace (a,"x",""& c &"") k2 = replace (a,"x",""& d &"") k3 = replace (a,"x",""& e &"") k4 = replace (a,"x",""& f &"") k1 = replace (k1,",",".") k2 = replace (k2,",",".") k3 = replace (k3,",",".") k4 = replace (k4,",",".") k1 = eval(k1) k2 = eval(k2) k3 = eval(k3) k4 = eval(k4) l = 1/Abs(k1) m = 1/Abs(k2) n = 1/Abs(k3) o = 1/Abs(k4) D = c*l+d*m+e*n+f*o/(l+m+n+o) k5 = replace (a,"x",""& D &"") k5 = replace (k5,",",".") k5 = eval(k5) p = 1/Abs(k5) If p>o Then f = D End If Next MsgBox f,0,"GA Solving" Next В программе нужно заменить количество циклов на точность.Пробовал так - не работает. a = InputBox("Введите левую часть уравнения","GA Solving") b = 0 min = InputBox("Введите минимальное значение корня","GA Solving") max = InputBox("Введите максимальное значение корня","GA Solving") r = InputBox("Введите минимальную точность определения","GA Solving") s = InputBox("Введите количество попыток определить корень(если вы встретили уравнение с одним корнем ставьте 1;ставьте всегда больше к-ва корней)","GA Solving") Randomize For z=1 to s c = ((max - min + 1)*Rnd + min) d = ((max - min + 1)*Rnd + min) e = ((max - min + 1)*Rnd + min) f = ((max - min + 1)*Rnd + min) k1 = replace (a,"x",""& c &"") k2 = replace (a,"x",""& d &"") k3 = replace (a,"x",""& e &"") k4 = replace (a,"x",""& f &"") k1 = replace (k1,",",".") k2 = replace (k2,",",".") k3 = replace (k3,",",".") k4 = replace (k4,",",".") k1 = eval(k1) k2 = eval(k2) k3 = eval(k3) k4 = eval(k4) l = 1/Abs(k1) m = 1/Abs(k2) n = 1/Abs(k3) o = 1/Abs(k4) f = c*l+d*m+e*n+f*o/(l+m+n+o) Do c = ((max - min + 1)*Rnd + min) d = ((max - min + 1)*Rnd + min) e = ((max - min + 1)*Rnd + min) k1 = replace (a,"x",""& c &"") k2 = replace (a,"x",""& d &"") k3 = replace (a,"x",""& e &"") k4 = replace (a,"x",""& f &"") k1 = replace (k1,",",".") k2 = replace (k2,",",".") k3 = replace (k3,",",".") k4 = replace (k4,",",".") k1 = eval(k1) k2 = eval(k2) k3 = eval(k3) k4 = eval(k4) l = 1/Abs(k1) m = 1/Abs(k2) n = 1/Abs(k3) o = 1/Abs(k4) D = c*l+d*m+e*n+f*o/(l+m+n+o) k5 = replace (a,"x",""& D &"") k5 = replace (k5,",",".") k5 = eval(k5) p = 1/Abs(k5) If p>o Then f = D L=Abs(k5) Else L=Abs(k4) End If Loop While L>r MsgBox f,0,"GA Solving" Next Программа выполняется, но ответ выдается с совершенно другой точностью.Помогите найти ошибку, ибо уже намучился с этой проблемой, ничего не помогает.Заранее спасибо! |
|
Отправлено: 23:40, 28-01-2018 |
Ветеран Сообщения: 2708
|
Профиль | Отправить PM | Цитировать ProTech Inc,
Цитата ProTech Inc:
|
|
------- Отправлено: 23:53, 28-01-2018 | #2 |
Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети. Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля. |
Новый участник Сообщения: 3
|
Профиль | Отправить PM | Цитировать megaloman, линейные, квадратные,кубические, дробно-рациональные
если есть возможность написать свой вариант - пожалуйста Метод - генетический алгоритм. |
Последний раз редактировалось ProTech Inc, 29-01-2018 в 00:25. Отправлено: 00:04, 29-01-2018 | #3 |
Новый участник Сообщения: 3
|
Профиль | Отправить PM | Цитировать Ошибка заключалась в неправильном вводе формулы, как оказалось, формула должна была быть введена так:f = (c*l+d*m+e*n+f*o)/(l+m+n+o).
|
Отправлено: 23:50, 18-02-2018 | #4 |
Участник сейчас на форуме | Участник вне форума | Автор темы | Сообщение прикреплено |
| |||||
Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
VBS/WSH/JS - Скрипт VBS для копирования Файла с сетевой папки . | xtoxa | Скриптовые языки администрирования Windows | 1 | 31-05-2016 14:50 | |
VBS/WSH/JS - Скрипт vbs для удаления ветки реестра | angel_lyucifer | Скриптовые языки администрирования Windows | 12 | 25-11-2015 18:32 | |
VBS/WSH/JS - Скрипт vbs для создания плокального пользователя с атрибутами | Neep | Скриптовые языки администрирования Windows | 4 | 29-07-2014 10:05 | |
VBS/WSH/JS - нужен vbs скрипт для отпраки файлов на mail | exekill | Скриптовые языки администрирования Windows | 0 | 18-04-2012 16:28 | |
VBS/WSH/JS - VBS скрипт для автоматизации PreSP4 | Keir | Скриптовые языки администрирования Windows | 1 | 14-04-2010 04:27 |
|