コード例 #1
0
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
コード例 #2
0
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)
コード例 #3
0
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)
コード例 #4
0
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
コード例 #5
0
#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))