реклама на сайте
подробности

 
 
> Какая математическая функция описывает следующую кривую?
0xFF
сообщение Sep 9 2010, 07:05
Сообщение #1


Частый гость
**

Группа: Свой
Сообщений: 131
Регистрация: 9-01-06
Пользователь №: 12 984



Доброго здравия!

При отыскании решений для задачи Zero Dynamic Motion была найдена следующая зависимость между координатами (а1(ось х) и а2(ось у)) двух массовой модели объекта типа "циркуль".



Я смотрю на это семейство кривых и вроде узнаю кривую какой-то математической ф-ии.. Судя по приложенному рисунку кривая маштабируема коэф-том. Помогите, пожалуйста, найти ф-ию описывающую приведенные кривые.

С уважением,
Андрей
Go to the top of the page
 
+Quote Post
2 страниц V   1 2 >  
Start new topic
Ответов (1 - 23)
MrYuran
сообщение Sep 9 2010, 07:08
Сообщение #2


Беспросветный оптимист
******

Группа: Свой
Сообщений: 4 640
Регистрация: 26-12-07
Из: Н.Новгород
Пользователь №: 33 646



y = a * sin(b * x)
Тем более если циркуль


--------------------
Программирование делится на системное и бессистемное. ©Моё :)
— а для кого-то БГ — это Bill Gilbert =)
Go to the top of the page
 
+Quote Post
0xFF
сообщение Sep 9 2010, 07:47
Сообщение #3


Частый гость
**

Группа: Свой
Сообщений: 131
Регистрация: 9-01-06
Пользователь №: 12 984



Цитата(MrYuran @ Sep 9 2010, 10:08) *
y = a * sin(b * x)
Тем более если циркуль


Спасибо - кривая похожа,но моё предположение о маштабируемости видимо было ошибочным) вот что получилось. изменяя a



меняя b

m-file script


Код
a = -0.5;
x = -pi/2:pi/100:pi/2;
y = zeros(1,size(x,2));
i = 0;
b = 1;
figure(1); hold on; grid on;
for a = -0.5:0.1:-0.1
    for x = -pi/2:pi/100:pi/2
        i = i+1;
    y(i) = a * sin(b * x);
    end
    i = 0;
    x = -pi/2:pi/100:pi/2;
    plot(x,y);
end
figure(2); hold on; grid on;
a = -0.5;
for b = 1:-0.1:0.1
    for x = -pi/2:pi/100:pi/2
        i = i+1;
    y(i) = a * sin(b * x);
    end
    i = 0;
    x = -pi/2:pi/100:pi/2;
    plot(x,y);
end


вот что получается при скалировании полученной зависимости

Код
figure(3); hold on; grid on;
b = 1;
a = -0.5;
    for x = -pi/2:pi/100:pi/2
        i = i+1;
    y(i) = a * sin(b * x);
    end
    i = 0;
for sc = 1:-0.1:0    
    x = -pi/2:pi/100:pi/2;
    plot(x*sc/4,y*sc);
end



Осталось изменить наклон
Go to the top of the page
 
+Quote Post
Xenia
сообщение Sep 9 2010, 08:32
Сообщение #4


Гуру
******

Группа: Модератор FTP
Сообщений: 4 479
Регистрация: 20-02-08
Из: Москва
Пользователь №: 35 237



На мой взгляд, синусы тут не годятся, хотя и позволяют апроксимировать эту область с достаточной точностью.
Куда проще представить зависимость, как x=f(y), т.е. поменять местами на графике оси x и у, чтобы эта зависимость хорошо подошла под полином 3-ей степени. Такой полином будет иметь вид:
x=ay3+by2+cy
свободного члена тут видимо не будет, т.к. кривая проходит через начало коородинат.
Да и из физических соображений очевидно, что сама исходная зависимость непериодична, а потому у нее нет той тенденции "загручиваться" на концах, которая присуща функции синуса. У исходной зависимости иная тенденция - ассимптотически приближаться к горизонтали.
Сам график переворачивать нет необходимости, если уж такая его форма для вас предпочтительнее. Но под апроксимирующий алгоритм подложить x и y поменяными местами ничего не стоит.
Go to the top of the page
 
