clear, clc % Algoritmo para calcular las raíces de una ecuación no-lineal % aplicando el método del punto fijo % f = @(argument-list) expression % denota una función anónima, donde la lista de argumentos se introduce % entre paréntesis y las variables que no se encuentren defindas allí % se heredan del contexto en el que se define la función % designamos la funcion g1(x): g1 = @(x) (2*x.^2+3)/5; % designamos la función g2(x): g2 = @(x) sqrt((5*x-3)/2); x0 = input('Introduce el valor inicial: '); tol = input('Introduce el valor de la tolerancia: '); nmin = input('Introduce el numero minimo de iteraciones: '); % formula para calcular el numero minimo de iteraciones necesarias para % lograr una buena aproximacion del punto fijo de g(x) % (i.e., raiz de f(x)), % donde k es la constante de contraccion % [a,b] el intervalo en el que se busca el punto fijo de g(x) %nim = log((tol*(1-k))/abs(b-a))/log(k); npasos = 0; error = tol +1 ; % definición de las componentes del vector x x = 0:0.01:2; % evaluación de las componentes del vector x por la función f(x) y = g1(x); z = zeros(size(x)); %t = zeros(size(x)); plot(x,y) % para activar la rejilla grid on % para poder representar varias gráficas juntas sin borrar las precedentes % en caso de no hacerlo, sólo aparecerá la última grafica realizada hold on plot(x,z,'r') plot(z,x,'r') % 'r' signifca "red" y dibuja la gráfica de color rojo plot(x,x,'g') title('g1(x)=(2*x^2+3)/5'); xlabel('x'); ylabel('y'); while (error > tol && npasos < nmin ) xnew = g1(x0); error = abs(xnew - x0); x0 = xnew; npasos = npasos + 1; end fprintf('Raiz= %f en la iteracion no. %d\n', xnew,npasos) fprintf('Error= %f\n', error)