Форум программистов, компьютерный форум, киберфорум
Наши страницы
Matlab
Войти
Регистрация
Восстановить пароль
 
Рейтинг 5.00/10: Рейтинг темы: голосов - 10, средняя оценка - 5.00
mita!
0 / 0 / 0
Регистрация: 28.10.2012
Сообщений: 9
1

Нахожение кривой по методу наименьших квадратов

19.11.2012, 13:45. Просмотров 1730. Ответов 6
Метки нет (Все метки)

Пожалуйста помогите, написать такую программу, которая способна
(1) Используя ginput (), получить 7 значений (х, у).
(2) вычислить коэффициенты по методу наименьших квадратов многочлена степени 3, чтобы наша кривая соответствовала этим точкам (используя функцию MATLAB polyfit).
(3) показать эти точки маркером О, многочлен Р (х) - кривой.
(4) Использовать gtext() или text() для отображения на дисплее ' P(x) = ….. '
Для того чтобы написать текстовую строку мы должна написать функцию C2S(coeff), которая преобразует каждый коэффициент многочлена Р (х) в строки и строит строку 'Р (х) = .....'. Например: ' P(x) = 2.03X^3 – 0.456X^2 + 0.0034X + 1.209'
После выполнения программы построить график как показано ниже:
Нахожение кривой по методу наименьших квадратов


