MN03LAB: Różnice pomiędzy wersjami

Z Studia Informatyczne
Przejdź do nawigacjiPrzejdź do wyszukiwania
Przykry (dyskusja | edycje)
mNie podano opisu zmian
Przykry (dyskusja | edycje)
mNie podano opisu zmian
Linia 2: Linia 2:
==Ćwiczenia. Własności arytmetyki zmiennopozycyjnej.==
==Ćwiczenia. Własności arytmetyki zmiennopozycyjnej.==


<div style="border-top-style:solid; border-top-width:thin; margin-top:1em; padding-top,padding-bottom:1em;">
<div style="margin-top:1em; padding-top,padding-bottom:1em;">
<span  style="font-variant:small-caps; color: exeA6ABF;">Ćwiczenie: Szeregi zbieżne(?)</span>  
<span  style="display: block; background-color:#fefeee; font-variant:small-caps; color: exeA6ABF;">Ćwiczenie: Szeregi zbieżne(?)</span>  
<div class="exercise">
<div class="exercise">


Linia 24: Linia 24:
</div></div>
</div></div>


<div style="margin-top:1em; padding-top,padding-bottom:1em;">
<div class="mw-collapsible mw-made=collapsible mw-collapsed"><span class="mw-collapsible-toogle mw-collapsible-toogle-default style="font-variant:small-caps">Rozwiązanie </span><div class="mw-collapsible-content" style="display:none">
<span style="font-variant:small-caps;">Rozwiązanie</span>  
 
<div class="solution">
Rozpatrz na przykład takie szeregi zbieżne:
Rozpatrz na przykład takie szeregi zbieżne:
* Szereg zerowy (numerycznie dostajesz oczywiście też 0)
* Szereg zerowy (numerycznie dostajesz oczywiście też 0)
Linia 38: Linia 37:
</div></div>
</div></div>


<div style="border-top-style:solid; border-top-width:thin; margin-top:1em; padding-top,padding-bottom:1em;">
<div style="margin-top:1em; padding-top,padding-bottom:1em;">
<span  style="font-variant:small-caps; color: exeA6ABF;">Ćwiczenie</span>  
<span  style="display: block; background-color:#fefeee; font-variant:small-caps; color: exeA6ABF;">Ćwiczenie</span>  
<div class="exercise">
<div class="exercise">
Dla kolejnych <math>\displaystyle N</math>, wyznacz <math>\displaystyle N</math>-tą sumę częściową szeregu Taylora dla funkcji wykładniczej, gdy <math>\displaystyle x=-90</math>:
Dla kolejnych <math>\displaystyle N</math>, wyznacz <math>\displaystyle N</math>-tą sumę częściową szeregu Taylora dla funkcji wykładniczej, gdy <math>\displaystyle x=-90</math>:
Linia 54: Linia 53:
</div></div>
</div></div>


<div style="margin-top:1em; padding-top,padding-bottom:1em;">
<div class="mw-collapsible mw-made=collapsible mw-collapsed"><span class="mw-collapsible-toogle mw-collapsible-toogle-default style="font-variant:small-caps">Rozwiązanie </span><div class="mw-collapsible-content" style="display:none">
<span style="font-variant:small-caps;">Rozwiązanie</span>  
<div class="solution">
Zastosowanie naszego algorytmu dla <math>\displaystyle x=-90</math> daje w wyniku (dla arytmetyki
Zastosowanie naszego algorytmu dla <math>\displaystyle x=-90</math> daje w wyniku (dla arytmetyki
podwójnej precyzji) sumę równą około <math>\displaystyle 10^{30}</math>,  
podwójnej precyzji) sumę równą około <math>\displaystyle 10^{30}</math>,  
Linia 70: Linia 67:
</div></div>
</div></div>


