Форум программистов, компьютерный форум, киберфорум
Matlab
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.61/41: Рейтинг темы: голосов - 41, средняя оценка - 4.61
0 / 0 / 0
Регистрация: 28.03.2014
Сообщений: 42

Аппроксимировать набор точек многочленом

28.03.2014, 13:31. Показов 9596. Ответов 51
Метки faq+ (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте, очень нужна ваша помощь! задана функция f(x)=a0+a1*x+a2*x^2+a3*x^3+а4*x^4 , нужно построить график и найти коэффициенты а0, а1, а2, а3, а4. значение функция f(x) задано (несколько значений) и x заданы (отрезок значений). как это все сделать, запуталась... воспользоваться наверно нужно это командой p0 = polyfit(x,y,0)
p1 = polyfit(x,y,1)
p2 = polyfit(x,y,2)
p3 = polyfit(x,y,3)
p4 = polyfit(x,y,4),
запишу значения
x = 1:5
а как y записать, который имеет несколько значений и все остальной сделать, не получается
0
Лучшие ответы (1)
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
28.03.2014, 13:31
Ответы с готовыми решениями:

Не используя стандартных функций, аппроксимировать заданную функцию многочленом n-й степени по МНК
Не используя стандартных функций аппроксимировать заданную функцию многочленом n-й степени по методу наименьших квадратов. Вывести на...

Аппроксимировать поверхность из 9 точек, заданную матрицей
Здравствуйте, с MatLabom раньше не работал, но появилась необходимость аппроксимировать поверхность из 9 точек, заданную матрицей, не знаю...

Вывести набор точек на график
Доброго времени суток! Есть функции вычисляющие 4 коэффициента: function = fOne (t) f1 = 1/6*(1-t)^3; end function = fTwo...

51
 Аватар для Зосима
5246 / 3574 / 379
Регистрация: 02.04.2012
Сообщений: 6,477
Записей в блоге: 18
02.04.2014, 16:48
Студворк — интернет-сервис помощи студентам
Matlab M
format longg
но загвоздка в том, что первые два коэф-та очень большие, а остальные гораздо менньше, поэтому можешь просто отобразить их по отдельности
Matlab M
p(1), p(2), p(3), p(4), p(5)
0
0 / 0 / 0
Регистрация: 28.03.2014
Сообщений: 42
02.04.2014, 16:57  [ТС]
просто вот так написать? p(1), p(2), p(3), p(4), p(5)
0
 Аватар для Зосима
5246 / 3574 / 379
Регистрация: 02.04.2012
Сообщений: 6,477
Записей в блоге: 18
02.04.2014, 17:00
да, вконце
0
0 / 0 / 0
Регистрация: 28.03.2014
Сообщений: 42
02.04.2014, 17:15  [ТС]
спасибо!
0
0 / 0 / 0
Регистрация: 28.03.2014
Сообщений: 42
08.04.2014, 21:01  [ТС]
Здравствуйте! еще нужна ваша помощь. как записать программу в матлаб для вычисления параметров вот такого полинома
f(x,y)= p0+p1x+p2y+p3xy+p4*x^2+p5*y^2+....и т.д.
0
53 / 53 / 14
Регистрация: 26.02.2014
Сообщений: 150
09.04.2014, 00:13
Непонятно. Что у на входе, что надо получить?
Найти коэффициенты по известным значениям (т.е. аналог polyfit)? Нет проблем.
Но все-таки уточните задачу.
1
0 / 0 / 0
Регистрация: 28.03.2014
Сообщений: 42
09.04.2014, 11:29  [ТС]
до этого задача была, там была одна плоскость, там координата y просто этой буквой была названа, на самом деле это не y. f(x)=a0+a1*x+a2*x^2+a3*x^3+а4*x^4. а сейчас задача уже в двух плоскостях x и y.
f(x,y)= а0+а1*x+а2*y+а3*x*y+а4*x^2+а5*y^2+....и т.д. мне программу записывать так же, только добавится еще одна координата ?
y = [.......] - диапазон координаты y
x= [........] - диапазон координаты x
s= [.......]
p=polyfit(x,y,s,5);
x1=[x(1):0.000001:x(end)];
y1=[y(1):0.000001:y(end)]
s1=polyval(p,x1,y1); % значения полинома
plot(x,y,s,'+', x1,y1,s1'-');
0
53 / 53 / 14
Регистрация: 26.02.2014
Сообщений: 150
09.04.2014, 16:16
polyfit только для одной координаты.
Есть двумерные аналоги, сделанные любителями.
Погуглите polyfit2d
0
0 / 0 / 0
Регистрация: 28.03.2014
Сообщений: 42
09.04.2014, 16:27  [ТС]
имерно во так сделать http://www.mathworks.com/matla... olyFit2D.m
0
53 / 53 / 14
Регистрация: 26.02.2014
Сообщений: 150
09.04.2014, 16:31
вам помочь скопировать?
0
0 / 0 / 0
Регистрация: 28.03.2014
Сообщений: 42
09.04.2014, 16:37  [ТС]
я не совсем понимаю эту программу. а количество значений в x,y,f так же должно быть одинаковым?
0
53 / 53 / 14
Регистрация: 26.02.2014
Сообщений: 150
09.04.2014, 17:26
В общем да, реализация не самая понятная, да и незаконченная.
Я дам сначала общую идею.

Положим, у вас есть 3 столбца X, Y, F, все высоты N, где первые два - координаты точек на плоскости, третий - значения функции в этих точках.

Вы хотите, допустим, аппроксимировать эту функцию полиномом, состоящим из разных степеней x и у, скажем
f= a0 + a1*x + a2*y + a3*x*y + a4*x*x

Тогда действия такие.
1. составить матрицу М, в которой каждому элементу полинома x^i * y^j соответствует колонка его значений
У функции f есть такие элементы: 1, x, y, xy, xx
Тогда
Matlab M
1
M=[ones(N,1)  X  Y  X.*Y  X.*X];
2. коэффициенты полинома получаются операцией M\F
Matlab M
1
A=M\F;
где A(0)=а0, А(1)=а1, и т.д.
задача решена.

Предлагаю поэкспериментировать с нахождением коэффициентов для разных полиномов.
Продолжение будет, когда усвоите эту часть.
0
0 / 0 / 0
Регистрация: 28.03.2014
Сообщений: 42
09.04.2014, 22:25  [ТС]
вот так примерно программа будет выглядеть? только я пока не писала значения матриц f, x,y. и в расчете вектора M надо перебрать написать все комбинации X и Y, если у меня будет 14 коэффициентов полиномов а0...а14.

f = []; % значения функции
x = []; % матрица x
y = []; % матрица y
function p = polyFit2D(f,x,y,14) % вектор из коэффициентов а0...а14
M=[ones(N,1) X Y X.*Y X.*X Y.*Y X.*Y.*Y Y.*X.*X X.*X.*X Y.*Y.*Y];
A=M\F; % коэффициенты полинома
0
53 / 53 / 14
Регистрация: 26.02.2014
Сообщений: 150
10.04.2014, 00:26
да, суть именно такая.
в программе по вашей ссылке эти комбинации строились автоматически, но как-то не очевидным способом.
0
0 / 0 / 0
Регистрация: 28.03.2014
Сообщений: 42
10.04.2014, 11:37  [ТС]
что то матлабу не нравится эта функция, ошибку выдает

f = [3.3422e8 4.5673e8 3.5427e8
3.4372e8 4.4732e8 3.5401e8
3.2741e8 4.2791e8 3.5933e8 ]; % значения функции
x = [0 0.5e-4 1e-4
0 0.5e-4 1e-4
0 0.5e-4 1e-4 ]; % матрица x
y = [0 0 0
0.5e-4 0.5e-4 0.5e-4
1e-4 1e-4 1e-4 ]; % матрица y
function p = polyFit2D(f,x,y,4) % вектор из коэффициентов а0...а14
M=[ones(N,1) X Y X.*Y X.*X Y.*Y X.*Y*Y Y.*X*X X.*X*X Y.*Y*Y X.*Y*Y*Y X.*X*Y*Y Y.*X*X*X X.*X*X*X Y.*Y*Y*Y];
A=M\F; % коэффициенты полинома
0
53 / 53 / 14
Регистрация: 26.02.2014
Сообщений: 150
10.04.2014, 12:01
Ксюня, я же писал - X,Y,F - *столбцы*. А у вас строки.
0
0 / 0 / 0
Регистрация: 28.03.2014
Сообщений: 42
10.04.2014, 13:00  [ТС]
вот так тогда? но она тоже не работает
clc
x = [0
0.5e-4
1e-4
0
0.5e-4
1e-4 ]; % матрица x
y = [0
0
0
0.5e-4
0.5e-4
0.5e-4 ]; % матрица y
f = [3.3422e8
4.5673e8
3.5427e8
3.4372e8
4.4732e8
3.5401e8 ]; % значения функции
function p = polyFit2D(f,x,y,4) % вектор из коэффициентов а0...а14
M=[ones(6,1) X Y X.*Y X.*X Y.*Y X.*Y*Y Y.*X*X X.*X*X Y.*Y*Y X.*Y*Y*Y X.*X*Y*Y Y.*X*X*X X.*X*X*X Y.*Y*Y*Y];
A=M\F; % коэффициенты полинома
0
53 / 53 / 14
Регистрация: 26.02.2014
Сообщений: 150
10.04.2014, 15:59
столбец можно писать так [1; 2; 3; 4]
или так [1 2 3 4]'

дальше в коде сплошые косяки.

в объявлении функции аргументы f,x,y, в теле X,Y,Z, для матлаба это разные переменные.
что за "4" в списке аргументов?
что за "6" в ones(6,1)?
0
0 / 0 / 0
Регистрация: 28.03.2014
Сообщений: 42
10.04.2014, 17:52  [ТС]
4 это степень (ну то что максимальная степень 4 будет) , а 6 это то что высота матрицы x,y,f (ее значений) 6 .
0
53 / 53 / 14
Регистрация: 26.02.2014
Сообщений: 150
11.04.2014, 01:53
Ксюня, в аргументах функции описываются ПЕРЕМЕННЫЕ, корорые ей будут передаваться!
Там не может быть никакий констант!

Употребление "6" более осмысленное, но что делать, если понадобится другой размер? Переписывать функцию? К вашему сведению, размер вектора можно узнать аж тремя функциями:
Matlab M
1
2
3
4
5
6
7
8
9
10
11
% для обоих ориентаций (гориз. и верт. массива)
N=length(V);
N=numel(V);
 
%для вертикального массива (столбца)
[N,~]=size(V); 
N=size(V,1); 
 
 %для гориз. массива (строки)
[~,N]=size(V);
N=size(V,2);
Слегка поправил вашу функцию

Matlab M
1
2
3
4
5
6
7
% ищем вектор из коэффициентов а0...а14
% F, X, Y - столбцы
function p = polyFit2D(F, X, Y) 
N=length(F);
M=[ones(N,1) X Y X.*Y X.*X Y.*Y X.*Y.*Y Y.*X.*X X.*X.*X Y.*Y.*Y X.*Y.*Y.*Y X.*X.*Y.*Y Y.*X.*X.*X X.*X.*X.*X Y.*Y.*Y.*Y];
A=M\F; % коэффициенты полинома
end
И пожалуйста используйте кнопку "MATLAB" для оформления кода
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
11.04.2014, 01:53

Аппроксимировать многочленом L2(x)
Привет, %username%! Вынужден просить у вас помощи. Есть задачка, в которой я уже почти дошел до конца, но запутался. Меня...

На плоскости имеется набор точек....
На плоскости имеется набор точек. Выявить все прямоугольники, которые могут быть образованны этими точками(стороны прямоугольника...

Разбить набор точек по три по правилу
Имеется отчет по программе и программа. Проблема с программой в том, что не видно результата выполнения программы. Alt+N ручной ввод...

Набор точек имеющие вес в двумерном пространстве
Рассматривается набор точек в двумерном пространстве, которые кроме координат имеют еще одну характеристику — вес. 1. Сгенерировать N...

Проверить, если набор из точек замкнут на метрическом пространстве
дайте пожалуйста полный ответ проверить если набор из точек pn = (1/n,1/n) замкнуты на метрическом пространстве (R,dR) где dR...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
40
Ответ Создать тему
Новые блоги и статьи
Про "Windows must die!"
kumehtar 04.11.2026
Знаете, чет накатило. . . . Когда-то это было почти боевым кличем: мол, нормальный человек сидит на DOS, OS/ 2 или Linux, а вот это вот - Must Die. А теперь человек произносит «мастдай» с усмешкой - и. . .
Красочные поля с номером страницы svg+background-image
russiannick 04.11.2026
Красочные поля с номером страницы не менее важны чем в эпоху бумажных книг. Посему спешу представить почтеннейшей публике этот важный инструмент который эти поля и формирует. В процессе разработки. . .
Вступаем в новую фазу генерации favicons, векторную.
russiannick 02.11.2026
Теперь нет нужды скрывать что используется простой svg. Исходный код изображения помещаем в поле и жмем кнопку. Исходник преобразуется в вид корректный для помещения в favicon или в url(). Нажатие. . .
Генератор паролей (вариант №4)
Maks 01.11.2026
После публикации 3-го варианта генератора паролей, разослал его своим коллегам (с целью оценки), в итоге были получены следующие рекомендации: 1. Вернуть возможность использования знаков | 1 l I;. . .
Генератор паролей (вариант №3)
Maks 30.10.2026
Финальная версия генератора паролей 1С. Доработка решения в этот раз коснулась только визуальной части, а именно, добавлен реквизит ДопПараметры (тип Булево), который скрывает/ отображает реквизиты:. . .
Магическое мышление и магия, современная наука не отличима от магии (говорит ИИ Джемени)
zorxor 30.10.2026
Джемени, расскажи, пожалуйста, что такое магическое мышление, что такое магия, почему современная наука чем-то напоминает магию? Фраза «Любая достаточно развитая технология неотличима от магии». . .
За какое время ИИ может подобрать пароль по хешу (рассказывает Джемени ИИ)
zorxor 30.10.2026
Расскажи, Джемени, если известен хэш МД5, например, за сколько ИИ сможет подобрать соответствующий пароль? Искусственный интеллект (ИИ) может подобрать простой или средний по сложности пароль по. . .
Кто убил Suno? Почему наше солнышко погасло? (диалог с ИИ Джемени)
zorxor 30.10.2026
Как убивали Suno. Хронология. «Убийство» музыкальной нейросети Suno — это затяжной процесс, в котором технологический хайп стартапа разбился о жесткую реальность судебных исков от гигантов. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru