error with inline function , why?
Afficher commentaires plus anciens
%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 commentaires
Walter Roberson
le 10 Mar 2022
What error message are you observing?
Rik
le 10 Mar 2022
Steven Lord
le 10 Mar 2022
Please stop using inline. Use anonymous functions (potentially in conjunction with str2func) instead.
Réponses (0)
Catégories
En savoir plus sur Function Creation dans Centre d'aide et File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!