W ekonometrii wyznaczanie estymatorów parametrów opiera się na optymalizacji funkcji błędu. Załóżmy, że mamy model nieliniowy oparty na funkcji zależnej tylko od jednego nieznanego parametru. Wtedy funkcja błędu estymatora będzie funkcją jednej zmiennej. Niech \(\displaystyle{ f(B)}\) będzie ą funkcją, załóżmy dodatkowo, że jest to funkcja wypukła. Zaproponuj metodę wyznaczania punktu, w którym funkcja \(\displaystyle{ f(B)}\) osiąga minimum i napisz do tej metody odpowiednia procedurę.
Czy ktoś może mi napisać, z której strony "ugryźć" to zadanie?
ekonometria w Pascalu
-
- Użytkownik
- Posty: 273
- Rejestracja: 18 paź 2007, o 21:35
- Płeć: Kobieta
- Lokalizacja: Wrocław
- Podziękował: 22 razy
ekonometria w Pascalu
F(x) - nasza wypukła funkcja, wypukła więc istnieje tylko jedno minimum.
minimum(początek, koniec, dokładność)
Zakładam, że początek \(\displaystyle{ \le}\) koniec.
W każdym kroku długość przedziału zmniejsz się o \(\displaystyle{ \frac{1}{4}}\), szkoda, że nie o połowę.
Dla danych początek, koniec, eps potrafimy policzyć w ilu krokach uzyskamy rozwiązanie. No w ilu?
Wartość funkcji na końcach przedziałów liczymy tylko raz (poza pierwszą iteracją), to miła cecha.
Obliczenia przerywane są gdy długość przedziału w którym znajduje się minimum będzie mniejsza od zadanego eps.
Funkcja zwraca "środek" ostatecznego zakresu, ale równie dobrze może zwracać jego początek albo koniec bo nic nie wiemy o minimlizowanej funkcji. W "średnim" przypadku tak chyba będzie lepiej.
Nie obliczamy wartości funkcji poza zadanym przedziałem a nawet na jego końcach, a to jest ważne.
minimum(początek, koniec, dokładność)
Zakładam, że początek \(\displaystyle{ \le}\) koniec.
W każdym kroku długość przedziału zmniejsz się o \(\displaystyle{ \frac{1}{4}}\), szkoda, że nie o połowę.
Dla danych początek, koniec, eps potrafimy policzyć w ilu krokach uzyskamy rozwiązanie. No w ilu?
Wartość funkcji na końcach przedziałów liczymy tylko raz (poza pierwszą iteracją), to miła cecha.
Obliczenia przerywane są gdy długość przedziału w którym znajduje się minimum będzie mniejsza od zadanego eps.
Funkcja zwraca "środek" ostatecznego zakresu, ale równie dobrze może zwracać jego początek albo koniec bo nic nie wiemy o minimlizowanej funkcji. W "średnim" przypadku tak chyba będzie lepiej.
Nie obliczamy wartości funkcji poza zadanym przedziałem a nawet na jego końcach, a to jest ważne.
Kod: Zaznacz cały
function F(x:real):real;
begin
F:=sqr(x-5)+2 { x^2 - 10x + 27 }
end;
function minimum(p,k,eps:real):real;
var c,p1,k1:real;
begin
repeat
c:=(k+p)/2.0;
p1:=(p+c)/2; k1:=(k+c)/2;
if F(p1)<F(k1) then k:=k1
else p:=p1;
until k-p<eps;
minimum:=(p+k)/2
end;
var r:real;
begin
r:=minimum(1, 10, 1e-4);
writeln('F(', r, ') = ', F(r))
end.