Генерация функции плоскости / поверхности, на которой лежит данный набор координат - PullRequest
1 голос
/ 28 мая 2009

Это связано и с математикой. Но это полезно и в вычислительной технике.

Допустим, у вас есть 10 координат. (x1, y1) (x2, y2) ..... в 2D-пространстве. (то есть на плоскости X-Y). Можем ли мы найти одну гладкую кривую, проходящую через каждую координату.

Расширяя вопрос: если пространство трехмерное, то можем ли мы найти уравнение гладкой поверхности, проходящей через заданный набор пространственных координат?

Существуют ли какие-либо библиотеки (любой язык) \ инструменты для выполнения таких расчетов?

Ответы [ 4 ]

2 голосов
/ 28 мая 2009

То, что вы должны искать, это какая-то библиотека, реализующая NURBS (или неунифицированные Rational B-Splines). Это решит вашу проблему как в 2d, так и в 3d, поскольку 2d - это особый случай 3d.

Грубо говоря, вас не интересует реальное уравнение, вы заинтересованы только в получении точек, аппроксимированных гладкими кривыми или поверхностями. Это делается путем нахождения «контрольных точек» в 2d или 3d пространстве, которые умножаются на базовые функции B-сплайна. Библиотека NURBS сделает это за вас.

Ура!

Edit:

Взгляните на этот

1 голос
/ 28 мая 2009

В 2D-случае вы запрашиваете подгонку кривой. Это действительно существует в Excel, где вы строите свои точки (я обычно использую разброс XY, если у вас есть x и y в списке), а затем щелкните правой кнопкой мыши на кривой. Выберите Добавить линию тренда. Там вы можете выбрать, какую функцию вы хотите использовать, и попросить Excel отобразить ее на изображении (вкладка «Параметры», установите флажок «Показать уравнение на графике»). Красиво и быстро.

В противном случае вы можете использовать matlab и использовать lsqr (метод наименьших квадратов). Если вы хотите найти ближайший полином, который лучше всего описывает ваши данные, вы можете использовать функцию polyfit. Он использует метод наименьших квадратов, но возвращает коэффициенты. Matlab имеет целый ряд других алгоритмов для решения / поиска «наилучших» приближений к системам линейных уравнений. Я упоминаю lsqr, потому что это один из самых простых способов реализовать себя, если у вас нет matlab. С другой стороны, это для решения наборов линейных уравнений - я ничего не знаю о ваших данных.

1 голос
/ 28 мая 2009

вы всегда можете уместить полином порядка 10 через точки. это не обязательно то, что вы хотите сделать, - если подгонять плавную кривую через ряд сплайнов, вы получите более привлекательный результат. * * * * * * * * * * * * * * * * * * * * * * * * * * * * * Википедия.

0 голосов
/ 28 мая 2009

Посмотрите на сплайны

Поиск «библиотеки сплайн-интерполяции» может дать некоторые полезные советы для реализаций.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...