|
|
|
| Помогите пожалуйста. есть уравнение типа:
-3E-11x3 + 1E-07x2 - 0,0003x + 6,0761
которое вводится в поле.
Нужно:
Взять коэффициенты при переменных т. е. после ввода и нажатии кнопки должно:
а = -3E-11
b = 1E-07
с= - 0,0003
d=6,0761
Не получается никак( | |
|
| |
|
|
|
| используйте функцию Split() с поиском по " "
далее анализ полученных "кусочков", пока в "кусочке" не встретиться "х" | |
|
| |
|
|
|
| Спасибо за идею, буду пробовать. | |
|
| |
|
|
|
| а почему бы Вам не вводить уравнение не в одно поле а в четыре
т.е. просто коэффициенты и тогда вычленять ни чего не надо | |
|
| |
|
|
|
| Так и делаю, но уравнений много, очень трудоемко(
А может возможно из строковой переменной формулу реализовать?
Допустим у меня в базе данных хранятся все эти формулы типа
y = -2E-10x3 + 1E-06x2 + 0,0038x + 11,6
можно ли что бы по этой (выбранной) формуле расчет шел?
Формулы все типичные третьей степени.
Заранее спасибо! | |
|
| |
|
|
|
| сделайте две таблицы
"уравнение"
"коэффициенты"
связь по ключу - выбираете уравнение - получаете четыре его коэффициента | |
|
| |
|
|
|
| Допустим у меня есть уравнение в таблице, а как его вытащить в код VB?
Из таблицы я его же как "строку" вытащу. Или я чего-то не понимаю.... | |
|
| |
|
|
|
| в таблице "уравнения", например, два поля id , name
в таблице "коэффициенты", поля id_уравнения , a,b,c,d (в ней хранятся только коэффициенты)
при выборе уравнения в таблице "уравнения" из таблицы "коэффициенты" получаете для него коэффициенты и собирает все выражение | |
|
| |
|
|
|
| Вот и вопрос в том как собрать выражение.
Вот я выбрал уравнение:
y = "a * x3 + b * x2 с * x + d"
либо выбрал вот такое
y ="-4E-10*x3 + 1E-06*x2 - 0,0015*x + 13,563"
как я понимаю оно у меня как строка хранится в базе
тут же по связям загружаются коэффициенты
а = -4E-10
b = 1E-06
с = - 0,0015
d = 13,563
так же у меня известен х
возможно ли найти "y " по данному уравнению? | |
|
| |
|
|
|
| Можно.
Кстати, зачем хранить и формулу целиком строкой, и коэффициенты, если формула одна?
Если в настоящее время имеется множество формул-строк, то можно
1. "добывать" коэффициенты и считать формулу.
2. без "добывания" коэффициентов, как-то так:
Public Function Result(Str As String, X As Double) As Double
Dim strTemp As String
If Len(Str & "") = 0 Then Exit Function
strTemp = Replace(Str, "х", "x") 'х-русскую на x-аглицкую
strTemp = Replace(strTemp, "x3", CStr(X) & "^3")
strTemp = Replace(strTemp, "x2", CStr(X) & "^2")
strTemp = Replace(strTemp, "x", CStr(X))
strTemp = Replace(strTemp, ",", ".")
'Debug.Print strTemp
Result = Eval(strTemp)
End Function
|
| |
|
| |
|
|
|
| Спасибо большое! Получилось!
-2E-09*x3 + 5E-06*x2 + 0,004*x + 15,137
-2E-09*1000^3 + 5E-06*1000^2 + 0.004*1000 + 15.137
22,137 | |
|
| |