def oppgave5():
    w = 0.3  # m
    t = 0.03  # m
    g = 9.81  # N
    d = 480  # kg/m^3
    L = 2  # m
    x = L
    E = 1.3 * 10**10  # N/m^2
    I = (w * t**3) / 12
    f_x = -d * w * t * g
    y = f_x / (24 * E * I) * (x**2) * (x**2 - 4 * L * x + 6 * L**2)

    cond_list = [0.0] * 11
    err_list = [0.0] * 11
    for i in range(1, 10):
        n = 10 * 2**i
        m = calc_y_c(n)
        condi = cond(lagA(n), p=inf)
        err = abs(y - m[-1])
        print("\(" + str(i) + "\)", "&", "\(" + str(n) + "\)", "&",
              "\(" + str(condi) + "\)", "&", "\(" + str(err) + "\)",
              "\\\\\n\hline")
        cond_list[i - 1] = condi
        err_list[i - 1] = err

    loglog(list(range(1, 12)), cond_list, 'r', label='Kondisjonstall')
    loglog(list(range(1, 12)), err_list, 'b', label='Feil')
    legend(bbox_to_anchor=(1.05, 1), loc='upper left', borderaxespad=0.)
    ylabel("Verdi")
    xlabel("10*2^x")
    show()
Beispiel #2
0
def oppgave4c():
    L = 2  #m
    n = 10
    # lengden på hver seksjon
    h = L / n
    # Strukturmatrise
    A = lagA(10)
    # Vektor med eksakte y-verdier
    y_e = y_e_vektor(L)
    # vektoren y'''' med numeriske tilnærminger
    return (1 / h**4) * dot(A, y_e)
Beispiel #3
0
def calc_y_c(n):
    w = 0.3  # bredde (m)
    d = 0.03  # tykkelse (m)
    g = 9.81  # gravitasjonskonstant (m/s^2)
    density = 480  # massetetthet (kg/m^3)
    L = 2  # Lengde (m)
    E = 1.3 * 10**10  # Materialkonstant (N/m^2)
    I = (w * d**3) / 12  # Tverrsnitt (m^2)
    f = -density * w * d * g
    h = L / n
    f_x = [(h**4 / (E * I)) * f] * n
    A = lagA(n)
    y = spsolve(A, f_x)
    return y
Beispiel #4
0
def oppgave7():
    B = [0.0] * 11
    n_list = [0.0] * 11
    for i in range(1, 12):
        n = 10 * 2**i
        n_list[i - 1] = n
        A = lagA(n)
        m = calc_y_c(n, A)
        B[i - 1] = m[-1]
        print("\(" + str(i) + "\)", "&", "\(" + str(n_list[i - 1]) + "\)", "&",
              "\(" + str(B[i - 1]) + "\)", "\\\\\n\hline")

    plot(list(range(1, 12)), B, 'g', label="Feil")
    legend(bbox_to_anchor=(1.05, 1), loc='upper left', borderaxespad=0.)
    ylabel("Misplacement")
    xlabel("n")
    show()
def calc_y_c(n):
	w = 0.3  # m
	t = 0.03  # m
	g = 9.81  # N
	d = 480  # kg/m^3
	L = 2  # m
	E = 1.3 * 10**10  # N/m^2
	I = (w*t**3)/12
	f = -d*w*t*g
	p = 100 #km/m
	h = L/n
	b = [0.0]*n
	for k in range(n):
		s = -p*g*math.sin(math.pi/L*h*(k+1))
		b[k]=([(h ** 4 / (E * I)) * (f+s)])
	A = csc_matrix(lagA(n))
	y = spsolve(A, b)
	return y
def oppgave6d():
    w = 0.3  # m
    t = 0.03  # m
    g = 9.81  # N
    p = 100  #kg/m
    d = 480  # kg/m^3
    L = 2  # m
    E = 1.3 * 10**10  # N/m^2
    I = (w * t**3) / 12
    f_x = -d * w * t * g
    x = L

    y1 = f_x / (24 * E * I) * (x**2) * ((x**2) - 4 * L * x + 6 * L**2)
    y2 = ((g * p * L / (E * I * math.pi)) *
          ((L**3) / (math.pi**3) * math.sin(math.pi / L * x) - ((x**3) / 6) +
           (L * (x**2) / 2) - (x * (L**2) / (math.pi**2))))
    y = y1 - y2

    B = [0.0] * 11
    n_list = [0.0] * 11
    tf = [0.0] * 11
    condition = [0.0] * 11
    emach = 2**(-52)
    for i in range(1, 12):
        n = 10 * 2**i
        n_list[i - 1] = n
        A = lagA(n)
        m = calc_y_c(n, A)
        B[i - 1] = abs(abs(y) - abs(m[-1]))
        tf[i - 1] = (abs((L**2) / (n**2)))
        condition[i - 1] = cond(A, p=inf) * emach
        print(condition[i - 1])

    loglog(n_list, B, 'g', label="Feil")
    loglog(n_list, tf, 'r', label="h^2")
    loglog(n_list, condition, 'b', label="Kondisjonstall*e_mach")
    legend(bbox_to_anchor=(1.05, 1), loc='upper left', borderaxespad=0.)
    ylabel("Feil")
    xlabel("x=10*2^i")
    annotate(str(n_list[6]) + ", " + str(B[6]), (n_list[6], B[6]))
    show()
Beispiel #7
0
from oppgave4c import oppgave4c

y4_c = oppgave4c()

E = 1.3 * 10**10
I = (0.3 * 0.03**3) / 12
f = -480 * 0.3 * 0.03 * 9.81
# Regner ut vektoren med lengde 10
y4_e = (f / (E * I)) * ones((10, 1))

forward_error = norm(y4_e - y4_c, ord=inf)
rel_forward_error = forward_error / norm(y4_e, ord=inf)
# Antar at den relative bakoverfeilen er 2^-52
rel_backwards_error = 2**(-52)
# Feilforstørringen er relativ foroverfeil delt på relativ bakoverfeil
error_magnification = rel_forward_error / rel_backwards_error

# Lager matrisen fra oppgave 2
A = lagA(10)
# Konverterer matrisen til en 'sparse matrix' for å inverse den
A = csc_matrix(A)
A_Invers = inv(A)
# Kondisjonstallet
cond_A = sp_norm(A, ord=inf) * sp_norm(A_Invers, ord=inf)

# Printer ut svarene
print("Foroverfeil: ", forward_error)
print("Relativ foroverfeil:", rel_forward_error)
print("Feilforstørring:", error_magnification)
print("Kondisjonstall for A:", cond_A)