Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- clear
- ////////////////////////////////////////////////////
- // CalculaLagrangeSegundo
- // Función que obtiene el valor de f(x) de la funcion
- // de interpolacion para el valor dX dado empleando
- // el método de interpolacion de Lagrange de segundo
- // grado.
- // Valores de entrada
- // dX, dX0 dX1, dX2, dFx0, dFx1, dFx2
- //
- // Resultados de la función
- // dY - Valor resultante de interpolar dX
- ///////////////////////////////////////////////////
- //function dY=calculaLagrangeSegundo(dX, dX0 dX1, dX2, dFx0, dFx1, dFx2)
- // dY = (dX - dX1)*(dX - dX2) * dFx0 / ((dX0 - dX1)*(dX0 - dX2)) + ..
- // (dX - dX0)*(dX - dX2)* dFx1 / ((dX1 - dX0)*(dX1 - dX2)) + ..
- // (dX - dX0)*(dX - dX1)* dFx2 / ((dX2 - dX0)*(dX2 - dX1))
- //endfunction
- function lagrangeSegundo(vX, vY)
- //checar que sean al menos 3 datos
- [vXSort,k] = gsort(vX, 'lc', 'i')
- vYSort = [vY(:, k(:,1))]
- for i=2:length(vXSort)
- vYSort(:, $+1) = vY(:, k(:,i))
- end
- dX= evstr(x_dialog('Que valor deseas interpolar?',''))
- valorSuperior = dX
- superiorIndice = 0
- valorInferior = dX
- inferiorIndice = 0
- segundoInferior = dX
- segundoIndice = 0
- for i=1:length(vXSort)
- if vXSort(:,i) < dX then
- valorInferior = vXSort(:,i)
- inferiorIndice = i
- elseif vXSort(:,i) > dX then
- valorSuperior = vXSort(:,i)
- superiorIndice = i
- break
- end
- end
- if (inferiorIndice == 0) | (superiorIndice == 0) then
- //display error
- else
- if inferiorIndice == 1 then
- superiorIndice = superiorIndice+1
- segundoIndice = superiorIndice-1
- else
- inferiorIndice = inferiorIndice - 1
- segundoIndice = inferiorIndice+1
- end
- segundoInferior = vXSort(:,segundoIndice)
- valorInferior = vXSort(:,inferiorIndice)
- valorSuperior = vXSort(:,superiorIndice)
- messagebox(["Los valores que seran utilizados para la interpolacion son", ..
- "(" + string(valorInferior)+","+string(vYSort(:,inferiorIndice))+")", ..
- "(" + string(segundoInferior)+","+string(vYSort(:,segundoIndice))+")", ..
- "(" + string(valorSuperior)+","+string(vYSort(:,superiorIndice))+")"])
- end
- endfunction
- ////////////////////////////////////////////////////
- // LeerArchivo Tipo 1
- // Lee el contenido del archivo datos.txt
- // Parámetros (valores de entrada):
- // ninguno
- // Retorno (valores de salida):
- // vX Vector de las X
- // vY Vector de las Y
- ///////////////////////////////////////////////////
- function [vX, vY]=LeeArchivoTipo1()
- archivo= file('open', 'tipo11.txt', 'old')
- numDatos= read(archivo,1,1)
- vX = read(archivo, 1, numDatos)
- vY = read(archivo, 1, numDatos)
- file('close', archivo)
- endfunction
- [vX, vY]=LeeArchivoTipo1()
- lagrangeSegundo(vX, vY)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement