Страница 1 из 1

Как получить полином из аналитической функции?

Добавлено: Ср апр 16, 2014 3:01 pm
RomanB
Добрый день всем!Встал такой вопрос. Мне задана аналитическая функция от 4-5 неизвестных, хотелось бы представить ее в виде полинома..линейного или второй степени. Например, F(x1,x2,x3,x4) и нужно представить ее в виде y=b0+b1*x1+b2*x2+b3*x3+b4*x4. Видится способ:перебрать множество значений, а потом по МНК представить в виде полинома. Но хотелось бы узнать есть ли еще какие-либо способы конвертирования функции? Предпочтительнее было бы чтобы все происходило не численно, а аналитически. Всем спасибо!

Re: Как получить полином из аналитической функции?

Добавлено: Ср апр 16, 2014 7:18 pm
Markiyan Hirnyk
RomanB писал(а):Добрый день всем!Встал такой вопрос. Мне задана аналитическая функция от 4-5 неизвестных, хотелось бы представить ее в виде полинома..линейного или второй степени. Например, F(x1,x2,x3,x4) и нужно представить ее в виде y=b0+b1*x1+b2*x2+b3*x3+b4*x4. Видится способ:перебрать множество значений, а потом по МНК представить в виде полинома. Но хотелось бы узнать есть ли еще какие-либо способы конвертирования функции? Предпочтительнее было бы чтобы все происходило не численно, а аналитически. Всем спасибо!
Пожалуйста, уточните формулировки: Что Вы называете аналитической функцией? Как вы понимаете "перебрать множество значений"? Вопрос может и упасть.

Re: Как получить полином из аналитической функции?

Добавлено: Ср апр 16, 2014 7:36 pm
Kitonum
RomanB писал(а):Добрый день всем!Встал такой вопрос. Мне задана аналитическая функция от 4-5 неизвестных, хотелось бы представить ее в виде полинома..линейного или второй степени. Например, F(x1,x2,x3,x4) и нужно представить ее в виде y=b0+b1*x1+b2*x2+b3*x3+b4*x4. Видится способ:перебрать множество значений, а потом по МНК представить в виде полинома. Но хотелось бы узнать есть ли еще какие-либо способы конвертирования функции? Предпочтительнее было бы чтобы все происходило не численно, а аналитически. Всем спасибо!

Аналитическая функция в окрестности любой точки хорошо приближается своим рядом Тейлора по соответствующим степеням.

Пример:

mtaylor(sqrt(4+x1+3*x2^2-2*x3^2+x4^2),[x1=1,x2=1,x3,x4], 2);
expand(%);


Изображение

Определение

Добавлено: Ср апр 16, 2014 7:45 pm
Markiyan Hirnyk
Функция sqrt(4+x1+3*x2^2-2*x3^2+x4^2) не является аналитической согласно http://ru.wikipedia.org/wiki/%C0%ED%E0% ... A%F6%E8%FF

Re: Как получить полином из аналитической функции?

Добавлено: Ср апр 16, 2014 8:16 pm
RomanB
Эээмм..может я неправильно выразился,простите если что.Вот,я ее прикрепил. А про перебор я подразумевал написать программу и в выбранных диапазонах вычислить значения этой функции при разных значениях переменных, а потом на основании этих данных по МНК получить полином.
Изображение

Re: Как получить полином из аналитической функции?

Добавлено: Ср апр 16, 2014 8:27 pm
Markiyan Hirnyk
RomanB писал(а):Эээмм..может я неправильно выразился,простите если что.Вот,я ее прикрепил. А про перебор я подразумевал написать программу и в выбранных диапазонах вычислить значения этой функции при разных значениях переменных, а потом на основании этих данных по МНК получить полином.
Изображение
Пожалуйста, сообщите Ваши "выбранные диапазоны". Как говорила одна моя знакомая "я любопытна и интересна".

Re: Как получить полином из аналитической функции?

Добавлено: Ср апр 16, 2014 8:59 pm
RomanB
Markiyan Hirnyk писал(а):
RomanB писал(а):Эээмм..может я неправильно выразился,простите если что.Вот,я ее прикрепил. А про перебор я подразумевал написать программу и в выбранных диапазонах вычислить значения этой функции при разных значениях переменных, а потом на основании этих данных по МНК получить полином.
Изображение
Пожалуйста, сообщите Ваши "выбранные диапазоны". Как говорила одна моя знакомая "я любопытна и интересна".



Да,конечно. Это выражение для определения собственных частот системы с двумя степенями свободы. В частности нужно будет рассмотреть первый обертон(получается если подставить знак "+"). Диапазоны изменения будут такими:
для М1 и М2=10..100
для К1 и К2=300000..800000