+Quote Post
scifi
сообщение Sep 9 2010, 08:49
Сообщение #5


Гуру
******

Группа: Свой
Сообщений: 3 020
Регистрация: 7-02-07
Пользователь №: 25 136



Эта штука больше на арктангенс похожа:
atan(x)

Или на гиперболический тангенс:

tanh(x)

Как будто к асимптотам стремится.
Go to the top of the page
 
+Quote Post
Xenia
сообщение Sep 9 2010, 08:54
Сообщение #6


Гуру
******

Группа: Модератор FTP
Сообщений: 4 479
Регистрация: 20-02-08
Из: Москва
Пользователь №: 35 237



Цитата(scifi @ Sep 9 2010, 12:49) *
Эта штука больше на арктангенс похожа:

Ага smile.gif. Вот только далеко не всегда удобно использовать модель на тригонометрических функциях.
Go to the top of the page
 
+Quote Post
0xFF
сообщение Sep 9 2010, 09:01
Сообщение #7


Частый гость
**

Группа: Свой
Сообщений: 131
Регистрация: 9-01-06
Пользователь №: 12 984



Цитата(Xenia @ Sep 9 2010, 11:32) *
На мой взгляд, синусы тут не годятся, хотя и позволяют апроксимировать эту область с достаточной точностью.
Куда проще представить зависимость, как x=f(y), т.е. поменять местами на графике оси x и у, чтобы эта зависимость хорошо подошла под полином 3-ей степени. Такой полином будет иметь вид:
x=ay3+by2+cy
свободного члена тут видимо не будет, т.к. кривая проходит через начало коородинат.
Да и из физических соображений очевидно, что сама исходная зависимость непериодична, а потому у нее нет той тенденции "загручиваться" на концах, которая присуща функции синуса. У исходной зависимости иная тенденция - ассимптотически приближаться к горизонтали.
Сам график переворачивать нет необходимости, если уж такая его форма для вас предпочтительнее. Но под апроксимирующий алгоритм подложить x и y поменяными местами ничего не стоит.


Да я согласен с вами, что форма кривой очень подходит под полином 3го порядка...и это дейстительно, наверно, наилучший вариант...
Спасибо rolleyes.gif

Цитата(scifi @ Sep 9 2010, 11:49) *
Эта штука больше на арктангенс похожа:
atan(x)

Или на гиперболический тангенс:

tanh(x)

Как будто к асимптотам стремится.


biggrin.gif очень похожа

Цитата(Xenia @ Sep 9 2010, 11:54) *
Ага smile.gif. Вот только далеко не всегда удобно использовать модель на тригонометрических функциях.

Использовать буду как ф-ию для линеаризации объекта, поэтому очень важно чтобы она инвертировалась
Go to the top of the page
 
+Quote Post
Tanya
сообщение Sep 9 2010, 09:51
Сообщение #8


Гуру
******

Группа: Модераторы
Сообщений: 8 752
Регистрация: 6-01-06
Пользователь №: 12 883



Цитата(scifi @ Sep 9 2010, 12:49) *
tanh(x)
Как будто к асимптотам стремится.


Тогда уж -a*tanh(x/a)
Go to the top of the page
 
+Quote Post
Xenia
сообщение Sep 9 2010, 10:03
Сообщение #9


Гуру
******

Группа: Модератор FTP
Сообщений: 4 479
Регистрация: 20-02-08
Из: Москва
Пользователь №: 35 237