<div style="border-top-style:solid; border-top-width:thin; margin-top:1em; padding-top,padding-bottom:1em;">
<div style="margin-top:1em; padding-top,padding-bottom:1em;">
<span  style="font-variant:small-caps; color: exeA6ABF;">Ćwiczenie</span>  
<span  style="display: block; background-color:#fefeee; font-variant:small-caps; color: exeA6ABF;">Ćwiczenie</span>  
<div class="exercise">
<div class="exercise">
Już wcześniej stwierdziliśmy, że wyznaczanie <math>\displaystyle e \approx (1 + 1/n)^n</math> dla dużego
Już wcześniej stwierdziliśmy, że wyznaczanie <math>\displaystyle e \approx (1 + 1/n)^n</math> dla dużego
Linia 78: Linia 75:
</div></div>
</div></div>


<div style="border-top-style:solid; border-top-width:thin; margin-top:1em; padding-top,padding-bottom:1em;">
<div style="margin-top:1em; padding-top,padding-bottom:1em;">
<span  style="font-variant:small-caps; color: exeA6ABF;">Ćwiczenie</span>  
<span  style="display: block; background-color:#fefeee; font-variant:small-caps; color: exeA6ABF;">Ćwiczenie</span>  
<div class="exercise">
<div class="exercise">
Jak wiadomo, szereg harmoniczny <math>\displaystyle \sum_{n=1}^\infty 1/n</math> jest rozbieżny.
Jak wiadomo, szereg harmoniczny <math>\displaystyle \sum_{n=1}^\infty 1/n</math> jest rozbieżny.
Linia 106: Linia 103:
</pre></div>
</pre></div>
   
   
<div class="mw-collapsible mw-made=collapsible mw-collapsed"><span class="mw-collapsible-toogle mw-collapsible-toogle-default style="font-variant:small-caps">Wskaz�wka </span><div class="mw-collapsible-content" style="display:none">
<div class="mw-collapsible mw-made=collapsible mw-collapsed"><span class="mw-collapsible-toogle mw-collapsible-toogle-default style="font-variant:small-caps">Wskazówka </span><div class="mw-collapsible-content" style="display:none">
<div style="font-size:smaller; background-color:#efe"> Policz, ile mniej więcej obrotów pętli potrzeba, by suma przestała rosnąć. </div>
<div style="font-size:smaller; background-color:#efe"> Policz, ile mniej więcej obrotów pętli potrzeba, by suma przestała rosnąć. </div>
</div></div>
</div></div>
Linia 112: Linia 109:
</div></div>
</div></div>


<div style="margin-top:1em; padding-top,padding-bottom:1em;">
<div class="mw-collapsible mw-made=collapsible mw-collapsed"><span class="mw-collapsible-toogle mw-collapsible-toogle-default style="font-variant:small-caps">Rozwiązanie </span><div class="mw-collapsible-content" style="display:none">
<span style="font-variant:small-caps;">Rozwiązanie</span>  
<div class="solution">
Nasza suma przekroczy wartość 20, więc aby <code>20 + dskladnik <nowiki>=</nowiki><nowiki>=</nowiki> 20</code>, musi
Nasza suma przekroczy wartość 20, więc aby <code>20 + dskladnik <nowiki>=</nowiki><nowiki>=</nowiki> 20</code>, musi
być dskładnik <math>\displaystyle \approx 10^{-15}</math> (lub więcej). Tymczasem zakres liczb typu integer wynosi
być dskładnik <math>\displaystyle \approx 10^{-15}</math> (lub więcej). Tymczasem zakres liczb typu integer wynosi
Linia 128: Linia 123:
</div></div>
</div></div>


<div style="border-top-style:solid; border-top-width:thin; margin-top:1em; padding-top,padding-bottom:1em;">
<div style="margin-top:1em; padding-top,padding-bottom:1em;">
<span  style="font-variant:small-caps; color: exeA6ABF;">Ćwiczenie</span>  
<span  style="display: block; background-color:#fefeee; font-variant:small-caps; color: exeA6ABF;">Ćwiczenie</span>  
<div class="exercise">
<div class="exercise">
Jak szybko i na jakiej wysokości musiałby lecieć samolot npla, aby
Jak szybko i na jakiej wysokości musiałby lecieć samolot npla, aby
Linia 136: Linia 131:
</div></div>
</div></div>


