Просмотр полной версии : Нужно построить уравнение поверхности. Подскажите программу.
Lexander
15.11.2012, 07:31
Есть 8-битное изображение BMP шириной в 1000 пикселей и высотой в 70 пикселей. Каждый пиксел изображения имеет яркость от 0 до 255. Нужно построить функцию вида I = f (x, y) , где I - яркость пикселя (0..255), х и y - координаты пикселя (х=1..1000, y=1..70). Нужна программа, в которую можно вставить матрицу 1000х70 и которая построит по ней функцию I=f(x,y). Excel строит поверхность, но не строит функцию. А мне надо функцию именно узнать. Есть такая программа?
Hogfather
15.11.2012, 08:03
Нужна программа, в которую можно вставить матрицу 1000х70 и которая построит по ней функцию I=f(x,y). Excel строит поверхность, но не строит функцию. А мне надо функцию именно узнать. Есть такая программа?
Lexander, например, GNU R (http://aspirantura.spb.ru/forum/showthread.php?t=10501).
Только сформулируйте задачу непротиворечиво: построить I по х,у при известной f, или аппроксимировать f по x,y,I. Это несколько разные задачи.
Вам полиномище что-ли нужен? Дык, это и Excel умеет...
Вот это
Excel строит поверхность, но не строит функцию.
вызвало разрыв шаблона.
Lexander
15.11.2012, 09:04
Функция задана таблично. То есть матрица чисел 1000х70. y принимает значения от 1 до 70 (строки), x от 1 до 1000 (столбцы). Сами числа в матрице - от 0 до 255, это I. Нужно узнать уравнение вида I = f (x, y), то бишь найти f. Например такого вида: I = a*х^2 + b*y^2 (параболоид).
Добавлено через 14 минут
Вот пример. Создал матрицу 3х3, заполнил произвольными числами, построил поверхность (Excel). Для двумерных графиков можно добавить линию тренда и узнать уравнение у=f(x). А как для трехмерного графика узнать уравнение z=f(x,y) в Excel?
http://www.emaenu.pisem.net/g.jpg
Hogfather
15.11.2012, 10:23
Ну, я не пробовал подгонять двухпараметрическую функцию, но можем и попробовать.
># Инициируем данные
> MyData<-data.frame(x=c(rep(c(1,2,3),3)),y=c(1,1,1,2,2,2,3, 3,3))
> MyData$I<-MyData$x^2-MyData$y^2
># Таращимся на результат
> MyData
x y I
1 1 1 0
2 2 1 3
3 3 1 8
4 1 2 -3
5 2 2 0
6 3 2 5
7 1 3 -8
8 2 3 -5
9 3 3 0
># Подключаем доступ к переменным из таблицы по именам
> attach(MyData)
> (MyMdl<-lm(I~x+y+x*y+I(x^2)+I(y^2)))
> summary(MyMdl)
Call:
lm(formula = I ~ x + y + x * y + I(x^2) + I(y^2))
Residuals:
1 2 3 4 5 6 7
1.436e-16 -3.583e-16 2.147e-16 -5.121e-17 2.445e-16 -1.933e-16 -9.244e-17
8 9
1.138e-16 -2.139e-17
Coefficients:
Estimate Std. Error t value Pr(>|t|)
(Intercept) 2.067e-15 1.322e-15 1.563e+00 0.216
x -1.776e-15 9.840e-16 -1.805e+00 0.169
y 2.989e-16 9.840e-16 3.040e-01 0.781
I(x^2) 1.000e+00 2.298e-16 4.351e+15 <2e-16 ***
I(y^2) -1.000e+00 2.298e-16 -4.351e+15 <2e-16 ***
x:y -3.065e-16 1.625e-16 -1.886e+00 0.156
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
Residual standard error: 3.25e-16 on 3 degrees of freedom
Multiple R-squared: 1, Adjusted R-squared: 1
F-statistic: 3.711e+32 on 5 and 3 DF, p-value: < 2.2e-16
# Дальше по одному убираем лишнее
# Курс по аппроксимации МНК читать не собираюсь.
# финальная стадия
> MyMdl<-lm(I~I(x^2)+I(y^2)+0)
> summary(MyMdl)
Call:
lm(formula = I ~ I(x^2) + I(y^2) + 0)
Residuals:
Min 1Q Median 3Q Max
-4.899e-16 -1.357e-16 -2.659e-17 8.422e-17 3.775e-16
Coefficients:
Estimate Std. Error t value Pr(>|t|)
I(x^2) 1.000e+00 2.336e-17 4.282e+16 <2e-16 ***
I(y^2) -1.000e+00 2.336e-17 -4.282e+16 <2e-16 ***
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
Residual standard error: 2.985e-16 on 7 degrees of freedom
Multiple R-squared: 1, Adjusted R-squared: 1
F-statistic: 1.1e+33 on 2 and 7 DF, p-value: < 2.2e-16
> anova(MyMdl)
Analysis of Variance Table
Response: I
Df Sum Sq Mean Sq F value Pr(>F)
I(x^2) 1 32.667 32.667 3.6663e+32 < 2.2e-16 ***
I(y^2) 1 163.333 163.333 1.8331e+33 < 2.2e-16 ***
Residuals 7 0.000 0.000
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
Предупреждение
In anova.lm(MyMdl) :
применение F-критерия для в целом хорошей подгонки бессмысленно
# Убираем за собой
> detach(MyData)
Где-то так. R также работает с матрицами, но я в этом пока не разбирался, поэтому матрицу развернул. Думаю, идея понятна.
Lexander
15.11.2012, 10:27
Maple должен это уметь.
Установил Maple 7. Он не строит функций.
phys2010
15.11.2012, 10:49
Почему не строит? Замечательно строит. Почитайте "Maple V Power Edition" (Б.М. Манзон), там все описано. Скачать можно здесь (http://bookfi.org/).
А... речь идет не о графике, а о самой функции. Тогда не скажу... Могу лишь посоветовать более полное руководство по Maple: "Maple 6. Решение задач высшей математики и механики" (Матросов А.В.).
Lexander
15.11.2012, 10:57
phys2010, мне бы лучше ссылку, где скачать сам Maple, чтоб не ознакомительная версия, и чтоб бесплатно, если такое счастье возможно...
Видимо я не тот Maple установил. В моём Maple в справке написано: "Maple - удобный и легкий в использовании менеджер документов, который позволяет создавать иерархические деревья для хранения документов, заметок, изображений, и т. д.". Выглядит он как текстовый редактор.
Сейчас начал скачивать нужный Maple, потом посмотрел на размер - 1,9 Гб и прекратил скачивать. Мне бы что-нибудь не такое весомое... А книжку я скачал на всякий случай.
Hogfather
15.11.2012, 11:02
Hogfather, это MATLAB?
Lexander, например, GNU R.
:facepalm:
Lexander
15.11.2012, 11:20
Вам полиномище что-ли нужен? Дык, это и Excel умеет...Согласен на полином. Как его построить для трёхмерного графика в Excel?
phys2010
15.11.2012, 11:26
Сейчас начал скачивать нужный Maple, потом посмотрел на размер - 1,9 Гб и прекратил скачивать. Мне бы что-нибудь не такое весомое... А книжку я скачал на всякий случай.
Не тот... Размер файла порядка 30 метров. Скачать можно здесь (http://szenprogs.ru/load/maple/24-1-0-457).
Lexander
15.11.2012, 11:31
Когда двумерный график строю, потом кликаю на кривую правой мышью (это я про Excel), потом выбираю "Добавить линию тренда", потом выбираю "Полиномиальная 2 степень", потом захожу на вкладку "Параметры" и ставлю две галочки: "показывать уравнение на диаграмме" и "поместить на диаграмму величину достоверности аппроксимации R^2". А для трёхмерного графика как построить "поверхность тренда" и вывести её уравнение?
Добавлено через 2 минуты
Не тот... Размер файла порядка 30 метров. Скачать можно здесь (http://szenprogs.ru/load/maple/24-1-0-457).
Зашёл я по ссылке, выбрал бесплатное скачивание, а мне пишут: "Для БЕСПЛАТНОГО пробного периода на 24 часа введите свой телефон:". :(
Hogfather
15.11.2012, 11:34
Подключаете пакет анализа в Excel, запускаете.
http://aspirantura.spb.ru/forum/picture.php?albumid=36&pictureid=799
Внизу есть меню "Регрессия"
Во вложении результат.
Алгоритм тот же, что показан в R, возможности победнее.
P.S. В умелых руках и [...] балалайка!
P.P.S. А вообще, уравнение для 70 тысяч пар точек это сильно.
phys2010
15.11.2012, 12:17
Зашёл я по ссылке, выбрал бесплатное скачивание, а мне пишут: "Для БЕСПЛАТНОГО пробного периода на 24 часа введите свой телефон:".
Так откажитесь :) Нажмите на "нет, спасибо" и тогда на следующей странице появится - "скачать файл".
Lexander
15.11.2012, 12:44
1. Перехожу по ссылке http://szenprogs.ru/load/maple/24-1-0-457
2. Нажимаю "Скачать с www.unibytes.com (31.3 МБ)"
3. Нажимаю кнопку "Бесплатно"
4. Появляется текст "Для БЕСПЛАТНОГО пробного периода на 24 часа введите свой телефон:"
В какой момент должна была появиться ссылка "нет, спасибо"?
phys2010
15.11.2012, 13:01
4. Появляется текст "Для БЕСПЛАТНОГО пробного периода на 24 часа введите свой телефон:"
Здесь (последняя строчка на странице - мелкими буквами):
"Вам придет SMS с кодом для проверки номера телефона.
Пробный доступ дается ровно на 24 часа (*) , то есть на одни сутки.
Второй раз на вторые сутки пробный период не предоставляется.
нет, спасибо"
Lexander
15.11.2012, 13:08
Да не там ссылки "нет, спасибо". Вот скриншот:
http://emaenu.pisem.net/gg.jpg
phys2010
15.11.2012, 13:16
Понятно, исчерпан лимит на скачивание. Ждать 30' смысла нет, гораздо быстрее можно найти альтернативу в интернете. Ориентируйтесь на описание, данное здесь (http://szenprogs.ru/load/maple/24-1-0-457).
Lexander
15.11.2012, 13:20
Та... всё равно, я понял, Maple - как Excel строит только график. А мне бы надо чтобы строило уравнение.
phys2010
15.11.2012, 14:02
В Maple есть пакет статистики stats. Команда fit позволяет строить функции. Например:
with(stats):
fit[leastsquare[[x,y], y=a*x^2+b*x+c]]( [[10,15,17,19],[3,4,5,6]]);
дает
y=(417/13358)x^2+(7583/13358)x+37054/6679
По поводу 2-x параметрической функции не скажу. Надо пробовать...
Hogfather
15.11.2012, 14:10
phys2010, я так понимаю, ТС мечтает о Халяве, чтобы кнопку мышки нажать и получить Уравнение.
Я предложил Выше 2(два) решения с примерами. В R и Excel. Про исключение членов a posteriori, а также обоснование степени полинома я уж говорить не стал, чтобы не расстраивать.
В R наверняка более красивое решение, просто мне лень искать среди пакетов нужный.
phys2010
15.11.2012, 14:15
Hogfather, я тоже думаю, что обсуждение пора заканчивать...
Paul Kellerman
16.11.2012, 16:17
Установил Maple 7
В Инете давно уже Maple 15 лежит. А вообще займитесь RTFM, очень полезное занятие.
Полищук Андрей
22.11.2012, 13:25
В Инете давно уже Maple 15 лежит. А вообще займитесь RTFM, очень полезное занятие.
Однако, есть нюанс :smirk: . Maple 15 очень проприетарная программа. Скорее всего, дороже 2000 USD в профессиональной версии, и примерно 2/3 от этого в академической.
Maple 7 и 8 можно использовать легально для любого применения. Но это серьёзная математическая программа, которая требует знания математики, понимания, что Вы хотите.
vBulletin® v3.8.8, Copyright ©2000-2025, vBulletin Solutions, Inc. Перевод: zCarot