/ Forside / Karriere / Uddannelse / Højere uddannelser / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
Højere uddannelser
#NavnPoint
Nordsted1 1588
erling_l 1224
ans 1150
dova 895
gert_h 800
molokyle 661
berpox 610
creamygirl 610
3773 570
10  jomfruane 570
matlab-spm. vedr. "norm"
Fra : Martin Jørgensen


Dato : 10-01-06 19:08

Hej,

Jeg ved godt der er en Matlab-gruppe, men det ville være rart med en
forklaring på dansk for en gangs skyld og så vil jeg tro at der også
(nok) er nogen herinde der kan svare tilfredsstillende på flg:

Betragt programmet:

N=10 % grid-points
x=(0:N-1)*0.7 % x-akse
y=sin(x) % y-akse
y2=x.*(0.4*sin(x-0.8)) % faseforskydning.
plot(x,y,x,y2)

Nu er jeg blevet gjort bekendt med at man vha. norm-kommandoen kan finde
afstanden (fejlen) mellem hvert punkt i de 2 kurver og det er jo meget
smart. Der er jo både en amplitude og en fasefejl. Noget med at der
findes forskellige normer, norm 1/2/uendelig osv. Aner ikke hvad
forskellen er, men ved godt at der står noget i den indbyggede hjælp...

Mit spørgsmål, er om der er nogen der ved hvorfor det er godt/smart at
dividere med kvadratrod N? Det er nemlig 2.håndsoplysninger jeg fik fra
én som havde hørt det fra en anden én, så jeg kan ikke lige komme videre
mht. hvorfor man skulle bruge norm og dividere med kvadratrod N, som
udtryk for fejlen... ?

Nærmere præcist, er der i det virkelige program tale om en analytisk og
en numerisk kurve og den numeriske er af 2.ordens nøjagtighed...


Med venlig hilsen / Best regards
Martin Jørgensen

--
---------------------------------------------------------------------------
Home of Martin Jørgensen - http://www.martinjoergensen.dk

 
 
Martin Jørgensen (13-01-2006)
Kommentar
Fra : Martin Jørgensen


Dato : 13-01-06 23:43

Martin Jørgensen wrote:
> Hej,
>
> Jeg ved godt der er en Matlab-gruppe, men det ville være rart med en
> forklaring på dansk for en gangs skyld og så vil jeg tro at der også
> (nok) er nogen herinde der kan svare tilfredsstillende på flg:
-snip-

Jeg har kigget lidt på den "udvidede" hjælp i Matlab og fundet ud af at
det som åbenbart er interessant er det der hedder RMS: Root Mean Square.
Fra elektronik-undervisningen kan jeg da huske at RMS er noget som er
relativt almindeligt, så der må være en herinde der kan fortælle noget
om det her:


x = [0 1 2 3]
x =
0 1 2 3

sqrt(0+1+4+9) % Euclidean length
ans =
3.7417

norm(x)
ans =
3.7417

n = length(x) % Number of elements
n =
4

rms = 3.7417/2 % rms = norm(x)/sqrt(n)
rms =
1.8708


Altså: x består af 4 tal. Den "Euclidean length" for x er 3,74. Det
dividerer man så med kvadratroden af 4 fordi der var 4 tal og får at RMS
= 1,87. Hvad udtrykker det eller hvad bruger man det til? Er det ikke
sådan en slags "middelværdi"?


Med venlig hilsen / Best regards
Martin Jørgensen

--
---------------------------------------------------------------------------
Home of Martin Jørgensen - http://www.martinjoergensen.dk

Niels L Ellegaard (16-01-2006)
Kommentar
Fra : Niels L Ellegaard


Dato : 16-01-06 11:38

> Øøhm, hvad skal det konvergere imod, helt teoretisk set (for uendeligt
> datasæt)?
>
> Hver eneste gang jeg kører programmet sker der noget nyt og nogen
> gange går kurven op og andre gange går den ned, udover at den også
> slår knæk indimellem

Hmm jeg fik ikke forklaret det ordentligt. Pointen er at hver gang du
kører programmet, så er værdien for i=6, N=10^6 stort set den samme.
Det følgende program udregner hvert af RMS-estimaterne 20 gange. For
i=1 er de ret forskellige, men for i=6 har alle estimaterne omtrent den
samme værdi

