error with inline function , why?
Mostrar comentarios más antiguos
%Q3: Secant Method
close all;
clear all;
clc;
syms x;
fun = input('Give a function in x: ','s');
f = inline(fun,'x');
prompt = 'p0= ';
p0 = input(prompt);
prompt = 'p1= ';
p1 = input(prompt);
prompt= 'Enter the accuracy: ';
acc=input(prompt);
result = findRoot(f,p0,p1,acc);
fprintf('\n• The root of the equation using Secant method is = %.8f',result);
function r = findRoot(f,p0,p1,acc)
errors=[];
N=[];
Pn=[];
i=0;
sprintf('Iteration\t\tPn\t\t\tError')
p2=p1-((f(p1)*(p1-p0))/(f(p1)-f(p0)));
while(abs(p2-p1)>acc)
p0=p1;
p1=p2;
p2=p1-((f(p1)*(p1-p0))/(f(p1)-f(p0)));
err=abs(p2-p1);
errors(end+1)=err; i=i+1; N(end+1)=i;
Pn(end+1)=p1;
fprintf('\t\t\t%.0f\t\t%.8f\t%.8f\n',i,p1,err);
end
fprintf('\n• Number of iteration = %.0f',i);
r=p2;
%Error plot:
figure(1)
stem(N,errors)
xlim([0. 6])
title('Error Plot Secant method')
xlabel('n')
ylabel('|E|')
%Pn plot:
figure(2)
stem(N,Pn)
xlim([0. 6])
title('Pn -> P Plot Secant method')
xlabel('n')
ylabel('Pn')
end
3 comentarios
Walter Roberson
el 10 de Mzo. de 2022
What error message are you observing?
Rik
el 10 de Mzo. de 2022
Steven Lord
el 10 de Mzo. de 2022
Please stop using inline. Use anonymous functions (potentially in conjunction with str2func) instead.
Respuestas (0)
Categorías
Más información sobre Function Creation en Centro de ayuda y File Exchange.
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!