Недопустимый аргумент данных для построения графика Ньютона и Островского в MatLAB

#matlab #graph

Вопрос:

Я хотел бы отобразить функцию f красным цветом, а ограничение значения p для результата, показанного ниже, синим, но я столкнулся с ошибкой НЕДОПУСТИМОГО АРГУМЕНТА ДАННЫХ.

 % tolerance (as relative error set to 1e-5)
% N0 (max. iterations) set to 100
% Output: the value p
% Example: visualiseConvergence1(@(x) x^3 4*x^2-10, @(x) 3*x^2 8*x, 1)
function p = visualiseConvergence1(f, df, p0)
fprintf('=:.9fn', 0, p0); 
%Step 1:
ostp0=p0;
i = 1;
TOL=1e-5;
N0=100;
fullx=linspace(-10, 10, 1000);
%Step 2:
while i <= N0
   %Step 3 Newton:
   p = p0 - f(p0)/df(p0);
   fprintf('=:.9fn', i, p); 
   %Step 4:
   if abs(p - p0) < TOL
       fprintf('Solution found p = %gn', p);
       break
   end
   %Step 5:
   i = i   1;
   %Step 6:
   p0 = p;
   convergeNewtonX=linspace(-10, p0, 1000);
end
%Step 2 Ostrowski:
i=1;
while i <= N0
   %Step 3:
   p = ostp0 - f(ostp0)/df(ostp0);
   q= ostp0 - (f(ostp0)/df(ostp0)) * ((f(ostp0)-f(p))/(f(ostp0)-(2*f(p))));
   fprintf('=:.9fn', i, q); 
   %Step 4:
   if abs(q - ostp0) < TOL
       fprintf('Solution found p = %gn', q);
       break
   end
   %Step 5:
   i = i   1;
   %Step 6:
   ostp0 = q;
   convergeOstroX=linspace(-10, ostp0, 1000);
end
subplot(10,10,1);
originalfunction=f;
plot(fullx,originalfunction,'r',convergeNewtonX,originalfunction,'b');
title(Newton);

subplot(10,10,2);
originalfunction=f;
plot(fullx,originalfunction,'r',convergeOstroX,originalfunction,'b');
title(Ostrowski);
end
 

Когда я ввожу функцию: visualiseConvergence1(@(x) x^3 4 x^2-10, @(x) 3 x^2 8*x, 1), она находит решения p в порядке, но не при построении графика, давая это:

   1:     1.454545455
  2:     1.368900401
  3:     1.365236600
  4:     1.365230013
Solution found p = 1.36523
  1:     1.367904991
  2:     1.365230013
  3:     1.365230013
Solution found p = 1.36523
Error using plot
Invalid data argument.

Error in visualiseConvergence1 (line 50)
plot(fullx,originalfunction,'r',convergeNewtonX,originalfunction,'b');
 

Что вы предлагаете, чтобы это исправить?

Комментарии:

1. originalfunction-это дескриптор функции, в то время как функция plot() требует массивов.