RMS=zeros(6,20);
for j=1:20
for i=1:6
N=10^i;
x=rand(N,1) - 0.5;
RMS(i,j) = norm(x)/sqrt(N);
end
end
plot(RMS)

I dette program er det enkelte X_1 beskrevet ved en uniform fordeling.
Du kan finde variansen var(X_1) i formel (26) på følgende side
http://mathworld.wolfram.com/UniformDistribution.html

> Kan du uddybe det? Hvorfor er det lige at de ikke er stokastisk uafhængige?

Det letteste er at kigge på et eksempel. Jeg har lige udført et lille
matlab-ekspermiment hvor jeg valgte et tilfældigt tal epsilon
(ligefordelt mellem 0 og 2*pi). Derefter udregnede jeg to værdierne X1
og X2 . Resultatet så således ud

octave:26> eps = rand(1)*2*pi;
octave:27> X1=sin(0) - sin(0-eps);
octave:28> X2=sin(0.1) - sin(0.1-eps)
X2 = 0.66529

Bemærk at jeg kun udskrev værdien af X2. Nu kan vi forsøge at bruge
X2 til at gætte værdien af X1. Det viser sig hurtigt at der kun er
få lovlige værdier af X1. Med andre ord giver værdien af X2 ekstra
information om værdien af X1. Derfor er de to variable ikke er
stokastisk uafhængige. Det hele kan selvfølgelig beskrives med
matematik.

http://mathworld.wolfram.com/ConditionalProbability.html
http://dirac.ruc.dk/~jl/E6/2004/del1.pdf

> Altså 2-normen er en slags standard-afvigelse, hvor det normale er at
> man siger VAR(Y) = <(Y - <Y>)^2>? Kan man sige det, eller hvad bruger
> man det til konkret?

Når man laver rumgeometri, bruger man 2-normen til at udregne længden
af en vektor.

længde = sqrt(x^2 + y^2 + z^2).

> Hvis man har en matrix M, hvad vil det så sige at den er
> "normal"? Jeg har set noget om at M*M^t = M^t*M, hvor M^t er den
> (konjugerede) transponerede?

Her er en definition på en normal matrix
http://mathworld.wolfram.com/NormalMatrix.html

> En Matlab-øvelse jeg har set går ud på at anvende 2-normen således: Plot
> ||MM^t - M^tM|| / ||M^2||, hvor ||=2-normen... Det må da være noget du
> kender til, måske?

Hvis M er en symmetrisk matrix, så giver norm(M) dig absolutværdien
af den største egenværdi.

octave:50> M=rand(2);M=M+M'-4
M =

-2.9928 -3.3226
-3.3226 -2.6551

octave:51> eig(M)
ans =

-6.15080
0.50300

octave:52> norm(M)
ans = 6.1508

http://www.mathworks.com/access/helpdesk/help/techdoc/ref/norm.html
http://mathworld.wolfram.com/MatrixNorm.html


Martin Jørgensen (17-01-2006)
Kommentar
Fra : Martin Jørgensen


Dato : 17-01-06 08:08

Niels L Ellegaard wrote:
>>Øøhm, hvad skal det konvergere imod, helt teoretisk set (for uendeligt
>>datasæt)?
>>
>>Hver eneste gang jeg kører programmet sker der noget nyt og nogen
>>gange går kurven op og andre gange går den ned, udover at den også
>>slår knæk indimellem
>
>
> Hmm jeg fik ikke forklaret det ordentligt. Pointen er at hver gang du
> kører programmet, så er værdien for i=6, N=10^6 stort set den samme.
> Det følgende program udregner hvert af RMS-estimaterne 20 gange. For
> i=1 er de ret forskellige, men for i=6 har alle estimaterne omtrent den
> samme værdi
>
> RMS=zeros(6,20);
> for j=1:20
> for i=1:6
> N=10^i;
> x=rand(N,1) - 0.5;
> RMS(i,j) = norm(x)/sqrt(N);
> end
> end
> plot(RMS)
>
> I dette program er det enkelte X_1 beskrevet ved en uniform fordeling.
> Du kan finde variansen var(X_1) i formel (26) på følgende side
> http://mathworld.wolfram.com/UniformDistribution.html