Встречный вопрос

Добавлено: Ср апр 16, 2014 9:16 pm
Markiyan Hirnyk
Вы имеете дело с достаточно простой формулой. Что в ней Вас не удовлетворяет?

Re: Встречный вопрос

Добавлено: Ср апр 16, 2014 9:32 pm
RomanB
Markiyan Hirnyk писал(а):Вы имеете дело с достаточно простой формулой. Что в ней Вас не удовлетворяет?


Хотел по коэффициентам у слагаемых увидеть какое влияние на конечный результат они оказывают.Только ряди этого.Может есть другие способы?

Re: Встречный вопрос

Добавлено: Ср апр 16, 2014 9:49 pm
Markiyan Hirnyk
RomanB писал(а):
Markiyan Hirnyk писал(а):Вы имеете дело с достаточно простой формулой. Что в ней Вас не удовлетворяет?


Хотел по коэффициентам у слагаемых увидеть какое влияние на конечный результат они оказывают.Только ряди этого.Может есть другие способы?
Ваша попытка разъяснения мне не понятна. Пожалуйста, четко, без местоимений, укажите вышеупомянутые слагаемые.

Re: Встречный вопрос

Добавлено: Ср апр 16, 2014 10:04 pm
RomanB
Markiyan Hirnyk писал(а):
RomanB писал(а):
Markiyan Hirnyk писал(а):Вы имеете дело с достаточно простой формулой. Что в ней Вас не удовлетворяет?


Хотел по коэффициентам у слагаемых увидеть какое влияние на конечный результат они оказывают.Только ряди этого.Может есть другие способы?
Ваша попытка разъяснения мне не понятна. Пожалуйста, четко, без местоимений, укажите вышеупомянутые слагаемые.


Величина W зависит от m1,m2.k1,k2. Преобразовав выражение для W в полином вида W=b0+b1*m1+b2*m2+b3*k1+b4*k2, можно будет оценить влияние каждого отдельного фактора(m1,m2,k1,k2) на величину W

Добавлено: Ср апр 16, 2014 10:28 pm
Markiyan Hirnyk
Спасибо, понял. Сомневаюсь в эфективности такого подхода. Дело в том, что линейная функция не будет хорошим приближением omega, т. к. диапазоны изменения переменных велики. Посмотрите http://ru.wikipedia.org/wiki/%DD%EB%E0% ... 8%EA%E0%29 .
В Вашем случае
omega := sqrt((m2*k2+m2*(k1+k2))/(2*m1*m2)+sqrt(((m2*k2+m2*(k1+k2))/(2*m1*m2))^2-k1*k2/(m1*m2))):
evalf(eval((diff(omega, k1))*k1/omega, [m1 = 20, m2 = 20, k1 = 400000, k2 = 500000]))
0.1107284964
означает, что для указанных значений параметров при возрастании k1 на один процент значение omega возрастает на 0.11 процента. Подобным образом считается эластичность по другим переменным для иных значений параметров.

Добавлено: Ср апр 16, 2014 10:34 pm
RomanB
Markiyan Hirnyk писал(а):Спасибо, понял. Сомневаюсь в эфективности такого подхода. Дело в том, что линейная функция не будет хорошим приближением omega, т. к. диапазоны изменения переменных велики Посмотрите http://ru.wikipedia.org/wiki/%DD%EB%E0% ... 8%EA%E0%29
В Вашем случае
omega := sqrt((m2*k2+m2*(k1+k2))/(2*m1*m2)+sqrt(((m2*k2+m2*(k1+k2))/(2*m1*m2))^2-k1*k2/(m1*m2))):
evalf(eval((diff(omega, k1))*k1/omega, [m1 = 20, m2 = 20, k1 = 400000, k2 = 500000]))
0.1107284964
означает, что для указанных значений параметров при возрастании k1 на один процент значение omega возрастает на 0.11 процента. Подобным образом считается эластичность по другим переменным для иных значений параметров.


О,спасибо огромное,так и правда выглядит лучше!

Добавлено: Ср апр 16, 2014 10:41 pm
Markiyan Hirnyk
RomanB писал(а):О,спасибо огромное,так и правда выглядит лучше!

Относительно Вашего косноязычного красноречия: "Хотели как лучше, а получилось как всегда."

Добавлено: Ср апр 16, 2014 10:45 pm
RomanB
Markiyan Hirnyk писал(а):
RomanB писал(а):О,спасибо огромное,так и правда выглядит лучше!

Относительно Вашего косноязычного красноречия: "Хотели как лучше, а получилось как всегда."


И не говорите :D Почему-то я редко могу объяснить на словах, что именно нужно))