Прошу обратить внимание, что полином
x=ay3+by2+cy
имеет 3 степени свободы - коэффициенты a,b,c,
тогда как функции
a*atan(b*x) или a*tanh(b*x)
только две.
Это означает, что полином под свою кривую вы почти всегда подберете, а вот тригонометрическая функция под экспериментальные точки может не вписаться, т.к. фактически мы можем только плющить ее (т.е. растягивать или сжимать) вдоль каждой из осей, но не более того.
Пока мы смотрим на семейство кривых, получаемых растяжкой/сжатием, то все это выглядит в высшей степени подобно и никаких опасений не вызывает. Но как только начинается аппроксимация реальных точек, то тут-то и оказывается, что растяжек может оказаться недостаточно, чтобы точно наложить кривые друг на друга.
Но если все-таки тригономерическая аппроксимация подходит, то преподчтительнее, конечно, модель с наименьшим числом степеней свободы (коэффициентов). Этот вопрос должен решаться экспериментально - путем оценки невязок в том и другом случае, а не исходя из одних только априорных соображений о внешнем виде функций.
Go to the top of the page
 
+Quote Post
0xFF
сообщение Sep 9 2010, 10:13
Сообщение #10


Частый гость
**

Группа: Свой
Сообщений: 131
Регистрация: 9-01-06
Пользователь №: 12 984



Цитата(Xenia @ Sep 9 2010, 13:03) *
Прошу обратить внимание, что полином
x=ay3+by2+cy
имеет 3 степени свободы - коэффициенты a,b,c,
тогда как функции
a*atan(b*x) или a*tanh(b*x)
только две.
Это означает, что полином под свою кривую вы почти всегда подберете, а вот тригонометрическая функция под экспериментальные точки может не вписаться, т.к. фактически мы можем только плющить ее (т.е. растягивать или сжимать) вдоль каждой из осей, но не более того.
Пока мы смотрим на семейство кривых, получаемых растяжкой/сжатием, то все это выглядит в высшей степени подобно и никаких опасений не вызывает. Но как только начинается аппроксимация реальных точек, то тут-то и оказывается, что растяжек недостаточно, чтобы точно наложить кривые друг на друга.


Сейчас проверим мои экспериметальные точки под гиперболический тангенс....
Go to the top of the page
 
+Quote Post
Tanya
сообщение Sep 9 2010, 10:18
Сообщение #11


Гуру
******

Группа: Модераторы
Сообщений: 8 752
Регистрация: 6-01-06
Пользователь №: 12 883



Цитата(Xenia @ Sep 9 2010, 14:03) *
Прошу обратить внимание, что полином
x=ay3+by2+cy
имеет 3 степени свободы - коэффициенты a,b,c,
тогда как функции
a*atan(b*x) или a*tanh(b*x)
только две.

Хочется возразить, что квадратичного члена тут нет. И тоже две степени свободы.
А то, что я писала выше содержит только один параметр. Производная у всего семейства в нуле одинаковая.
Go to the top of the page
 
+Quote Post
Xenia
сообщение Sep 9 2010, 10:29
Сообщение #12


Гуру
******

Группа: Модератор FTP
Сообщений: 4 479
Регистрация: 20-02-08
Из: Москва
Пользователь №: 35 237



Цитата(Tanya @ Sep 9 2010, 14:18) *
Хочется возразить, что квадратичного члена тут нет. И тоже две степени свободы.
А то, что я писала выше содержит только один параметр. Производная у всего семейства в нуле одинаковая.

Если учитывать (т.е. фактически фиксировать) значение производной в начале координат, то одну степень свободы потеряет не только полином, но и тригонометрические функции
a*atan(b*x) или a*tanh(b*x),
поскольку растяги по осям перестанут быть независимыми.
Тогда растяг по х уже нельзя будет подобрать произвольным образом, а он будет жестко определяться "разницей уровней" по y, т.к. при любом ином растяге повредится производная в начале координат.
Я полагаю, что тогда шансы 0xFF натянуть эту функцию на свои точки устремятся к нулю. smile.gif
Go to the top of the page
 
+Quote Post
0xFF
сообщение Sep 9 2010, 10:33
Сообщение #13


Частый гость
**

Группа: Свой
Сообщений: 131
Регистрация: 9-01-06
Пользователь №: 12 984



Вот что получилось

