Jeg sliter litt med en oppgave:
Bruk Newton-Raphsons metode for å finne tilnærminger til begge løsningene av ligningen:
f(x) = 3x^2 + 4x − 4
Bruk en feiltoleranse på E = 10^−12. Utforsk hvordan valget av initialverdi x0 påvirker
hvilken av løsningene algoritmen konvergerer mot.
Håper noen her klarer å hjelpe meg
Newton–Raphson
Moderatorer: Vektormannen, espen180, Aleks855, Solar Plexsus, Gustav, Nebuchadnezzar, Janhaa
Algoritmen sier at gitt et "løsningsgjett" $x_i$ for nullpunktet til en funksjon, så er neste iterasjon av løsningen gitt ved
$x_{i+1} = x_i - \frac{f(x_i)}{f'(x_i)}$
Slik at for en initialverdi $x_0$ så blir neste løsningsverdi $x_1$ gitt ved
$x_{1} = x_0 - \frac{f(x_0)}{f'(x_0)}$
og dette kan vi gjenta videre, så neste (forbedrede) løsningsverdi $x_2$ er gitt ved
$x_{2} = x_1 - \frac{f(x_1)}{f'(x_1)}$
Dette lar seg f.eks. programmere ved hjelp av en while-løkke, som løper helt til løsningsverdien blir god nok - som i ditt tilfelle er helt til "feilen" blir 1.0E-12. Nøyaktig hvordan du vil programmere dette kommer an på språket du bruker. Under er en pseudokode for hvordan man kan tenke:
Du må her også tenke gjennom hvordan du kan finne verdien til den deriverte i programmet (hint: Bruk definisjonen til den deriverte).
$x_{i+1} = x_i - \frac{f(x_i)}{f'(x_i)}$
Slik at for en initialverdi $x_0$ så blir neste løsningsverdi $x_1$ gitt ved
$x_{1} = x_0 - \frac{f(x_0)}{f'(x_0)}$
og dette kan vi gjenta videre, så neste (forbedrede) løsningsverdi $x_2$ er gitt ved
$x_{2} = x_1 - \frac{f(x_1)}{f'(x_1)}$
Dette lar seg f.eks. programmere ved hjelp av en while-løkke, som løper helt til løsningsverdien blir god nok - som i ditt tilfelle er helt til "feilen" blir 1.0E-12. Nøyaktig hvordan du vil programmere dette kommer an på språket du bruker. Under er en pseudokode for hvordan man kan tenke:
Kode: Velg alt
x_0 = 1.0 #dette er en initialverdi som vi kan velge selv, det er gjerne vanlig å sette den til 1.0
løsning = x_0 #denne oppdaterer vi i løkken
while løsning IKKE god nok:
ny_løsning = løsning - f(løsning)/f'(løsning) #dette er Newton-Raphson-formelen, litt omskrevet
løsning = ny_løsning #her oppdaterer vi løsningen vår, og dette gjentas i hver iterasjon
print(løsning) #skriver ut den siste verdien vi fant, etter at vi har kommet ut av løkka
-
- Fibonacci
- Innlegg: 5648
- Registrert: 24/05-2009 14:16
- Sted: NTNU
I python og lignende språk kan en og skrive direkte
Og den oppdateres korrekt.
Kode: Velg alt
løsning = løsning - f(løsning)/f'(løsning)
"Å vite hva man ikke vet er og en slags allvitenhet" - Piet Hein
https://s.ntnu.no/Integralkokeboken
Lektor - Matematikk, Fysikk og Informatikk
https://s.ntnu.no/Integralkokeboken
Lektor - Matematikk, Fysikk og Informatikk
Vent, har Python en innebygd apostrof-funksjon som deriverer en arbitrær funksjon f?Nebuchadnezzar skrev:I python og lignende språk kan en og skrive direkte
Og den oppdateres korrekt.Kode: Velg alt
løsning = løsning - f(løsning)/f'(løsning)

-
- Fibonacci
- Innlegg: 5648
- Registrert: 24/05-2009 14:16
- Sted: NTNU
Kode: Velg alt
In [1]: from sympy import *
In [2]: import numpy as np
In [3]: x = Symbol('x')
In [4]: y = x**2 + 1
In [5]: yprime = y.diff(x)
In [6]: yprime
Out[6]: 2⋅x
In [7]: f = lambdify(x, yprime, 'numpy')
In [8]: f(np.ones(5))
Out[8]: [ 2. 2. 2. 2. 2.]
Kode: Velg alt
def df(x, h=1e-5):
return (f(x+h) - f(x))/h

"Å vite hva man ikke vet er og en slags allvitenhet" - Piet Hein
https://s.ntnu.no/Integralkokeboken
Lektor - Matematikk, Fysikk og Informatikk
https://s.ntnu.no/Integralkokeboken
Lektor - Matematikk, Fysikk og Informatikk