Metoda Newtona
Otrzymałeś(aś) rozwiązanie do zamieszczonego zadania? - podziękuj autorowi rozwiązania! Kliknij
-
- Czasem tu bywam
- Posty: 142
- Rejestracja: 26 lut 2022, 14:16
- Podziękowania: 95 razy
Metoda Newtona
Mam takie równanie: \(f(x) = x^{3}-x^{2}+3\). Rozwiązuje to metodą Newtona. Chciałbym wiedzieć jak wyliczyć z tego \(x\). Potrzebne jest mi to do narysowania wykresu na który naniose dwie funkcje, odczytam miejsce zerowe i będę mógł skorzystać ze wzoru Newtona (iteracyjnego) do wyliczenia kolejnych wartości. Potrzebuje dwóch wartości \(y\): \(y_{1}=?\) i \(y_{2}=?\). Te wartości musze wyliczyć z tego równania \(f(x) = x^{3}-x^{2}+3\) by potem nanieść na wykres funkcje, znaleźć punkt przecięcia na tym wykresie i odczytać miejsce zerowe. Jak to policzyć, bo już troche nad tym siedze i wciąż nie mam rozwiązania
Ostatnio zmieniony 30 kwie 2024, 21:08 przez Tulio, łącznie zmieniany 2 razy.
Powód: Poprawa wiadomości
Powód: Poprawa wiadomości
-
- Stały bywalec
- Posty: 304
- Rejestracja: 29 paź 2010, 12:44
- Podziękowania: 21 razy
- Otrzymane podziękowania: 80 razy
- Płeć:
Re: Metoda Newtona
Rozumiem, że masz \(y=f \left( x\right) \), a chcesz obliczyć \(x = g \left( y\right) \). Funkcja \(f\) nie jest różnowartościowa więc nie da się mieć na to jakiegoś jednego ładnego wzoru (analogicznie jak dla \(y=x^2-1\) otrzymasz \(x= \sqrt{y+1}, x \ge 0\) i \(x=-\sqrt{y+1}, x<0\)).
Funkcja ma ekstrema w argumentach \(x=0, x=\frac{2}{3}\) i przyjmując:
\(x\in \left( -\infty;0\right] \)
\(x\in \left( 0;\frac{2}{3}\right] \)
\(x\in \left( \frac{2}{3};\infty\right] \)
możemy (prawdopodobnie - twierdzenie o funkcji uwikłanej) otrzymać trzy wzory funkcji \(x=g \left( y\right) \) (rozwikłać \(y-x^3+x^2-3=0\) dla \(x=g \left( y\right) \))
Wedle wolframa to są wzory o które pytasz: Myślę, że możesz lepiej przedstawić co chcesz osiągnać i może pomożemy bez obliczania funkcji \(x=g \left( y\right) \). W szczególności dosyć dokładny wykres możesz narysować bez tego (ekstrema, miejsce zerowe).
PS. Jeśli naprawdę chcesz tego dokonać i dojść do wzorów z obrazka, to są na to gotowe wzory - wzory Cardano.
Funkcja ma ekstrema w argumentach \(x=0, x=\frac{2}{3}\) i przyjmując:
\(x\in \left( -\infty;0\right] \)
\(x\in \left( 0;\frac{2}{3}\right] \)
\(x\in \left( \frac{2}{3};\infty\right] \)
możemy (prawdopodobnie - twierdzenie o funkcji uwikłanej) otrzymać trzy wzory funkcji \(x=g \left( y\right) \) (rozwikłać \(y-x^3+x^2-3=0\) dla \(x=g \left( y\right) \))
Wedle wolframa to są wzory o które pytasz: Myślę, że możesz lepiej przedstawić co chcesz osiągnać i może pomożemy bez obliczania funkcji \(x=g \left( y\right) \). W szczególności dosyć dokładny wykres możesz narysować bez tego (ekstrema, miejsce zerowe).
PS. Jeśli naprawdę chcesz tego dokonać i dojść do wzorów z obrazka, to są na to gotowe wzory - wzory Cardano.
-
- Fachowiec
- Posty: 1937
- Rejestracja: 01 sty 2021, 09:38
- Podziękowania: 4 razy
- Otrzymane podziękowania: 460 razy
Re: Metoda Newtona
\( f(x) = x^{3} -x^2 +3, \ \ x\in \rr. \)
Wartość \( x \) - wartość pierwiastka tego równania otrzymamy kolejnymi przybliżeniami (iteracjami) Metodą Newtona (Metodą Stycznych).
Nie Woframem, nie wzorami Cardano.
Wartość \( x \) - wartość pierwiastka tego równania otrzymamy kolejnymi przybliżeniami (iteracjami) Metodą Newtona (Metodą Stycznych).
Nie Woframem, nie wzorami Cardano.
-
- Fachowiec
- Posty: 1937
- Rejestracja: 01 sty 2021, 09:38
- Podziękowania: 4 razy
- Otrzymane podziękowania: 460 razy
Re: Metoda Newtona
Treścią zadania jest Metoda Newtona obliczania miejsc zerowych równań nieliniowych.
Powstaje pytanie jak obliczyć miejsce zerowe funkcji wielomianowej \( f(x) = x^3 -x^2 +3 \) tą metodą ?
Możemy posłużyć się kartką papieru i ołówkiem, możemy zaangażować program komputerowy na przykład OCTAVE lub MATLAB.
Metoda ręczna
\( x_{n+1} = x_{n} - \frac{f(x_{n})}{f'(x_{n})},\ \ n = 0,1,2,..,N. \)
\( x_{n+1} = x_{n} - \frac{x^3_{n}-x^2_{n} +3}{3x^2_{n} -2x_{n}}, \ \ n=0,1,2, ..., N.\)
Przyjmujemy punkt początkowy \( x_{0} = -1.\)
..........................................................
Najlepiej napisać program. który oblicza miejsca zerowe funkcji nieliniowych.
Program w OCTAVE 7.1.0
Już w czwartej iteracji otrzymaliśmy przybliżoną wartość miejsca zerowego funkcji wielomianowej \( -1,174559 \) z dokładnością \( 10*(-4).\)
Powstaje pytanie jak obliczyć miejsce zerowe funkcji wielomianowej \( f(x) = x^3 -x^2 +3 \) tą metodą ?
Możemy posłużyć się kartką papieru i ołówkiem, możemy zaangażować program komputerowy na przykład OCTAVE lub MATLAB.
Metoda ręczna
\( x_{n+1} = x_{n} - \frac{f(x_{n})}{f'(x_{n})},\ \ n = 0,1,2,..,N. \)
\( x_{n+1} = x_{n} - \frac{x^3_{n}-x^2_{n} +3}{3x^2_{n} -2x_{n}}, \ \ n=0,1,2, ..., N.\)
Przyjmujemy punkt początkowy \( x_{0} = -1.\)
..........................................................
Najlepiej napisać program. który oblicza miejsca zerowe funkcji nieliniowych.
Program w OCTAVE 7.1.0
Kod: Zaznacz cały
function newton(f,df,x0,tol,n)
% Metoda Newtona rozwiązywania równań nieliniowych f(x)=0.
iter = 0;
u = feval(f, x0);
v = feval(df,x0);
err=abs(u/v);
disp('______________________________________________________')
disp('iteracja x f(x) df(x) |xn+1-xn| ')
disp('_______________________________________________________')
fprintf('%2.0f %12.6f %12.6f 12.6f\n', iter, x0, u, v)
while(err>tol)
(iter <= n)
(v ~= 0)
x1 = x0-u/v;
err = abs(x1-x0);
x0=x1;
u =feval(f,x0);
v = feval(df,x0);
iter = iter+1;
fprintf('%2.0f %12.6f %12.6f %12.6f %12.6f\n',iter,x0, u, v, err)
end
if (v==0)
disp('dzielenie przez zero')
end
if(iter>n)
disp('Metoda Newtona nie jest zbieżna')
end
function f = f1(x)
f= x.^3 -x.^2 +3;
function f = df1(x)
f= 3*x.^2 -2*x;
>> newton('f1','df1',-1,10^(-4),40)
_____________________________________________
iteracja x f(x) df(x) |xn+1-xn|
_____________________________________________
0 -1.000000 1.000000
ans = 1
1 -1.200000 -0.168000 6.720000 0.200000
ans = 1
ans = 1
2 -1.175000 -0.002859 6.491875 0.025000
ans = 1
ans = 1
3 -1.174560 -0.000001 6.487889 0.000440
ans = 1
4 -1.174559 -0.000000 6.487888 0.000000
-
- Czasem tu bywam
- Posty: 142
- Rejestracja: 26 lut 2022, 14:16
- Podziękowania: 95 razy
Re: Metoda Newtona
dobra, to może podam inny przykład żeby nieco bardziej rozjaśnić sytuacje. Po prostu pokaże jak robiliśmy to na zajęciach. Mam taki przykład:
\(e^{x} + x = 0\)
to jest funkcja pierwotna. Teraz pisaliśmy miejsce zerowe:
f(x)=0 , następnie liczyliśmy pochodną , w tym przypadku będzie to f(x)=\(e^{x} + 1\). Następnie braliśmy i lczyliśmy x:
\(e^{x} + x = 0\)
-x=\(e^{x}\) / (-1)
x=\(e^{x}\)
i zapis był taki:
y=x i y = \(e^{x}\)
y=x i y = \(e^{x}\)
i na podstawie tego rysowaliśmy wykresy: dalej to już było iteracyjne liczenie kolejnych wartości, to to wiem jak policzyć tylko chodzi mi o wyliczenie tego:
y=x i y = \(e^{x}\)
y=x i y = \(e^{x}\)
dla tego równania \(x^{3} - x^{2} + 3\) . Więc to co na razie wyliczyłem to jest to:
f(x)= \(x^{3} - x^{2} + 3\)
f(x)=0
f(x)=\(3x^{2}-2x=0\)
teraz wzór newtona:
x_k+1 = x_k - \( \frac{x^{3}-x^{2}+3}{3x^{2}-2x} \)
no i teraz podstawowe pytanie. Jak zapisze te funkcje:
f(x) = \(x^{3}-x^{2}+3= 0\) to jak wyliczyć te dwa y dla tej funkcji, tak jak miało to miejsce wyżej?
\(e^{x} + x = 0\)
to jest funkcja pierwotna. Teraz pisaliśmy miejsce zerowe:
f(x)=0 , następnie liczyliśmy pochodną , w tym przypadku będzie to f(x)=\(e^{x} + 1\). Następnie braliśmy i lczyliśmy x:
\(e^{x} + x = 0\)
-x=\(e^{x}\) / (-1)
x=\(e^{x}\)
i zapis był taki:
y=x i y = \(e^{x}\)
y=x i y = \(e^{x}\)
i na podstawie tego rysowaliśmy wykresy: dalej to już było iteracyjne liczenie kolejnych wartości, to to wiem jak policzyć tylko chodzi mi o wyliczenie tego:
y=x i y = \(e^{x}\)
y=x i y = \(e^{x}\)
dla tego równania \(x^{3} - x^{2} + 3\) . Więc to co na razie wyliczyłem to jest to:
f(x)= \(x^{3} - x^{2} + 3\)
f(x)=0
f(x)=\(3x^{2}-2x=0\)
teraz wzór newtona:
x_k+1 = x_k - \( \frac{x^{3}-x^{2}+3}{3x^{2}-2x} \)
no i teraz podstawowe pytanie. Jak zapisze te funkcje:
f(x) = \(x^{3}-x^{2}+3= 0\) to jak wyliczyć te dwa y dla tej funkcji, tak jak miało to miejsce wyżej?
-
- Fachowiec
- Posty: 1937
- Rejestracja: 01 sty 2021, 09:38
- Podziękowania: 4 razy
- Otrzymane podziękowania: 460 razy
Re: Metoda Newtona
Jeśli równanie
\( -x = e^{x} \) mnożymy stronami przez \( -1 \)
\( -x = e^{x} \ \ | \cdot (-1)\)
to mamy
\( x = -e^{x},\)
a nie
\( x = e^{x}.\)
Rozumiem, że ten wspólny wykres prostej \( y = x \) i funkcji \( f(x) = e^{x} \) ma pomóc w ustaleniu punktu początkowego (startu) metody Newtona.
Wykresy funkcji \( y=x \) i \( y = e^{x} \) nie mają punktów wspólnych.
W przedstawionym załączniku mamy wykresy funkcji \( y = x, \) i \( y = -e^{x}, \) a nie \( y=x \) i \( y = e^{x}.\)
Wzór Newtona dla funkcji \( g(x) = e^{x} + x \) powinien mieć postać:
\( x_{k+1} = \frac{e^{x_{k}} +x_{k}}{ e^{x_{k}} +1}, \ \ k= 0,1,2,...,N \)
Wzór Newtona dla wielomianu \( f(x) = x^{3} - x^2 + 3 \) (podałem wyżej)
\( x_{n+1} = x_{n} - \frac{x^3_{n}-x^2_{n} +3}{3x^2_{n} -2x_{n}}, \ \ n=0,1,2, ..., N \) z punktem startowym \( x_{0} = -1.\)
Jakie dwa \( y \) dla tej funkcji wielomianowej?
\( -x = e^{x} \) mnożymy stronami przez \( -1 \)
\( -x = e^{x} \ \ | \cdot (-1)\)
to mamy
\( x = -e^{x},\)
a nie
\( x = e^{x}.\)
Rozumiem, że ten wspólny wykres prostej \( y = x \) i funkcji \( f(x) = e^{x} \) ma pomóc w ustaleniu punktu początkowego (startu) metody Newtona.
Wykresy funkcji \( y=x \) i \( y = e^{x} \) nie mają punktów wspólnych.
W przedstawionym załączniku mamy wykresy funkcji \( y = x, \) i \( y = -e^{x}, \) a nie \( y=x \) i \( y = e^{x}.\)
Wzór Newtona dla funkcji \( g(x) = e^{x} + x \) powinien mieć postać:
\( x_{k+1} = \frac{e^{x_{k}} +x_{k}}{ e^{x_{k}} +1}, \ \ k= 0,1,2,...,N \)
Wzór Newtona dla wielomianu \( f(x) = x^{3} - x^2 + 3 \) (podałem wyżej)
\( x_{n+1} = x_{n} - \frac{x^3_{n}-x^2_{n} +3}{3x^2_{n} -2x_{n}}, \ \ n=0,1,2, ..., N \) z punktem startowym \( x_{0} = -1.\)
Jakie dwa \( y \) dla tej funkcji wielomianowej?
-
- Fachowiec
- Posty: 1937
- Rejestracja: 01 sty 2021, 09:38
- Podziękowania: 4 razy
- Otrzymane podziękowania: 460 razy
Re: Metoda Newtona
OCTAVE 7.1.0.
Wyniki
W czwartej iteracji otrzymujemy wynik \( x^{* } = -0,567143 \) z dokładnością \( \varepsilon = 10^{-4}.\)
Kod: Zaznacz cały
% Metoda Newtona rozwiązywania równań nieliniowych f(x)=0.
iter = 0;
u = feval(f, x0);
v = feval(df,x0);
err=abs(u/v);
disp('______________________________________________________')
disp('iteracja x f(x) df(x) |xn+1-xn| ')
disp('_______________________________________________________')
fprintf('%2.0f %12.6f %12.6f 12.6f\n', iter, x0, u, v)
while(err>tol)
(iter <= n)
(v ~= 0)
x1 = x0-u/v;
err = abs(x1-x0);
x0=x1;
u =feval(f,x0);
v = feval(df,x0);
iter = iter+1;
fprintf('%2.0f %12.6f %12.6f %12.6f %12.6f\n',iter,x0, u, v, err)
end
if (v==0)
disp('dzielenie przez zero')
end
if(iter>n)
disp('Metoda Newtona nie jest zbieżna')
end
function f = f1(x)
f= e.^(x)+x;
function f = df1(x)
f= e.^(x)+1;
Wyniki
Kod: Zaznacz cały
>> newton1('f1','df1',0,10^(-4),40)
______________________________________________________________
iteracja x f(x) df(x) |xn+1-xn|
______________________________________________________________
0 0.000000 1.000000 1.000000
1 -0.500000 0.106531 1.606531 0.500000
2 -0.566311 0.001305 1.567616 0.066311
3 -0.567143 0.000000 1.567143 0.000832
4 -0.567143 0.000000 1.567143 0.000000