Красные - это экспеоиментальные кривые
Черная и синяя получены так
Код
figure(8); hold on; grid on
    a = -0.5054;
    x = -pi/8:pi/8/100:pi/8;
    b = pi/(pi/8);

    y =a*tanh(-1/a*b*x);
    plot(x,y,'b');
    i = 13;
    plot(ZeroDynamicPlot.object(i).states(1,:),ZeroDynamicPlot.object(i).states(3,:),'r');
    
    
    a = -0.1669;
    x = -pi/8:pi/8/100:pi/8;
    b = pi/(pi/8);

    y =a*tanh(-1/a*b*x);
    plot(x,y,'k');
    i = 5;
    plot(ZeroDynamicPlot.object(i).states(1,:),ZeroDynamicPlot.object(i).states(3,:),'r')


Go to the top of the page
 
+Quote Post
Xenia
сообщение Sep 9 2010, 10:35
Сообщение #14


Гуру
******

Группа: Модератор FTP
Сообщений: 4 479
Регистрация: 20-02-08
Из: Москва
Пользователь №: 35 237



Цитата(0xFF @ Sep 9 2010, 14:33) *
Вот что получилось

Вот это и есть то, о чем я предупреждала. Либо наклон (производная) в начале координат не совпадет, либо не совпадут "выпуклости". Нос вытащишь - хвост увязнет. smile.gif

А теперь полином испытайте!
Go to the top of the page
 
+Quote Post
0xFF
сообщение Sep 9 2010, 10:40
Сообщение #15


Частый гость
**

Группа: Свой
Сообщений: 131
Регистрация: 9-01-06
Пользователь №: 12 984



при небольшой корректировки коэф b удалсь добиться вот такого результата

b = (pi-0.5)/(pi/8);



Похоже, что ф-ия определена. Всем огромное спасибо.

Цитата(Xenia @ Sep 9 2010, 13:35) *
Вот это и есть то, о чем я предупреждала. Либо наклон (производная) в начале координат не совпадет, либо не совпадут "выпуклости". Нос вытащишь - хвост увязнет. smile.gif

А теперь полином испытайте!


Полином я обязательно проверю, т.к. для лианеризации он мне больше подходит
Go to the top of the page
 
+Quote Post
Xenia
сообщение Sep 9 2010, 10:43
Сообщение #16


Гуру
******

Группа: Модератор FTP
Сообщений: 4 479
Регистрация: 20-02-08
Из: Москва
Пользователь №: 35 237



Цитата(0xFF @ Sep 9 2010, 14:40) *
при небольшой корректировки коэф b удалсь добиться вот такого результата

b = (pi-0.5)/(pi/8);

А вы вручную что-ли коэффициенты подбираете?
Go to the top of the page
 
+Quote Post
Tanya
сообщение Sep 9 2010, 10:53
Сообщение #17


Гуру
******

Группа: Модераторы
Сообщений: 8 752
Регистрация: 6-01-06
Пользователь №: 12 883



Цитата(0xFF @ Sep 9 2010, 14:40) *
Полином я обязательно проверю, т.к. для лианеризации он мне больше подходит

Это вряд ли. Если кубическое уравнение еще можно решать, то что с пятой (или 7-й...111-й) степенью, которая лучше подойдет. Ведь Вам нужна обратная функция? Или только она и нужна? Тогда да.
Go to the top of the page
 
+Quote Post
0xFF
сообщение Sep 9 2010, 11:18
Сообщение #18


Частый гость
**

Группа: Свой
Сообщений: 131
Регистрация: 9-01-06
Пользователь №: 12 984



Цитата(Tanya @ Sep 9 2010, 13:53) *
Это вряд ли. Если кубическое уравнение еще можно решать, то что с пятой (или 7-й...111-й) степенью, которая лучше подойдет. Ведь Вам нужна обратная функция? Или только она и нужна? Тогда да.

Да мне только обратная ф-ия нужна. Прямая уже unsure.gif "присутствует" в объекте.

Цитата(Xenia @ Sep 9 2010, 13:43) *
А вы вручную что-ли коэффициенты подбираете?


Простите, но так и сделал)). Алгоритмом Левенберга — Марквардта принебрёг и тут сразу было бы видно насколько точно попадают все точки....Понимаю, что неправ - но визуально тоже хорошо видно))
Go to the top of the page
 
