#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() требует массивов.