Форум: "Прочее";
Текущий архив: 2009.02.22;
Скачать: [xml.tar.bz2];
ВнизНелинейные функции Найти похожие ветки
← →
Мазут Береговой © (2008-12-24 01:44) [0]Нужно уравнение для нелинейной функции.
Должны вводиться два параметра: начальное значение и конечное.
Значение функции должно плавно нарастать вначале,а в последней трети резко.
Есть такое выражение в C#:
Math.Round(Math.Tan(0.1 + (step * k1)), 1) * k2;
step - переменная, всегда увеличивающаяся на 1 (step=step+1).
Math.Tan - тангенс.
Math.Round - округление (в данном случае до одной десятичной цифры).
Задача сводится к тому, чтобы через входные параметры n1(начальное значение) и n2(конечное значение) вычислить коэффициенты k1 и k2.
Или может кто знает мат формулу для таких случаев?
← →
Дуб © (2008-12-24 06:56) [1]Задача не поставлена.
Когда и при каких обстоятельствах увеличивается step? На каком множестве задана функция? Кроме значений функции, имеются ли значения аргументов? Чем не пригоден для поиска Эксель?
← →
Jeer © (2008-12-24 10:04) [2]
> Или может кто знает мат формулу для таких случаев?
Можно посмотреть на множество экспоненциальных функций
y=a*e^(b*x+c)
y=a+b*e^(x/c)+d*e^(x/f)
y=a*(1-e^(-b(x-d*x))
и тд
← →
Ega23 © (2008-12-24 10:07) [3]
> Значение функции должно плавно нарастать вначале,а в последней
> трети резко.
>
Да что угодно может быть. Экспонента, гипербола, даже полином вполне может быть.
← →
Jeer © (2008-12-24 10:23) [4]Устроит ?
Y =0.03333+1.03089*X-0.1014 X^2+0.03438 X^3
← →
@!!ex © (2008-12-24 10:43) [5]Result:=I*I*I*I;
тупо парабола. при 0<i<1
дает как раз плавное нарастание в первые две трети и резкое в последней трети.
← →
Дуб © (2008-12-24 11:09) [6]>
> Jeer © (24.12.08 10:04) [2]
> Ega23 © (24.12.08 10:07) [3]
> @!!ex © (24.12.08 10:43) [5]
Учимся читать внимательно:
> Задача сводится к тому, чтобы через входные параметры n1(начальное
> значение) и n2(конечное значение) вычислить коэффициенты
> k1 и k2.
У него уже есть вид. ТОлько вот раскрыть бы его по пунктам.
← →
Jeer © (2008-12-24 11:31) [7]
> У него уже есть вид. ТОлько вот раскрыть бы его по пунктам.
А как же ?
> Или может кто знает мат формулу для таких случаев?
В общем, малопонятно, что ему надо.
← →
Дуб © (2008-12-24 11:49) [8]>> Или может кто знает мат формулу для таких случаев?
>
> В общем, малопонятно, что ему надо.
Это да. Но я так понял, что может кто знает решение в квадратурах для приведенного случая.
← →
@!!ex © (2008-12-24 12:10) [9]> [6] Дуб © (24.12.08 11:09)
Я внимательно прочитал:Нужно уравнение для нелинейной функции.
Функцию я привел.Должны вводиться два параметра: начальное значение и конечное.
Не вопрос. Это смещение и масштабирование параболы.Значение функции должно плавно нарастать вначале,а в последней трети резко.
Моя функция удовлетворяет этому условию.
← →
Jeer © (2008-12-24 12:15) [10]
> тупо парабола. при 0<i<1
Даже если совсем тупо, то не парабола.
← →
Дуб © (2008-12-24 12:44) [11]>@!!ex © (24.12.08 12:10) [9]
Ты плохо прочитал. Перечитай! :)
← →
Мазут Береговой © (2008-12-24 18:32) [12]Попытаюсь еще раз.
step - увеличивается монотонно от 0 до N с шагом 1.
0,N - входные параметры n1 и n2 соответственно. Эти параметры для вызова функции задаются один раз, но при каждом вызове могут быть разные.
Функция должна быть нелинейной, но так чтобы в начале ее результат был не менее n1 и не более n2. "не менее" и "не более" - понятия условные. Идеальный случай - равны n1 и n2.
Относительно той функции, что я привел - то это только вариант через тангенс, который я пока опробовал, но уперся в коэффициенты.
Вот я и спрашивал про другие варианты.
Примерно вот такие значения (эмпирически):
n1=1, n2=10
step: 1,2,3,4,5,6,7,8,9,10.
func: 1.1, 1.4, 1.9, 2.3, 2.8, 3.5, 5.0, 6.4, 8.7, 9.9
т.е.
если заданы n1=10, n2=300, то функция должна начаться сразу после 10 и закончиться близко к 300.
← →
Jeer © (2008-12-24 18:51) [13]Для Ваших значений
Y =1.18333-0.04081*X+0.05962 X^2+0.00346 X^3
также подходит экспоненциальная
Для первого случая аналитически решается система из обратных функций
(куб уравнение)
Можно численно
← →
Мазут Береговой © (2008-12-24 19:13) [14]
> Jeer © (24.12.08 18:51) [13]
Скорее всего не подойдет. Должно быть 10 шагов - 10 значений функции. Первое и последнее должны совпадать по значению с числом шага.
Интересно, Jeer, вы откуда функции берете? :-)
← →
Мазут Береговой © (2008-12-24 19:15) [15]
> Мазут Береговой © (24.12.08 19:13) [14]
>
> > Jeer © (24.12.08 18:51) [13]
>
> Скорее всего не подойдет. Должно быть 10 шагов - 10 значений
> функции. Первое и последнее должны совпадать по значению
> с числом шага.
> Интересно, Jeer, вы откуда функции берете? :-)
В смысле не "10 шагов - 10 значений функции", а N шагов - N значений функции..
← →
Дуп (пароль вот прпомню) (2008-12-24 19:38) [16]> Относительно той функции, что я привел - то это только вариант
> через тангенс,
Понятно. Но ты сказал сам:
> Задача сводится к тому,
и далее. Я зануда - я это знаю.
> Скорее всего не подойдет. Должно быть 10 шагов - 10 значений
> функции.
Тебе сплайн нужен с соответсвующим поведением? Опиши его. Если крутую производную в конце и некрутую вначале - то можно кучу ссылок на кубические подогнать. Но тебе видимо еще надо и монотонность первой производной обеспечить?
← →
Мазут Береговой © (2008-12-24 19:58) [17]
> Дуп (пароль вот прпомню) (24.12.08 19:38) [16]
про монотонность не уверен...
вот такого вида:
http://www.purplemath.com/modules/logs/expfcn06.gif
← →
Дуп (2008-12-24 20:04) [18]
> вот такого вида:
Там картинка с текстом.
← →
Мазут Береговой © (2008-12-24 20:50) [19]
> Дуп (24.12.08 20:04) [18]
Скопируй ее в строку адреса...
← →
Мазут Береговой © (2008-12-24 22:24) [20]Похоже, решение найдено:
основная формула:
f=base^step/2
где step меняется от 0 до N с шагом 1.
(хотел сделать для общего случая от n1 до n2 для универсальности, но и от 0 в моем случае подойдет).
остается вычислить base:
base=N^(1/(N/2))
Всем спасибо!
И всех с Наступающим Новым Годом!
Всем здоровья и успехов!
PS если есть у кого какие решения интересные продолжайте сюда писать.
Страницы: 1 вся ветка
Форум: "Прочее";
Текущий архив: 2009.02.22;
Скачать: [xml.tar.bz2];
Память: 0.5 MB
Время: 0.005 c