К сожалению, я не понимаю как мне сделать первый и четвертый пункт, но если я правильно написала то программа ко второму и третьему пункту должна выглядеть как то так:
Matlab M
1
2
3
4
5
6
7
8
...
%programming
P=polyfit(Xk,Yk,3)
%plot
X=-2.5:0.1:2.5;
Y=polyval(P,X);
plot(X,Y,Xk,Yk,'o');
grid on;
Но и даже тут я не понимаю как мне сделать кружочки красным цветом.
Пожалуйста помогите!
*(в моей недоделанной программе я задавала значение Xk,Yk в самой программе как известные, и соответственно X,Y, это кривая, с генерированная компьютером.
0
Лучшие ответы (1)
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
19.11.2012, 13:45
Ответы с готовыми решениями:

Инверсия по методу наименьших квадратов для 2-D
Здравствуйте! Помогите пожалуйста разобраться с инверсией. Необходимо...

Идентификация объекта управления по методу наименьших квадрантов
прога пишется в матлабе: %задаюсь значениями для трансфер функции объекта s1 (...

Идентификация объекта управления по методу наименьших квадрантов (2-й вариант)
%задаюсь значениями для трансфер функции объекта s1 ( это то что пишется в...

Метод наименьших квадратов
Имеется функция, вида гиперболического арктангенса (f = atan(x)). Как к этой...

Метод наименьших квадратов
Используя таблицу результатов эксперимента, методом наименьших квадратов...

6
Галина Борисовн
2794 / 2091 / 86
Регистрация: 02.05.2010
Сообщений: 3,196
19.11.2012, 15:31 2
Matlab M
1
2
3
4
5
6
7
8
9
10
clear
clc
[Xk Yk]=ginput(7);
P=polyfit(Xk,Yk,3);
X=0:.02:1;
Y=polyval(P,X);
plot(X,Y,Xk,Yk,'o');
grid on;
text(0.1, 0.8,[ 'P(x)=' num2str(P(1)),'x^3+',num2str(P(2)),'x^2+',...
    num2str(P(3)),'x+',num2str(P(4))],'HorizontalAlignment','left')
2
Миниатюры
Нахожение кривой по методу наименьших квадратов  
Зосима
4928 / 3297 / 312
Регистрация: 02.04.2012
Сообщений: 6,207
Записей в блоге: 15
Завершенные тесты: 1
19.11.2012, 16:03 3
Лучший ответ Сообщение было отмечено как решение

Решение

Вот, смотри что получается:
Matlab M
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
clear
clc
 
% чтобы ввести точки нужно открыть граф.окошко
plot(0,0)
axis([-5 5 -5 5])
grid on
% вводим 7 точек
[Xk Yk] = ginput(7); 
 
%programming
P = polyfit(Xk,Yk,3)
 
%plot
X = linspace(min(Xk),max(Xk),100);
Y = polyval(P,X);
plot(X,Y,Xk,Yk,'or');
grid off
 
% делаем подпись
str = ['P(x) = '];
for i = 1:length(P)  
    if P(i)<0
        s(i,:)=' - ';
    else
        s(i,:)=' + ';
    end
    str = [str,s(i,:),num2str(abs(P(i)))];
end
 
gtext(str)
При запуске появится окошко, в котором нужно накликать мышкой 7 точек и он сделает интерполяцию. В конце опять нужно щелкнуть мышью, чтобы поставить подпись.
Если есть вопросы - задавай!
4
mita!
0 / 0 / 0
Регистрация: 28.10.2012
Сообщений: 9
19.11.2012, 16:22  [ТС] 4
Зосима, Спасибо, все предельно понятно! но единственное когда мы делаем подпись данным образом у нас же получается что выводятся только коэффициенты, а сами "x" отсутствуют?!
0
Зосима
4928 / 3297 / 312
Регистрация: 02.04.2012
Сообщений: 6,207
Записей в блоге: 15
Завершенные тесты: 1
19.11.2012, 16:49 5
Цитата Сообщение от mita! Посмотреть сообщение
Зосима, Спасибо, все предельно понятно! но единственное когда мы делаем подпись данным образом у нас же получается что выводятся только коэффициенты, а сами "x" отсутствуют?!

Не по теме:

:D от башка дырявая!!!

Matlab M
1
2
3
4
5
6
7
8
9
10
11
12
% делаем подпись
for i = 1:length(P)  
    if P(i)<0
        s{i}=' - ';
    else
        s{i}=' + ';
    end
    R{i} = num2str(abs(P(i)));
end
str = ['P(x) = ', R{1},'x^3',s{2},R{2},'x^2',s{3},R{3},'x',s{4},R{4}];
 
gtext(str)
2
Tiger92
0 / 0 / 0
Регистрация: 26.05.2013
Сообщений: 10
03.06.2013, 22:00 6
Зосима, а нельзя ли сделать так что бы степень полинома сам определялся ..тут она заранее задается 12-я строка
Matlab M
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
clear
clc
 
% чтобы ввести точки нужно открыть граф.окошко
plot(0,0)
axis([-5 5 -5 5])
grid on
% вводим 7 точек
[Xk Yk] = ginput(7); 
 
%programming
P = polyfit(Xk,Yk,3)%- степень полинома заранее задается 
 
%plot
X = linspace(min(Xk),max(Xk),100);
Y = polyval(P,X);
plot(X,Y,Xk,Yk,'or');
grid off
 
% делаем подпись
for i = 1:length(P)  
    if P(i)<0
        s{i}=' - ';
    else
        s{i}=' + ';
    end
    R{i} = num2str(abs(P(i)));
end
str = ['P(x) = ', R{1},'x^3',s{2},R{2},'x^2',s{3},R{3},'x',s{4},R{4}]; %- и этой строке идет формирование полинома с уже заданным степеням 
 
gtext(str)
0
Зосима
4928 / 3297 / 312
Регистрация: 02.04.2012
Сообщений: 6,207
Записей в блоге: 15
Завершенные тесты: 1
04.06.2013, 13:48 7
Цитата Сообщение от Tiger92 Посмотреть сообщение
нельзя ли сделать так что бы степень полинома сам определялся
На основаниии чего? набор точек можно апорксимировать и многочленом первой степени (прямой) и многочленом 120й степени и чем больше степень, тем точнее описание, но если не ошибась, макс. степень как-то связана с кол-вом точек, т.е. если у нас 10 отсчетов, то интерполировать полиномом 11й степени нет смылса
Попробуй так:
P = polyfit(Xk,Yk,length(Xk))
1
04.06.2013, 13:48
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
04.06.2013, 13:48

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

Метод Наименьших Квадратов
Помогите, а то мне вообще не понятно=( Семинарист плохо объясняет, точнее...

Метод наименьших квадратов
Как будет выглядеть синтаксис для нахождения коэффициентов методом МНК в...


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

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru