def regn_ut_alle_y(n): # n = antall # lager matrisen og regner ut h A = oppgave_2.lag_a(n) h = L/n konst = (h**4)/(E * I) b = [f * konst] * n # baade f og konst er konstant return spsolve(A, b) # y
def regn_ut_alle_y(n): # n = antall deler A = oppgave_2.lag_a(n) h = L / n konst = (h**4) / (E * I) b = [] for i in range(n): b.append(konst * f((i + 1) * h)) return spsolve(A, b)
def regn_ut_yene(n): # n = antall deler stupebrettet er delt i A = oppgave_2.lag_a(n) h = L/n # lengden pa hver del konst = (h**4)/(E * I) b = [] for i in range(n): # siste verdi blir n b.append(konst * f(i * h)) return spsolve(A, b)
def tabell_over_feil_i_punktet(): n = 20 #Funker ikke under 6 noyaktig = y(2) while n <= 10 * 2**11: if n < 10 * 2**10: # dette er bare for at programmt ikke skal kjøre i en evighet print(n, "kondisjonstall", cond(oppgave_2.lag_a(n))) numerisk = oppgave_3.regn_ut_alle_y(n)[ -1] #[-1] er siste element i tabellen, altså y(L) print(n, "Differanse", numerisk - noyaktig) print() n *= 2
#Vi ønsker oss kondisjonstallet til A #Koden finnes i oppgave 5. import numpy as np import oppgave_5 import oppgave_2 import Oppgave_4c n = 10 ye1 = Oppgave_4c.lag_ye() A = oppgave_2.lag_a(n) konst = 1 / 0.2**4 #1/h^4 a_1 = A * konst nfjerdederiverte = np.dot(a_1, ye1) eksaktfjerdederivert = [-0.004829538461538463] * 10 yef = np.matrix(eksaktfjerdederivert) forovermatrise = yef - nfjerdederiverte print("Forover", forovermatrise) ynorm = 0.004829538461538463 forover = 5.7957111332385125e-15 relforover = forover / ynorm print("relativ forover", relforover) emach = 2**(-52) forstørring = relforover / emach print("Forstørring", forstørring) print(oppgave_5.cond(A))