<div style="border-top-style:solid; border-top-width:thin; margin-top:1em; padding-top,padding-bottom:1em;">
<div style="margin-top:1em; padding-top,padding-bottom:1em;">
<span  style="font-variant:small-caps; color: exeA6ABF;">Ćwiczenie: Zadanie o wyznaczaniu pierwiastka kwadratowego metodą Newtona</span>  
<span  style="display: block; background-color:#fefeee; font-variant:small-caps; color: exeA6ABF;">Ćwiczenie: Zadanie o wyznaczaniu pierwiastka kwadratowego metodą Newtona</span>  
<div class="exercise">
<div class="exercise">


Linia 145: Linia 140:
</div></div>
</div></div>


<div style="margin-top:1em; padding-top,padding-bottom:1em;">
<div class="mw-collapsible mw-made=collapsible mw-collapsed"><span class="mw-collapsible-toogle mw-collapsible-toogle-default style="font-variant:small-caps">Rozwiązanie </span><div class="mw-collapsible-content" style="display:none">
<span style="font-variant:small-caps;">Rozwiązanie</span>  
 
<div class="solution">
Jak pamiętamy, <math>\displaystyle a = (1+f)2^p = \widetilde{f} 2^{p+1}</math>,
Jak pamiętamy, <math>\displaystyle a = (1+f)2^p = \widetilde{f} 2^{p+1}</math>,
gdzie <math>\displaystyle \frac{1}{2}\leq \widetilde{f} < 1</math> oraz <math>\displaystyle p\in N</math>. Stąd
gdzie <math>\displaystyle \frac{1}{2}\leq \widetilde{f} < 1</math> oraz <math>\displaystyle p\in N</math>. Stąd
Linia 165: Linia 159:
</div></div>
</div></div>


<div style="border-top-style:solid; border-top-width:thin; margin-top:1em; padding-top,padding-bottom:1em;">
<div style="margin-top:1em; padding-top,padding-bottom:1em;">
<span  style="font-variant:small-caps; color: exeA6ABF;">Ćwiczenie: Zadanie o wyznaczaniu odwrotności bez dzielenia metodą Newtona</span>  
<span  style="display: block; background-color:#fefeee; font-variant:small-caps; color: exeA6ABF;">Ćwiczenie: Zadanie o wyznaczaniu odwrotności bez dzielenia metodą Newtona</span>  
<div class="exercise">
<div class="exercise">


Linia 175: Linia 169:
</div></div>
</div></div>


<div style="margin-top:1em; padding-top,padding-bottom:1em;">
<div class="mw-collapsible mw-made=collapsible mw-collapsed"><span class="mw-collapsible-toogle mw-collapsible-toogle-default style="font-variant:small-caps">Rozwiązanie </span><div class="mw-collapsible-content" style="display:none">
<span style="font-variant:small-caps;">Rozwiązanie</span>  
<div class="solution">
Jak pamiętamy, <math>\displaystyle a = (1+f)2^p</math>, skąd <math>\displaystyle \frac{1}{a} = \frac{1}{1+f}2^{-p}</math>.
Jak pamiętamy, <math>\displaystyle a = (1+f)2^p</math>, skąd <math>\displaystyle \frac{1}{a} = \frac{1}{1+f}2^{-p}</math>.
Wystarczy więc przybliżyć <math>\displaystyle \frac{1}{1+f}</math>. Ponieważ dla <math>\displaystyle 0 \leq f < 1</math>,
Wystarczy więc przybliżyć <math>\displaystyle \frac{1}{1+f}</math>. Ponieważ dla <math>\displaystyle 0 \leq f < 1</math>,
Linia 216: Linia 208:
</div></div>
</div></div>