+Quote Post
Tanya
сообщение Sep 9 2010, 11:29
Сообщение #19


Гуру
******

Группа: Модераторы
Сообщений: 8 752
Регистрация: 6-01-06
Пользователь №: 12 883



Цитата(0xFF @ Sep 9 2010, 15:18) *
Да мне только обратная ф-ия нужна. Прямая уже unsure.gif "присутствует" в объекте.

Так не нужно было вводить в заблуждение. Сразу бы поменяли оси...
Тогда A*a*tg(x/a). A - производная в нуле. Или Ax +bx^(2n+1)
Go to the top of the page
 
+Quote Post
0xFF
сообщение Sep 9 2010, 13:34
Сообщение #20


Частый гость
**

Группа: Свой
Сообщений: 131
Регистрация: 9-01-06
Пользователь №: 12 984



Цитата(Tanya @ Sep 9 2010, 14:29) *
Так не нужно было вводить в заблуждение. Сразу бы поменяли оси...
Тогда A*a*tg(x/a). A - производная в нуле. Или Ax +bx^(2n+1)


Где это я вас ввёл в заблуждение? Ф-ия мне не была известна ни прямая ни обратная
Go to the top of the page
 
+Quote Post
Tanya
сообщение Sep 9 2010, 13:43
Сообщение #21


Гуру
******

Группа: Модераторы
Сообщений: 8 752
Регистрация: 6-01-06
Пользователь №: 12 883



Цитата(0xFF @ Sep 9 2010, 17:34) *
Где это я вас ввёл в заблуждение? Ф-ия мне не была известна ни прямая ни обратная

Там, где просили подобрать аналитическое выражение для прямой функции, график которой привели.
Отразили бы его зеркально относительно биссектрисы (прямой y=x), что равносильно перемене надписей на осях, тогда бы было меньше постов... А прямая функция - это Ваш график. Есть ведь и такой способ задания функции...
Go to the top of the page
 
+Quote Post
0xFF
сообщение Sep 9 2010, 13:48
Сообщение #22


Частый гость
**

Группа: Свой
Сообщений: 131
Регистрация: 9-01-06
Пользователь №: 12 984



Цитата(Tanya @ Sep 9 2010, 16:43) *
Там, где просили подобрать аналитическое выражение для прямой функции, график которой привели.
Отразили бы его зеркально относительно биссектрисы (прямой y=x), что равносильно перемене надписей на осях, тогда бы было меньше постов... А прямая функция - это Ваш график. Есть ведь и такой способ задания функции...


простите, что не точно выразился "..... мне только нужна обратная функция..." тоесть для линеаризации мне прямая не нужна.... а так мне НУЖНЫ ОБЕ....

Выражаю всем огромную благодарность за помощь. Обсалютна вся информация ценна.
Go to the top of the page
 
+Quote Post
Tanya
сообщение Sep 9 2010, 13:55
Сообщение #23


Гуру
******

Группа: Модераторы
Сообщений: 8 752
Регистрация: 6-01-06
Пользователь №: 12 883



Цитата(0xFF @ Sep 9 2010, 17:48) *
простите, что не точно выразился "..... мне только нужна обратная функция..." тоесть для линеаризации мне прямая не нужна.... а так мне НУЖНЫ ОБЕ....

Вам была нужна только аналитическая аппроксимация обратной.
Go to the top of the page
 
+Quote Post
0xFF
сообщение Sep 9 2010, 14:04
Сообщение #24


Частый гость
**

Группа: Свой
Сообщений: 131
Регистрация: 9-01-06
Пользователь №: 12 984



Цитата(Tanya @ Sep 9 2010, 16:55) *
Вам была нужна только аналитическая аппроксимация обратной.

для линеаризации.... а для всей работы в целом так же и прямая..... так как я не смог получить её в явном виде
Go to the top of the page
 
+Quote Post

2 страниц V   1 2 >
Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 20th July 2025 - 15:53
Рейтинг@Mail.ru


Страница сгенерированна за 0.01597 секунд с 7
ELECTRONIX ©2004-2016