Sei sulla pagina 1di 11

Ejemplos prácticos usando

Octave
(Diferencias finitas)

Salvador Díaz Maldonado. 2019.


1. Calcule con diferencia centrada de 4° orden la cuarta diferencia de la función, fIV(x),

f ( x)  ( sen x) ex

evaluada en x=1 y con h=0.01. Obtenga el error comparando con el valor real y
exponga conclusiones al respecto.
>> pkg load symbolic
>> syms x
>> fx=sin(x)^exp(x)
fx = (sym)

/ x\
\e /
(sin(x))

>> fx4=diff(fx,4)
fx4 = (sym)

/
| 4 2 /
|/ cos(x)\ 3*x / cos(x)\ | 2
||log(sin(x)) + ------| *e + 6*|log(sin(x)) + ------| *|log(sin(x)) - 1 + -
|\ sin(x)/ \ sin(x)/ |
\ \

2 \ /
*cos(x) cos (x)| 2*x / cos(x)\ | 5*cos(x)
------- - -------|*e + 4*|log(sin(x)) + ------|*|log(sin(x)) - 3 + --------
sin(x) 2 | \ sin(x)/ | sin(x)
sin (x)/ \

2
2 3 \ / 2 \
3*cos (x) 2*cos (x)| x | 2*cos(x) cos (x)| x
- --------- + ---------|*e + 3*|log(sin(x)) - 1 + -------- - -------| *e +
2 3 | | sin(x) 2 |
sin (x) sin (x) / \ sin (x)/
\
2 3 4 | /
12*cos(x) 14*cos (x) 8*cos (x) 6*cos (x)| x \
log(sin(x)) - 8 + --------- - ---------- + --------- - ---------|*e *(sin(x))
sin(x) 2 3 4 |
sin (x) sin (x) sin (x) /

x\
e /

>> simplify(fx4)
ans = (sym)

/
| 4 3*x 2 /
|(log(sin(x))*sin(x) + cos(x)) *e + 6*(log(sin(x))*sin(x) + cos(x)) *\(log(
\

2 2 \ 2*x
sin(x)) - 1)*sin (x) + sin(2*x) - cos (x)/*e + 4*(log(sin(x))*sin(x) + cos(

/ 3 3 \ x
x))*\log(sin(x))*sin (x) - 3*sin(x) - 3*cos (x) + 5*cos(x)/*e + (log(sin(x))
2
4 / 2 2 \ x
- 8)*sin (x) + 3*\(log(sin(x)) - 1)*sin (x) + sin(2*x) - cos (x)/ *e + 12*sin

\ x
3 3 4 7*cos(4*x) 7| x e - 4
(x)*cos(x) + 8*sin(x)*cos (x) - 6*cos (x) + ---------- - -|*e *(sin(x))
4 4/

>> fx4f(1)
ans = -16.637
>>

Octave:
>> syms x
>> fx=sin(x)^exp(x);
>> fx4=diff(fx,4);
>> fx4f=function_handle(fx4); Matlab:
>> fx4f(1) >> syms x
ans = -16.637 >> fx=sin(x)^exp(x);
>> >> fx4=diff(fx,4);
>>fprintf('%8.6f\n',subs(fx4,1));
-16.637069
>>
Usando diferencia centrada de 4to orden:

𝑓𝑗−2 − 4𝑓𝑗−1 + 6𝑓𝑗 − 4𝑓𝑗+1 + 𝑓𝑗+2


𝑓 𝐼𝑉 𝑥 =
ℎ4

𝑓(0.98) − 4𝑓(0.99) + 6𝑓(1) − 4𝑓(1.01) + 𝑓(1.02


𝑓 𝐼𝑉 1 =
0.014

fIV(1) = -16.639793
9.372. Los siguientes datos fueron recopilados cuando un gran tanque para
almacenar petróleo fue cargado:

Calcular la tasa de flujo Q (esto es, dV/dt) para cada tiempo con orden de h2.
Crear previamente los vectores x y y en excel.
si ya lo creaste oprime Enter si no, oprime Ctrl C y Enter.

Detected XLS interfaces:


Orden del polinomio? 3

Coeficientes del polinomio ajustado

0.423854
0.025262
-0.000393
0.000003

Coef. de determinación Pearson: 0.9903


Coef. de correlación Kendall: 1.0000
Coef. de correlación Spearman: 1.0000

Introduce el valor de x a estimar.


cuando termines de estimar oprime Ctrl C.

x =
>> a
a =

0.0000029512 -0.0003926954 0.0252624229 0.4238537329

>>
𝑉 = 2.9512𝑥10−6 𝑡 3 − 3.9270𝑥10−4 𝑡 2 + 2.5262𝑥10−2 𝑡 + 4.2385𝑥10−1
V= 0.0000029512*t.^3- 0.0003926954*t.^2+ 0.0252624229*t+ 0.4238537329

>> pkg load symbolic


>> syms V(t)
Symbolic pkg v2.7.0: Python communication link active, SymPy v1.2.
>> V=0.0000029512*t.^3- 0.0003926954*t.^2+ 0.0252624229*t+ 0.4238537329
V = (sym)

3 2
pi*t 169*t 219*t 1553
------- - ------ + ----- + ----
1064514 430359 8669 3664

>> V1=diff(V)
V1 = (sym)

2
pi*t 338*t 219
------ - ------ + ----
354838 430359 8669

>> V1f=function_handle(V1)
V1f =

@(t) pi * t .^ 2 / 354838 - 338 * t / 430359 + 219 / 8669

>> V1f(0)
ans = 0.025262
>>
>> V1f(10)
ans = 0.018294
>> V1f(20)
ans = 0.013096
>> V1f(30)
ans = 0.0096689
>> V1f(45)
ans = 0.0078484
>> V1f(60)
ans = 0.010012
>> V1f(75)
ans = 0.016160
>>

Potrebbero piacerti anche