Subido por Victor Fuentes

mathematica ejercicicios

Anuncio
Valor de PI e impresión de circulo
% grafica un circulo completo
% calcula y desplega el tiempo de ejecucion
t1=clock;
n=1000,cont=0,contf=0;
for i=1:n
x=-1+2*rand(1);
y=-1+2*rand(1);
if sqrt(x^2+y^2)<=1
cont=cont+1;
plot(x,y,'.','color','r')
hold on
else contf=contf+1;
plot(x,y,'.','color','b')
hold on
end
npi=4*cont/n;
end
fprintf('El valor de Pi es %f',npi);
t2=clock;
display('tiempo de ejecucion !!!!!')
etime(t2,t1)
circulo
n=
1000
cont =
0
El valor de Pi es 3.156000tiempo de ejecucion !!!!!
ans =
7.8150
tic, toc
Measure performance using stopwatch timer
Syntax
tic
any statements
toc
t = toc
Description
tic starts a stopwatch timer.
toc prints the elapsed time since tic was used.
t = toc returns the elapsed time in t.
Remarks
The tic and toc functions work together to measure elapsed time. tic saves the current time that toc uses later
to measure the elapsed time. The sequence of commands
tic
operations
toc
measures the amount of time MATLAB takes to complete one or more operations, and displays the time in
seconds.
Examples
This example measures how the time required to solve a linear system varies with the order of a matrix.
for n = 1:100
A = rand(n,n);
b = rand(n,1);
tic
x = A\b;
t(n) = toc;
end
plot(t)
% grafica un circulo completo
% calcula y desplega el tiempo de ejecución con TIC TOC
%t1=clock;
n=1000,cont=0,contf=0;
for i=1:n
x=-1+2*rand(1);
y=-1+2*rand(1);
tic
if sqrt(x^2+y^2)<=1
cont=cont+1;
plot(x,y,'.','color','r')
hold on
else contf=contf+1;
plot(x,y,'.','color','b')
hold on
t(n)=toc;
end
npi=4*cont/n;
end
fprintf('El valor de Pi es %f',npi);
%t2=clock;
display('tiempo de ejecucion !!!!!')
etime(t2,t1)
fopen
Abra un archivo u obtenga información sobre archivos abiertos
Sintaxis
fid = fopen (nombre de archivo)
fid = fopen (nombre de archivo, permiso)
[fid, mensaje] = fopen (nombre de archivo, permiso, formato de
máquina)
fids = fopen ('todos')
[nombre de archivo, permiso, machineormat] = fopen (fid)
Descripción
abre el archivo filenamepara acceso de lectura. (En las
PC, fopenabre archivos para acceso de lectura binario).
fid = fopen(filename)
fides
un entero MATLAB escalar, llamado identificador de archivo. Utiliza
el fidcomo primer argumento para otras rutinas de entrada / salida de
archivo. Si fopenno puede abrir el archivo, vuelve -1. Dos identificadores de
archivo están disponibles automáticamente y no necesitan
abrirse. Son fid=1(salida estándar) y fid=2(error estándar).
abre el archivo filenameen el modo
especificado por permission. permissionpuede ser:
fid = fopen(filename,permission)
'r'
Abrir archivo para leer (predeterminado).
'w'
Abrir un archivo o crear un nuevo archivo para escribir; descarte los contenidos
existentes, si los hay.
'a'
Abrir un archivo o crear un nuevo archivo para escribir; agregar datos al final del
archivo.
'r+'
Abrir archivo para leer y escribir.
'w+'
Abrir un archivo o crear un nuevo archivo para leer y escribir; descarte los
contenidos existentes, si los hay.
'a+'
Abrir un archivo o crear un nuevo archivo para leer y escribir; agregar datos al
final del archivo.
'A'
Añadir sin enjuague automático; usado con unidades de cinta
'W'
Escribir sin enjuague automático; usado con unidades de cinta
filenamepuede
ser un MATLABPATHnombre de ruta parcial relativo si el archivo se
abre solo para lectura. Siempre se busca primero una ruta relativa con respecto al
directorio actual. Si no se encuentra y solo se especifica o implica la lectura,
entonces fopen realiza una búsqueda adicional deMATLABPATH
Los archivos se pueden abrir en modo binario (predeterminado) o en modo
texto. En modo binario, no se seleccionan caracteres para un tratamiento
especial. En el modo de texto en la PC, el carácter de retorno de carro que
precede a un carácter de nueva línea se elimina en la entrada y se agrega antes del
carácter de nueva línea en la salida. Para abrir en modo texto, agregue "t" a la
cadena de permisos, por ejemplo 'rt'y 'wt+'. (En Unix, el texto y el modo
binario son los mismos, por lo que esto no tiene ningún efecto. Pero en los
sistemas de PC es crítico).
Nota Si se abre el archivo en modo de actualización ( '+'), un comando de
entrada como fread, fscanf, fgets, o fgetlno puede ser seguida
inmediatamente por un comando de salida como fwrite o fprintf sin una
intervención fseek o frewind. Lo contrario también es cierto. Es decir, un
comando de salida como fwrite o fprintf no puede ser seguida
inmediatamente por un comando de entrada como fread, fscanf, fgets, o fgetl
sin una intervención fseek o frewind.
abre un archivo como el
anterior. Si no puede abrir el archivo, fides igual -1y messagecontiene un
mensaje de error dependiente del sistema. Si fopenabre un archivo con éxito, el
valor de messageestá vacío.
[fid,message] = fopen(filename,permission)
[fid,message] = fopen(filename,permission,machineformat)abre
el archivo
especificado con el especificado permissiony trata los datos leídos usando freado
los datos escritos usando fwriteun formato dado
por machineformat. machineformates una de las siguientes cadenas:
'cray' o 'c'
Punto flotante Cray con orden de bytes big-endian
'ieee-be'
o 'b'
Punto flotante IEEE con orden de bytes big-endian
'ieee-le'
o 'l'
Punto flotante IEEE con ordenación de bytes little-endian
'ieeebe.l64'
o 's'
Punto flotante IEEE con orden de bytes big-endian y tipo de datos
largo de 64 bits
'ieeele.l64'
o 'a'
Punto flotante IEEE con ordenación de bytes little endian y tipo de
datos largo de 64 bits
'native' o 'n'
Formato numérico de la máquina en la que se ejecuta MATLAB (el
valor predeterminado).
'vaxd' o 'd'
VAX D punto flotante y pedido VAX
'vaxg' o 'g'
VAX G coma flotante y pedido VAX
devuelve un vector de fila que contiene los identificadores
de todos los archivos abiertos, sin incluir 1y 2(salida estándar y error
estándar). El número de elementos en el vector es igual al número de archivos
abiertos.
fids = fopen('all')
devuelve
el filename, permissioncuerda y machineformatcadena asociada con el archivo
especificado. Un inválido fiddevuelve cadenas vacías para todos los argumentos
de salida.
[filename,permission,machineformat] = fopen(fid)
Los permisos 'W'y 'A'están diseñados para su uso con unidades de cinta y no
realizan automáticamente una descarga del búfer de salida actual después de las
operaciones de salida. Por ejemplo, abra una cinta de cartucho de 1/4 "en una
estación SPARCstation para escribir sin enjuague automático:
fid = fopen ('/ dev / rst0', 'W')
Ejemplos
El ejemplo se utiliza fopenpara abrir un archivo y luego pasa fid, devuelto
por fopen, a otras funciones de E / S de archivo para leer datos del archivo y
luego cerrar el archivo.
fid = fopen ('fgetl.m');
mientras que 1
tline = fgetl (fid);
if ~ ischar (tline), break, end
disp (tline)
fin
fclose (fid);
MÉTODO DE NEWTON-RAPHSON (ITERACIONES)
Ejemplo:
Figura: Muestra el método de Newton -Raphson aplicado a una función para encontrar su raíz
PROGRAMA MÉTODO DE NEWTON-RAPHSON (ITERACIONES)
x=.
f[x_]:=(x^3)+(4*x^2)-10;
tol=0.001;
a=0.0;
b=2.0;
n=1;
x=(a+b)/2;
iter=20;
While[Abs[f[x]]>=tol,
if[f[a]*f[x]<=0,b=x,a=x];
x=(a+b)/2;
Print["por metodo de Newton iteracion",n,"f(x)=", N[f[x]],"Raíz =",x]
n++;
otra forma:
Newton-Raphson
(*función y gráfica para determinar el punto inicial*)
f[x_]:=x^3+4*x^2-10;
Plot[f[x],{x,-5,5},PlotStyle-> Magenta]
(*Vaor inicial*)
x0=1;
(*numero maximo de iteraciones y tolerancia*)
maxIter=20;
ϵ=0.001;
(*algoritmo*)
xa=x0; (*Estimado anterior de la raiz*)
For[i=1,i<=maxIter,i++,
(*aproximación de la raiz*)
xn=Round[xa-f[xa]/f'[xa],0.0001];
(*calculo del error y condición de parada del metodo*)
ea=N[Abs[xn-xa]];
Print[i," ",xn," ",ea];
If[ea<=ϵ,Break[],xa=xn];
];
Print["La raiz de f(x) es: ",N[xn],"y se obtuvo con ",i,"iteraciones."]
Newton-Raphson
150
100
50
4
1
2
3
4
1.4545
1.3689
1.3652
1.3652
2
2
0.4545
0.0856
0.0037
0.
La raiz de f(x) es: 1.3652 y se obtuvo con 4 iteraciones.
NOTAS ADICIONALES
Derivando la función: 𝑓 (𝑥) = 𝑋3 -𝑋 − 1 = 0
𝑓 ′(𝑥) = 3𝑋2 – 1
Aplicando el Método de Newton-Raphson
Primera iteración para:
X1=1
𝑓 (𝑥1)
𝑓 (𝑥1)
(3)
1 −1−1
𝑋2 =X1– 𝑓′(𝑥1) = 1– 𝑓′(𝑥1)=1– 3(1
(2) )−1 = 𝟏. 𝟓
Segunda iteración para:
X2=1.5
𝑋3 =X2–
𝑓 (𝑥2)
𝑓′(𝑥2)
(3)
−1.5−1
= 1.5– 1.5
= 𝟏. 𝟑𝟒𝟕𝟖𝟐
3(1.5(2) )−1
Tercera iteración para:
X3= 𝟏. 𝟑𝟒𝟕𝟖𝟐
𝑋4 =X3–
𝑓 (𝑥3)
𝑓′(𝑥3)
(3)
−1.34782−1
= 1.34782– 1.34782
= 𝟏. 𝟑𝟐𝟓𝟐𝟎
3(1.34782(2) )−1
Cuarta iteración para:
X4= 𝟏. 𝟑𝟐𝟓𝟐𝟎
𝑋5 =X4–
𝑓 (𝑥4)
𝑓′(𝑥4)
(3)
−1.32520−1
= 1.32520– 1.32520
= 𝟏. 𝟑𝟐𝟒𝟕
3(1.32520(2) )−1
4
MÉTODO DE LA REGLA FALSA (ITERACIONES)
REGLA FALSA
(*función y gráfica para determinar el punto inicial*)
f[x_]:=x^3+4*x^2-10;
a=-2;
b=3;
Plot[f[x],{x,a,b},PlotStyle-> Magenta]
(*numero maximo de iteraciones y tolerancia*)
maxIter=20;
ϵ=0.1;
(*algoritmo*)
xma=a; (*Estimado anterior de la raiz para el calculo del error*)
For[i=1,i<=maxIter,i++,
(*aproximación del punto medio*)
xm=Round[b-(f[b]*(b-a))/(f[b]-f[a]),0.001];
(*calculo del error y condición de parada del metodo*)
ea=N[Abs[xm-xma]];
Print[i," ",xm," ",ea];
If[N[ea]<=ϵ,Break[];
(*determinación del nuevo intervalo*)
If[f[a]*f[xm]<0,b=xm,a=xm,Break[]];
];
(*Actualización de la aproximación anterior de la raíz*)
xma=xm;
];
Print["La raiz de f(x) es: ",Round[xm,0.001],"y se obtuvo con ",i,"iteraciones."]
FALSA REGLA
50
40
30
20
10
2
1
1
2
3
10
1 -1.818 0.182
2 -1.818 0.
La raiz de f(x) es: -1.818 y se obtuvo con 2 iteraciones.
Método del Punto Fijo
Este método, al igual que los descritos anteriormente, tiene como fin de resolver ecuaciones no lineales F(x)=0
basándose, valga la redundancia, en la idea de punto fijo de una función que se logra dando la forma que
no es única
F(x)=x-G(x)=0
lo que es equivalente a resolver
x=G(x)
Este es un método iterativo, es decir, un proceso que se repite hasta encontrar un resultado
xk+1=G(xk)
que se puede ser cuando:
1) alcance un error absoluto o relativo deseado.
2) las iteraciones se repita una cantidad predeterminada de veces.
Ahora queda la duda si al realizar el método la sucesión de puntos generados converge a un valor o diverge,
pues se determina la convergencia analizando la derivada de la función G:
si |G'(x)|<1, entonces el método converge.
si |G'(x)|>1, entonces el método diverge.
PUNTO FIJO
(*función y gráfica para determinar el punto inicial*)
f[x_]:=x^3+4*x^2-10;
Plot[f[x],{x,-6,6},PlotStyle-> Magenta]
g[x_]:=f[x]+x;
(*valor inicial*)
x0=1;
(*numero maximo de iteraciones y tolerancia*)
maxIter=20;
ϵ=0.1;
(*algoritmo*)
xa=x0; (*Estimado anterior de la raiz para el calculo del error*)
(*aproximación de la raiz*)
xn=Round[g[xa],0.001];
(*calculo del error y condición de parada del metodo*)
ea=N[Abs[xn-xa]];
Print[1," ",xn," ",ea];
If[N[ea]<=ϵ,Break[],xa=xn];
Print["La raiz de f(x) es: ",N[xn],"y se obtuvo con ",1,"iteraciones."]
FIJO PUNTO
200
150
100
50
6
4
2
2
4
50
1 -4. 5.
La raiz de f(x) es: -4. y se obtuvo con 1 iteraciones.
6
Descargar