<div style="border-top-style:solid; border-top-width:thin; margin-top:1em; padding-top,padding-bottom:1em;">
<div style="margin-top:1em; padding-top,padding-bottom:1em;">
<span  style="font-variant:small-caps; color: exeA6ABF;">Ćwiczenie</span>  
<span  style="display: block; background-color:#fefeee; font-variant:small-caps; color: exeA6ABF;">Ćwiczenie</span>  
<div class="exercise">
<div class="exercise">
Niech <math>\displaystyle 0<a_1<a_2<\cdots < a_n</math>. Czy z punktu widzenia  
Niech <math>\displaystyle 0<a_1<a_2<\cdots < a_n</math>. Czy z punktu widzenia  
Linia 224: Linia 216:
</div></div>
</div></div>


<div style="margin-top:1em; padding-top,padding-bottom:1em;">
<div class="mw-collapsible mw-made=collapsible mw-collapsed"><span class="mw-collapsible-toogle mw-collapsible-toogle-default style="font-variant:small-caps">Rozwiązanie </span><div class="mw-collapsible-content" style="display:none">
<span style="font-variant:small-caps;">Rozwiązanie</span>  
<div class="solution">
Od najmniejszej do największej.
Od najmniejszej do największej.
</div></div>
</div></div>


<div style="border-top-style:solid; border-top-width:thin; margin-top:1em; padding-top,padding-bottom:1em;">
<div style="margin-top:1em; padding-top,padding-bottom:1em;">
<span  style="font-variant:small-caps; color: exeA6ABF;">Ćwiczenie</span>  
<span  style="display: block; background-color:#fefeee; font-variant:small-caps; color: exeA6ABF;">Ćwiczenie</span>  
<div class="exercise">
<div class="exercise">
Aby obliczyć <math>\displaystyle S(a,b)=a^2-b^2</math> można zastosować  
Aby obliczyć <math>\displaystyle S(a,b)=a^2-b^2</math> można zastosować  
Linia 240: Linia 230:
</div></div>
</div></div>


<div style="border-top-style:solid; border-top-width:thin; margin-top:1em; padding-top,padding-bottom:1em;">
<div style="margin-top:1em; padding-top,padding-bottom:1em;">
<span  style="font-variant:small-caps; color: exeA6ABF;">Ćwiczenie</span>  
<span  style="display: block; background-color:#fefeee; font-variant:small-caps; color: exeA6ABF;">Ćwiczenie</span>  
<div class="exercise">
<div class="exercise">
Pokazać, że naturalny algorytm obliczania cosinusa  
Pokazać, że naturalny algorytm obliczania cosinusa  
Linia 255: Linia 245:
</div></div>
</div></div>


<div style="border-top-style:solid; border-top-width:thin; margin-top:1em; padding-top,padding-bottom:1em;">
<div style="margin-top:1em; padding-top,padding-bottom:1em;">
<span  style="font-variant:small-caps; color: exeA6ABF;">Ćwiczenie</span>  
<span  style="display: block; background-color:#fefeee; font-variant:small-caps; color: exeA6ABF;">Ćwiczenie</span>  
<div class="exercise">
<div class="exercise">
Pokazać, że naturalny algorytm obliczania  
Pokazać, że naturalny algorytm obliczania  
Linia 274: Linia 264:
</div></div>
</div></div>


<div style="border-top-style:solid; border-top-width:thin; margin-top:1em; padding-top,padding-bottom:1em;">
<div style="margin-top:1em; padding-top,padding-bottom:1em;">
<span  style="font-variant:small-caps; color: exeA6ABF;">Ćwiczenie</span>  
<span  style="display: block; background-color:#fefeee; font-variant:small-caps; color: exeA6ABF;">Ćwiczenie</span>  
<div class="exercise">
<div class="exercise">
Niech <math>\displaystyle {\bf ALG}</math> będzie algorytmem numerycznie  
Niech <math>\displaystyle {\bf ALG}</math> będzie algorytmem numerycznie  
Linia 292: Linia 282:
</div></div>
</div></div>


