Programas 2016 - función que resuelve la ecuación de segundo grado PDF

Title Programas 2016 - función que resuelve la ecuación de segundo grado
Author Isabel Millan Diaz
Course Matemáticas I
Institution Universidad de Huelva
Pages 6
File Size 115.2 KB
File Type PDF
Total Downloads 20
Total Views 128

Summary

función que resuelve la ecuación de segundo grado...


Description

Función que resuelve la ecuación de segundo grado ax^2+bx+c=0: function [x1 x2]=cuadratica(a,b,c) %resuelve la ecuación de segundo grado 'ax^2+bx+c=0' Delta=b^2-4*a*c; if Delta>0 x1=(-b+sqrt(Delta))/(2*a); x2=(-b-sqrt(Delta))/(2*a); disp('tiene dos raíces reales') elseif Delta==0 x1=-b/(2*a);x2=x1; disp('tiene una raiz real doble') else x1=(-b+sqrt(Delta))/(2*a); x2=(-b-sqrt(Delta))/(2*a); disp('tiene dos raíces complejas conjugadas') end end

Función que permite calcular el factorial de un número natural: function y=factor(n) % Esta función determina el factorial de un número natural n if nM b=x; else a=x; end k=k+1; end end end

Función que usa el método de bisección para calcular una aproximación a una raíz de la ecuación f(x)=0: function [xvect,xdif,fx,nit]=biseccion(a,b,tol,nmax,fun) %Esta función aplica el método de bisección %[a,b] es un intervalo que contiene a la raíz que buscamos %fun es la función (p. e. definida como una cadena de caracteres) %xvect es el vector formado por las aproximaciones sucesivas %xdif es el vector formado por las distancias entre aproximaciones %fx es el residuo %tol es la cota de error %nmax es máximo de iteraciones que admitimos err=tol+1;nit=0;xvect=[];fx=[];xdif=[]; while nittol nit=nit+1; c=(a+b)/2;x=c;fc=eval(fun);xvect=[xvect;x]; fx=[fx;fc];x=a; if fc*eval(fun)>0 a=c; else b=c; end err=0.5*abs(b-a);xdif=[xdif;err]; end end

Todas las funciones que siguen aplican el método de Newton-Raphson para el cálculo de una solución de la ecuación f(x)=0: function [r,dif]=newraph(h,x0,n) %calcula las n primeras aproximaciones a la raíz r de h(x)=0 próxima a xo usando Newton-Raphson %calcula las diferencias entre aproximaciones consecutivas %h puede darse como cadena de caracteres %probar con f(x)=xe^x-1, x0=0, x0=1 u otro valor syms x dh=diff(h); r=x0;dif=[]; for i=1:n if subs(dh,x0)==0 fprintf('la derivada se anula'); return else x1=x0-subs(h,x0)/subs(dh,x0); r=[r;x1];dif=[dif;abs(x1-x0)];x0=x1; end end end

function [xvect,xdif,fx,nit]=newton(x,tol,nmax,fun,dfun) %fun y dfun pueden ser introducidas como cadenas de caracteres %no acepta las funciones inline %por ejemplo newton(1,10^(-12),10,'x^2-5','2*x') err=tol+1;nit=0;xvect=x;fx=eval(fun);xdif=[]; while nittol nit=nit+1; x=xvect(nit); dfx=eval(dfun); if dfx==0 err=tol*1.e-10; fprintf('la derivada se anula'); else xn=x-fx(nit)/dfx;err=abs(xn-x);xdif=[xdif;err]; x=xn;xvect=[xvect;x];fx=[fx;eval(fun)]; end end end

function [xn,it]=newtonraph(x0,f,df,n,tol) % f y df pueden venir dadas como archivos de función o inline %[xn,it]=newtonraph(1,'f','df',20,10^(-10)) %[xn,it]=newtonraph(1,inline('-exp(-x)+x'),inline('exp(-x) +1'),20,10^(-10)) %0^(-10)) it=0;xn=x0; fn=feval(f,xn); while (abs(fn)>tol && it...


Similar Free PDFs