Octave Coding - мне нужна помощь в кодировании коэффициентов полинома - PullRequest
0 голосов
/ 28 апреля 2019

Этот вопрос довольно легко сделать вручную, однако, я изо всех сил пытаюсь записать это в коде.

Существует квартичный полином:

P(x)=ax^4+bx^3+cx^2+dx+e

Существует также заданная матрица M:

5 0 -1 2 9
-2 -1 0 1 2

Что в первой строке дает P (x), а во второй строке - значение x.

Используя информацию в матрице М, найти коэффициенты:

а, б, в, д, е

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

У меня есть представление о том, что делать, но я не знаю, как его кодировать.

Я верю, что последняя строка будет linearsolve(M(,1),M(,2)) и, следовательно, сможет получить каждый коэффициент, но я не знаю, как добраться до этой строки.

Ответы [ 2 ]

0 голосов
/ 29 апреля 2019
y=[5 0 -1 2 9];
x=[-2 -1 0 1 2];
P=polyfit(x,y,2)

дает

P =
   2.0000   1.0000  -1.0000

это ваши коэффициенты для c, d, e остальные равны нулю.Вы можете проверить результат:

polyval(P, x)

ans =
   5.0000e+00   2.2204e-16  -1.0000e+00   2.0000e+00   9.0000e+00

, что дает вам y

Кстати, вы можете решить эту проблему очень быстро прямо в голове без калькулятора, потому что значения функций для x = 0 иx = + / - 1 очень легко вычислить.

0 голосов
/ 28 апреля 2019

Добро пожаловать, Чонг

% Values of y and x (note: in your post you had 2 values at x = 1, I assumed that was an accident)
M = [5 0 -1 2 9 ; -2 -1 0 1 2];

% Separate for clarity
y = M(1,:);
x = M(2,:);

% Fit to highest order polynomial model
f = fit(x',y',['poly', num2str(length(y)-1)])

% Extract coefficients
coeff = coeffvalues(f);

% Plotting
X = linspace(min(x)-1, max(x) + 1, 1000) ;
plot(x,y,'.',X,f(X))

Редактировать

Извините, я использую Matlab.Глядя на документацию Octave.Вы должны быть в состоянии получить коэффициенты, используя

p = polyfit(x,y,length(y)-1)';

Затем, чтобы отобразить коэффициенты, как вы указали, попробуйте это

strcat(cellstr(char(96+(1:length(p))')), { ' = ' } , cellstr(num2str(p)))
...