<div style="border-top-style:solid; border-top-width:thin; margin-top:1em; padding-top,padding-bottom:1em;">
<div style="margin-top:1em; padding-top,padding-bottom:1em;">
<span  style="font-variant:small-caps; color: exeA6ABF;">Ćwiczenie</span>  
<span  style="display: block; background-color:#fefeee; font-variant:small-caps; color: exeA6ABF;">Ćwiczenie</span>  
<div class="exercise">
<div class="exercise">
Podaj przykład funkcji <math>\displaystyle f</math>, której miejsce zerowe <math>\displaystyle x^*</math> ma wspólczynnik
Podaj przykład funkcji <math>\displaystyle f</math>, której miejsce zerowe <math>\displaystyle x^*</math> ma wspólczynnik
Linia 302: Linia 292:
</div></div>
</div></div>


<div style="margin-top:1em; padding-top,padding-bottom:1em;">
<div class="mw-collapsible mw-made=collapsible mw-collapsed"><span class="mw-collapsible-toogle mw-collapsible-toogle-default style="font-variant:small-caps">Rozwiązanie </span><div class="mw-collapsible-content" style="display:none">
<span style="font-variant:small-caps;">Rozwiązanie</span>  
<div class="solution">
Ponieważ nasze zadanie to wyznaczenie <math>\displaystyle x^* = f^{-1}(0)</math>, to  
Ponieważ nasze zadanie to wyznaczenie <math>\displaystyle x^* = f^{-1}(0)</math>, to  
<center><math>\displaystyle  
<center><math>\displaystyle  

Wersja z 12:37, 29 sie 2006

Ćwiczenia. Własności arytmetyki zmiennopozycyjnej.

Ćwiczenie: Szeregi zbieżne(?)

Podaj przykłady zbieżnych szeregów postaci n=1an, którego N-te sumy częściowe obliczone w arytmetyce pojedynczej precyzji algorytmem

 
suma = 0.0;
for n = 1..N
	suma += <math>\displaystyle a_n</math>;

będą

  • ograniczone niezależnie od N, albo
  • numerycznie rozbieżne, to znaczy takie, że dla bardzo dużych N zachodzi

suma == Inf.

Wykonaj to samo zadanie, ale podając przykłady szeregów rozbieżnych (w arytmetyce dokładnej).

Rozwiązanie

Ćwiczenie

Dla kolejnych N, wyznacz N-tą sumę częściową szeregu Taylora dla funkcji wykładniczej, gdy x=90:

exn=0Nxnn!,

korzystając z algorytmu podanego w poprzednim zadaniu. Porównaj błąd: względny i bezwzględny w porównaniu do wartości wyznaczonej z wykorzystaniem funkcji bibliotecznej exp(). Powtórz następnie dla x=10.

Czy --- zgodnie z teorią matematyczną --- sumy te dążą do wartości ex. Objaśnij dokładnie, co się stało.

Rozwiązanie

Ćwiczenie

Już wcześniej stwierdziliśmy, że wyznaczanie e(1+1/n)n dla dużego n nie jest dobrym pomysłem. Przeprowadź eksperyment numeryczny potwierdzający to stwierdzenie i objaśnij jego wyniki.

Ćwiczenie

Jak wiadomo, szereg harmoniczny n=11/n jest rozbieżny. Spróbuj przewidzieć, jaki będzie efekt numerycznego wyznaczenia tej sumy w arytmetyce podwójnej precyzji przy użyciu poniższego kodu.

 
	int dlicznik;
	double dsuma, dstarasuma;
	double dskladnik;
	
	dstarasuma = 0.0; dsuma = 1.0; dlicznik = 1;
	while(dstarasuma != dsuma) 
	{
		dskladnik = 1.0/dlicznik;
		dstarasuma = dsuma;
		dsuma += dskladnik;
		dlicznik++;
	}
	printf("Suma = dsuma, dlicznik-1, dskladnik);
	 
	return(0);
}

