Cuenta
Solución
function a =secante(fun,x0,x1,tol,maxiter)
syms x
% Aproxima por el método de la secante una raiz de la ecuacion fun(x)=0
%cercana a x0, tomando como criterio de parada abs(fun(x))<tol o la cota sobre
%el numero deiteraciones dada por maxiter.
%
% Variables de entrada:
% fun: funcion a calcular la raiz, se introduce en modo simbolico 'fun'
% x0, x1: estimaciones iniciales para el proceso de iteración
% tol: tolerancia en error absoluto para la raiz
% maxiter: maximo numero de iteraciones permitidas
%
% Variables de salida:
% a: valor aproximado de la raiz
fun=input('Introduzca la funcion aanalizar');
x0=input('Introduzca el valor inicial');
x1=input('Introduzca el siguiente valor');
tol=input('Introduzca el valor de la tolerancia');
maxiter=input('Introduzca el numero maximo de iteraciones');
fprintf(1, 'Metodo de la secante \n');
f0=subs(fun,x0);
f1=subs(fun,x1);
iter=1;
while(abs(f1)>tol) & (iter<maxiter)
a = x1-f1*((x1-x0)/(f1-f0)); % formula de iteracionf0=f1; f1=subs(fun,a); %Actualiza f0 y f1
fprintf(1, 'iter= %i, a= %x0,f= %e \n', iter,a ,f1)
iter = iter + 1; % Cuenta los pasos
x0=x1; x1=a; % actualiza x
end
ezplot(fun);
% Salida
Halle la solución para la siguiente función, utilizando al menos dos métodos numéricos(comparé los resultados):
clc
clear all
syms x
format long;
xo= input('digite el punto inicial \n');
tol=input('digite el valor de la tolerancia \n');
numero=input('digite el numero de iteraciones deseadas \n');
k=numero-1;
deltax=0;
tabla=ones(numero,4);
while (abs(deltax)< tol);
for i=0:1:k;
x=(((667.38)/(x))*(1-(exp(-0.146843*x))))-40 ;
deltax=x-xo;
tabla(i+1,1)=i;
tabla(i+1,2)=xo;
xo=x;
tabla(i+1,3)=x;
tabla(i+1,4)=deltax;
end
end
fprintf('\n\n');disp(' k xo x delta x ');fprintf('\n');
disp(tabla);
u = inline('x','x');
ezplot('x',[-2,2]);
u = inline('(((667.38)/(x))*(1-(exp(-0.146843*x))))-40','x');
hold on
ezplot('(((667.38)/(x))*(1-(exp(-0.146843*x))))-40',[-2,2]);
grid on
Realice una implementación del método de Bairstow y halle las raíces de la siguiente
función f5(x) = x5 - 3.5x4 + 2.75x3 + 2.125x2 - 3.875x + 1.25, .considere r0 = -1 y s0 = -1.*
* close all
clear
clc
z=input ('TECLEE LOS COEFICIENTES DEL POLINOMIO ENTRE CORCHETES:\n');
cont=1
for i=-1:0.1:2.5
x(cont)=i;
cont=cont+1;
end
n=length(z);% define la longitud de la ecuación
y=0
for i=1:n
y=y+z(i)*(x.^(n-i));
end
y
figure
plot(x,y,'r'),grid, title('GRAFICA DEL POLINOMIO')
it=0;% contador de iteraciones
limit_it=1000;% limite de iteracionestol=.0001;%tolerancia de la estimación
raiz(1:n-1)=0;
ri=0;
r=2;% el valor de r que es el coeficiente de primer grado
s=2;% el valor de s que es el termino independiente
err=1;%se inicializa el valor del error en r igual a 1
ers=1;%se inicializa el valor del error en s igual a 1
if z(1)==0
fprintf('EL PRIMER COEFICIENTE NO DEBE SER CERO:\n\n')
break
end
while1%ciclo que nos permitira ir evaluando las raÃces del polinomio
if (n-1>=3);else break,end%condicion si el grado de la raiz es mayor a 3
t=[1 r s];%esta es el polinomio cuadratico de inicio
it=it+1;%se incrementa en 1 la iteracion
[x,y]=deconv(z,t);%se divide la ecuacion entre el polinomio de inicio
length(x);%se define la longitud del polinomio resultante
length(y);%se definela longitud del residuo resultante
x=[x,0,0];%se ajusta la variable x para poder sumarla al residuo
x=[x+y];%suma del cociente mas residuo
c(1)=z(1);%valor de los coeficientes de la funcion a
c(2)=z(2)+(-r*c(1));%evaluar, en virtud de que el coeficiente de mayor
for i=3:n%grado sera equivalente al coeficiente de menor grado
m=n-i;%y en este ciclo se realiza la inversion de...
Regístrate para leer el documento completo.