viernes, 25 de noviembre de 2011

Graficos con guide en matlab

function varargout = gaff(varargin)
gui_Singleton = 1;
gui_State = struct('gui_Name', mfilename, ...
'gui_Singleton', gui_Singleton, ...
'gui_OpeningFcn', @gaff_OpeningFcn, ...
'gui_OutputFcn', @gaff_OutputFcn, ...
'gui_LayoutFcn', [] , ...
'gui_Callback', []);
if nargin && ischar(varargin{1})
gui_State.gui_Callback = str2func(varargin{1});
end

if nargout
[varargout{1:nargout}] = gui_mainfcn(gui_State, varargin{:});
else
gui_mainfcn(gui_State, varargin{:});
end
function gaff_OpeningFcn(hObject, eventdata, handles, varargin)
handles.output = hObject;

guidata(hObject, handles);

function varargout = gaff_OutputFcn(hObject, eventdata, handles)
varargout{1} = handles.output;


function lista_Callback(hObject, eventdata, handles)
fun=get(handles.lista, 'Value');
switch fun

case 1
fplot('sin(x)',[0 2*pi])

case 2
fplot('cos(x)',[0 2*pi])

case 3
fplot('x^2+3', [0 20])
end
guidata(hObject, handles);

function lista_CreateFcn(hObject, eventdata, handles)
if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor'))
set(hObject,'BackgroundColor','white');
end

Interfaz en matlab, SUMA

function varargout = suma(varargin)
gui_Singleton = 1;
gui_State = struct('gui_Name', mfilename, ...
'gui_Singleton', gui_Singleton, ...
'gui_OpeningFcn', @suma_OpeningFcn, ...
'gui_OutputFcn', @suma_OutputFcn, ...
'gui_LayoutFcn', [] , ...
'gui_Callback', []);
if nargin && ischar(varargin{1})
gui_State.gui_Callback = str2func(varargin{1});
end

if nargout
[varargout{1:nargout}] = gui_mainfcn(gui_State, varargin{:});
else
gui_mainfcn(gui_State, varargin{:});
end
function suma_OpeningFcn(hObject, eventdata, handles, varargin)
handles.output = hObject;

guidata(hObject, handles);

function varargout = suma_OutputFcn(hObject, eventdata, handles)
varargout{1} = handles.output;



function numero1_Callback(hObject, eventdata, handles)
function numero1_CreateFcn(hObject, eventdata, handles)
if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor'))
set(hObject,'BackgroundColor','white');
end



function numero2_Callback(hObject, eventdata, handles)
function numero2_CreateFcn(hObject, eventdata, handles)
if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor'))
set(hObject,'BackgroundColor','white');
end


function sumar_Callback(hObject, eventdata, handles)
num1=get(handles.numero1,'String');
num2=get(handles.numero2,'String');

c=str2num(num1)+ str2num(num2);
set(handles.resultado,'String',c);
guidata(hObject,handles);

“Diferencias divididas de Newton en Matlab”

CODIGO:

% ingreso de datos.

x=[-1 0 1 2 3];y=[3 0 -1 1 2];

xa=x;ya=y;

%se le dan los valores de xa e ya a las variables x e y que serán utilizadas mas adelante.

% Formacion de las diferencias divididas a través de ciclos “for” e “if”.

d=zeros(length(y));

%zeros(n) genera una matriz de nxn con todos sus valores iguales a cero, en este caso utiliza el largo del arreglo y

d(:,1)=y';

%Se asigna valor de y’ a la columna de la matriz creada anteriormente

for k=2:length(x)

%se hacen dos ciclos, uno dentro de otro, donde van variando los valores de j y k, y va entregando cuales son los valores que se utilizaran en

for j=1:length(x)+1-k

d(j,k)=(d(j+1,k-1)-d(j,k-1))/(x(j+k-1)-x(j));

end

end

for w=1:length(x)

ds=num2str(abs(d(1,w)));

%los valores numericos de la matriz “ds” en las coordenadas (1,w) se transforman en “string”, cuyos valores no serán modificados después, y serán mostrados al final en “presentación de resultados”

if w>1

%si w es mayor que 1…

if x(w-1)<0

%si la multiplicación de x por (w-1)es menor a cero, se agrega un símbolo “+” al polinomio de resultado.

sg1='+';

else

%en caso contrario, el símbolo matemático es “-“.

sg1='-';

end

end

if d(1,w)<0

sg2='-';

else

sg2='+';

end

if w==1

acum=num2str(d(1,1));

%se crea un contador de nombre “acum” que irá almacenando el polinomio obtenido, y lo mostrará el final del codigo

elseif w==2

polinact=['(x' sg1 num2str(abs(x(w-1))) ')' ];

actual=[ds '*' polinact];

acum=[acum sg2 actual];

else

polinact=[polinact '.*' '(x' sg1 num2str(abs(x(w-1))) ')' ];

actual=[ds '*' polinact];

acum=[acum sg2 actual];

end

end

% Presentacion de resultados

fprintf('los valores de X e Y son');

disp(xa);

disp(ya);

%imprimir en pantalla el polinomio obtenido

fprintf('El polinomio interpolación Newton obtenido es: %s ',acum);

viernes, 21 de octubre de 2011

Metodo de Gauss Seidel en Matlab

clc
clear
%limpiar ventana
%valores iniciales a la funcionpara poder ir trabajando hacia abajo y
%reemplazar estos valores en la funcion x1
x2=0;
x3=0;
%segun el metodo de gauss seidel se sustituye el valor de x2 y x3 por 0
%se dan los valores despejados de cada una de las ecuaciones
%y cada x1, x2,x3 adquiere este valor
x1=((8 + 0.2*x2 + 0.5*x3)/3);
x2=((-19.5 - 0.1*x1 - 0.4*x3)/7);
x3=((72.4 - 0.4*x1 + 0.1*x2)/10);
%valor del error que se pide
error = 1.0;
%se igualan a los valores iniciales dados
xa1=x1;
xa2=x2;
xa3=x3;
%en este caso el valor inicial del error se tomara como 100%
e1=100;
e2=100;
e3=100;
%contador
i = 1;
% se utiliza el bucle while con el fin de hacer las iteraciones necesarias
while ((error < e1) || (error < e2) || (error < e3 ))% "mientras" el error obtenido sea menor al error requerido se seguiran realizando las iteraciones.
%se reemplazan los valores obtenidos
xa1=x1;
xa2=x2;
xa3=x3;
%se definen los valores de la iteracion anterior
x1=((8 + 0.2*x2 + 0.5*x3)/3);
x2=((-19.5 - 0.1*x1 - 0.4*x3)/7);
x3=((72.4 - 0.4*x1 + 0.1*x2)/10);
%se calcula el valor del error para ser agregado en la tabala
e1=abs((x1-xa1)/x1)*100;
e2=abs((x2-xa2)/x2)*100;
e3=abs((x3-xa3)/x3)*100;
i=i+1;
%el contador aumenta cada vez que se realize el ciclo /numero de iteracione
fprintf('%0d \t %1f \t %3f \t %5f \t %8f \t %10f \t %12f \n',i,x1,x2,x3,e1,e2,e3);
end % se cierra el ciclo
% se imprimen valores finales obtenidos, señalando la cantidad de
% operaciones necesarias para llegar al resultado obteniendo los valores de
% error requeridos
fprintf('cant. iteraciones: %f \n\n', i);
fprintf('x1 = %f \n\n', x1);
fprintf('x2 = %f \n\n', x2);
fprintf('x3 = %f \n\n', x3);