Wskazówka
Rozwiązanie

Ćwiczenie

Jak szybko i na jakiej wysokości musiałby lecieć samolot npla, aby pocisk wystrzeliwany z działka z prędkością 7500 km/h nie trafił w cel, gdy potrzebne pierwiastki liczone są wzorem szkolnym?

Ćwiczenie: Zadanie o wyznaczaniu pierwiastka kwadratowego metodą Newtona

Dla zadanej liczby a>1, należy wyznaczyć przybliżenie a stosując metodę Herona. Zaproponuj dobre przybliżenie początkowe x0 wiedząc, że a jest liczbą maszynową typu double. Ile iteracji wystarczy, by osiągnąć ϵ-zadowalające przybliżenie?

Rozwiązanie

Ćwiczenie: Zadanie o wyznaczaniu odwrotności bez dzielenia metodą Newtona

Należy wyznaczyć przybliżenie 1a stosując metodę Newtona do równania 1xa=0. Zaproponuj dobre przybliżenie początkowe x0 wiedząc, że a jest liczbą maszynową typu double. Ile iteracji wystarczy, by osiągnąć ϵ-zadowalające przybliżenie?

Rozwiązanie

Ćwiczenie

Niech 0<a1<a2<<an. Czy z punktu widzenia błędów w flν lepiej jest policzyć sumę tych liczb w kolejności od najmniejszej do największej czy odwrotnie?

Rozwiązanie

Ćwiczenie

Aby obliczyć S(a,b)=a2b2 można zastosować dwa algorytmy: 𝐀𝐋𝐆1(a,b)=a*ab*b oraz 𝐀𝐋𝐆2(a,b)=(a+b)*(ab). Pokazać, że oba algorytmy są numerycznie poprawne, ale drugi z nich wywołuje mniejszy błąd względny wyniku w przypadku, gdy rdν(a)=a i rdν(b)=b.

Ćwiczenie

Pokazać, że naturalny algorytm obliczania cosinusa kąta między dwoma wektorami Parser nie mógł rozpoznać (nieznana funkcja „\inR”): {\displaystyle \displaystyle a, b\inR^n} ,

cos(a,b)=j=1najbj(j=1naj2)(j=1nbj2),

jest numerycznie poprawny. Oszacować błąd względny wyniku w flν.

Ćwiczenie

Pokazać, że naturalny algorytm obliczania Ax2 dla danej macierzy Parser nie mógł rozpoznać (nieznana funkcja „\inR”): {\displaystyle \displaystyle A\inR^{n\times n}} i wektora Parser nie mógł rozpoznać (nieznana funkcja „\inR”): {\displaystyle \displaystyle x\inR^n} jest numerycznie poprawny. Dokładniej,

flν(Ax2)=(A+E)x,

gdzie E22(n+2)nνA2. Ponadto, jeśli A jest nieosobliwa to

|flν(Ax2)Ax2|2(n+2)nν(A2A12)Ax2.

Ćwiczenie

Niech 𝐀𝐋𝐆 będzie algorytmem numerycznie poprawnym w zbiorze danych fF0, przy czym dla małych ν, flν(𝐀𝐋𝐆(f))=φ(yν), gdzie yνyKνy i K nie zależy od ν i f (y=N(f)). Pokazać, że w ogólności 𝐀𝐋𝐆 nie musi być "numerycznie poprawny po współrzędnych", tzn. w ogólności nie istnieje bezwzględna stała K1 taka, że dla małych ν i dla dowolnej fF0

|yν,jyj|K1ν|yj|,1jn,

gdzie y=(y1,,yn).

Ćwiczenie

Podaj przykład funkcji f, której miejsce zerowe x* ma wspólczynnik uwarunkowania

  • mały
  • duży
Rozwiązanie