Tak for kommentarerne. Jeg kigger lidt på det senere. Tror jeg har nok
at kigge på nu...


Med venlig hilsen / Best regards
Martin Jørgensen

--
---------------------------------------------------------------------------
Home of Martin Jørgensen - http://www.martinjoergensen.dk

Niels L Ellegaard (15-01-2006)
Kommentar
Fra : Niels L Ellegaard


Dato : 15-01-06 06:45

I korte træk stammer din ligning fra følgende regel: Hvis du har N
uafhængige stokastiske variable, X_1,X_2..X_N, så kan du definere
variabelen Y=X_1+X_2... X_N. Denne variable vil opfylde

VAR(Y) = VAR(X_1) + VAR(X_2) +.. VAR(X_N)

Her er variansen VAR(Y) defineret ved

VAR(Y) = <(Y - <Y>)^2>

(I min angiver <Y> middelværdien af den stokastiske variable Y og
<(Y - <Y>)^2> angiver middelværdien af den stokastiske variabel (Y -
<Y>)^2.

Hvis de stokastiske variable X_1,X_2..X_N stammer fra den samme
fordeling, så gælder det VAR(X_1) = VAR(X_2) = ..... VAR(X_N). Dette
giver

VAR(Y) = N*VAR(X_1)

Hvis du tager kvadratroden på begge sider og dividerer med sqrt(N),
så får du (i din notation)

RMS = sqrt(VAR(X_1)) = sqrt(VAR(Y))/sqrt(N)

Pointen i denne ligning er at VAR(X_1) er uafhængig af N, så derfor
er RMS også uafhængig af N.

Hvis du ikke har et uendeligt datasæt, så vil der altid være støj
på dit estimat af RMS. Derfor kan du ikke kan simulere dig frem til
den eksakte værdi. Dette problem er stort for små datasæt, men hvis
datasættet er stort nok, så bør støjen forsvinde. Det følgende
matlab program illustrerer at dit estimat for RMS konvergerer for store
N.

for i=1:6
N=10^i;
x=rand(N,1) - 0.5;
RMS(i) = norm(x)/sqrt(N);
end
plot(RMS)

Du kan læse mere om varianser her

http://mathworld.wolfram.com/StandardDeviation.html
http://mathworld.wolfram.com/Variance.html
http://mathworld.wolfram.com/IndependentStatistics.html

I din første mail beskrev du et matlabprogram hvor dine datapunkter
X_i var givet ved

X_i=f(X_0 + i*dx) - f(X_0 + i*dx+ epsilon)

I dette tilfælde er datapunkterne ikke stokastisk uafhængige. Det
betyder at RMS ikke konvergerer for store N.

Jeg kender ikke de "officielle" metoder til at undersøge om to
periodiske funktioner, f(x) og g(x) er faseforskudte kopier af
hinanden, men i mangel på bedre kan du måske lede efter en variabel
eps, der maximimerer følgende integral

f(eps) = integral f(x)*g(x-eps) dx

Niels

PS: Du spurgte efter 1-normer, 2-normer og sum-normer. Du kan læse om
dem her:
http://mathworld.wolfram.com/VectorNorm.html


Martin Jørgensen (15-01-2006)
Kommentar
Fra : Martin Jørgensen


Dato : 15-01-06 16:49

Niels L Ellegaard wrote:
> I korte træk stammer din ligning fra følgende regel: Hvis du har N
> uafhængige stokastiske variable, X_1,X_2..X_N, så kan du definere
> variabelen Y=X_1+X_2... X_N. Denne variable vil opfylde
>
> VAR(Y) = VAR(X_1) + VAR(X_2) +.. VAR(X_N)

Ok, man lægger dem sammen...

> Her er variansen VAR(Y) defineret ved
>
> VAR(Y) = <(Y - <Y>)^2>
>
> (I min angiver <Y> middelværdien af den stokastiske variable Y og
> <(Y - <Y>)^2> angiver middelværdien af den stokastiske variabel (Y -
> <Y>)^2.
>
> Hvis de stokastiske variable X_1,X_2..X_N stammer fra den samme
> fordeling, så gælder det VAR(X_1) = VAR(X_2) = ..... VAR(X_N). Dette
> giver
>
> VAR(Y) = N*VAR(X_1)
>
> Hvis du tager kvadratroden på begge sider og dividerer med sqrt(N),
> så får du (i din notation)
>
> RMS = sqrt(VAR(X_1)) = sqrt(VAR(Y))/sqrt(N)

Ok...

> Pointen i denne ligning er at VAR(X_1) er uafhængig af N, så derfor
> er RMS også uafhængig af N.

hmm... Ok.

> Hvis du ikke har et uendeligt datasæt, så vil der altid være støj
> på dit estimat af RMS. Derfor kan du ikke kan simulere dig frem til
> den eksakte værdi. Dette problem er stort for små datasæt, men hvis
> datasættet er stort nok, så bør støjen forsvinde. Det følgende
> matlab program illustrerer at dit estimat for RMS konvergerer for store
> N.
>
> for i=1:6
> N=10^i;
> x=rand(N,1) - 0.5;
> RMS(i) = norm(x)/sqrt(N);
> end
> plot(RMS)

Øøhm, hvad skal det konvergere imod, helt teoretisk set (for uendeligt
datasæt)?

Hver eneste gang jeg kører programmet sker der noget nyt og nogen gange
går kurven op og andre gange går den ned, udover at den også slår knæk
indimellem

> Du kan læse mere om varianser her
>
> http://mathworld.wolfram.com/StandardDeviation.html
> http://mathworld.wolfram.com/Variance.html
> http://mathworld.wolfram.com/IndependentStatistics.html
>
> I din første mail beskrev du et matlabprogram hvor dine datapunkter
> X_i var givet ved
>
> X_i=f(X_0 + i*dx) - f(X_0 + i*dx+ epsilon)
>
> I dette tilfælde er datapunkterne ikke stokastisk uafhængige. Det
> betyder at RMS ikke konvergerer for store N.

Kan du uddybe det? Hvorfor er det lige at de ikke er stokastisk uafhængige?

> Jeg kender ikke de "officielle" metoder til at undersøge om to
> periodiske funktioner, f(x) og g(x) er faseforskudte kopier af
> hinanden, men i mangel på bedre kan du måske lede efter en variabel
> eps, der maximimerer følgende integral
>
> f(eps) = integral f(x)*g(x-eps) dx
>
> Niels
>
> PS: Du spurgte efter 1-normer, 2-normer og sum-normer. Du kan læse om
> dem her:
> http://mathworld.wolfram.com/VectorNorm.html

Tak. Der burde jeg have tænkt på at lede noget før... Nu dæmrer det en
smule, for det var da en god forklaring der var til at forstå

Altså 2-normen er en slags standard-afvigelse, hvor det normale er at
man siger VAR(Y) = <(Y - <Y>)^2>? Kan man sige det, eller hvad bruger
man det til konkret?

Et tillægsspørgsmål: Det lyder som om du har rimeligt tjek på matematik
generalt: Hvis man har en matrix M, hvad vil det så sige at den er
"normal"? Jeg har set noget om at M*M^t = M^t*M, hvor M^t er den
(konjugerede) transponerede?

En Matlab-øvelse jeg har set går ud på at anvende 2-normen således: Plot
||MM^t - M^tM|| / ||M^2||, hvor ||=2-normen... Det må da være noget du
kender til, måske?

(Lidt længere forklaring, er at det hænger sammen med nogen egenværdier
fra matrixen M, der igen stammer fra en Fourier-analyse (her er jeg lidt
ude på dybt vand))


Med venlig hilsen / Best regards
Martin Jørgensen

--
---------------------------------------------------------------------------
Home of Martin Jørgensen - http://www.martinjoergensen.dk

Søg
Reklame
Statistik
Spørgsmål : 177558
Tips : 31968
Nyheder : 719565
Indlæg : 6408926
Brugere : 218888

Månedens bedste
Årets bedste
Sidste års bedste