Matlab-tips til Oppgave 2 Numerisk integrasjon (a) Velg ut maks 10 passende punkter fra øvre og nedre del av hysteresekurven. Bruk punktene som input til Matlab og lag et plot. Vi definerer tre vektorer H, Bn og Bo, der H inneholder x-verdiene til de valgte punktene, mens Bn og Bo inneholder y-verdiene til de valgte punktene for henholdsvis den nedre og den øvre hysteresekurven. Dette kan f.eks. gjøres på følgende måte: H=[-7, -5, -3, -1, 0, 1, 3, 5, 7]; Bo=[-5.6, -5.1, -4.1, 0, 3.1, 4.1, 4.8, 5.3, 5.7]; Bn=[-5.6, -5.3, -4.8, -3.9, -3.1, 0.1, 4.0, 4.9, 5.5]; Verdiene som dere plukker ut kommer selvfølgelig til å være forskjellige fra disse verdiene her. For å plotte hysteresekurven bruker vi Matlab-funksjonen plot. Vi ber Matlab om å plotte Bo og Bn som funksjoner av H i det samme plottet: plot(h,bo,h,bn); For mer detaljert informasjon om plot-funksjonen og hvordan denne brukes kan vi skrive help plot i kommandoviduet i Matlab. Dette gjelder for alle innebygde funksjoner i Matlab. (b) Bruk trapesmetoden til å finne hysteresetapet. Hva er usikkerheten nå? Vi bruker den innebygde Matlab-funksjonen trapz for å beregne integralet numerisk. Dette kan gjøres slik: IntNum=trapz(H,Bo-Bn); Legg merke til at vi integrerer B-feltet over H rundt den lukkede kurven. Dette er det motsatte av det som er definert i integralet som gir hysteresetapet, men iom. at integrasjonsområdet er en lukket kurve så blir integralet det samme. For å få det numeriske tallet på hysteresetapet må vi gange integralet med volumet av ringen og konversjonsfaktorene fra centimeter til H 1
og fra centimeter til B. For å beregne usikkerheten i dette svaret må vi følge prosedyren som er beskrevet i heftet Beregning av usikkerheter som dere finner på hjemmesiden til kurset. Polynomtilpasning (a) Bruk verktøyet polytool i Matlab til å finne en analytisk tilpasning. Matlab-funksjonen polytool tar tre argumenter. Det første er en vektor som definerer x-verdiene til de valgte punktene, det andre er en vektor som definerer y-verdiene til de valgte punktene, mens det siste argumentet er ordenen på polynomet som vi vil tilpasse til målepunktene. La oss først se på kun den øvre hysteresekurven. Dersom vi vil tilpasse et fjerdegradspolynom til denne, kan vi gjøre det slik: polytool(h,bo,4); Matlab vil da plotte både målepunktene og det fjerdegradspolynomet som gir den beste tilpasningen til disse. For å vite hva dette fjerdegradspolynomet faktisk er, må vi be Matlab om å eksportere koeffisientene til dette polynomet. Vi gjør dette ved å klikke på knappen Export -> Parameters i figur-viduet. Det blir da opprettet en vektor som heter beta og som inneholder koeffisientene. Vi definerer så dette polynomet som en symbolsk funksjon: syms pos; %Vi definerer pos som en symbolsk variabel ovreb = beta(1)*pos^4+beta(2)*pos^3+beta(3)*pos^2... +beta(4)*pos+beta(5); Vi gjentar så det samme for den nedre hysteresekurven og definerer en tilsvarende funksjon nedreb som gir det tilpassede polynomet til den nedre hysteresekurven. (b) Plot hysteresekurven med polynomtilpasning sammen med de innleste målepunktene. Vi bruker ezplot for å plotte fjerdegradskurven og plot for å plotte målepunktene: ezplot(ovreb,[-7,7]); 2
hold on % Dette forteller Matlab at det neste plottet skal % plottes i samme figur som over. plot(h,bo, o ); % Den siste parameteren forteller Matlab at % den kun skal plotte målepunktene og ingen heltrukne % linjer mellom dem. (c) Bruk de funnede polynomene til å finne hysteresetapet. Hva er usikkerheten nå? Vi kan beregne integralet som inngår i uttrykket for hysteresetapet ved å bruke Matlab-funksjonen quadl. Denne beregner det bestemte integralet av en funksjon definert ved symbolske variabler. Integralet vårt blir da: IntPol=quadl(ovreB-nedreB,-7,7); Dette svaret må igjen ganges med volumet og konversjonsfaktorene for å få den korrekte numeriske verdien på hysteresetapet. For beregning av usikkerheten i dette svaret se heftet om beregning av usikkerheter. Ikke-lineær tilpasning (a) Sett opp en parametrisert tanh-funksjon Vi må definere en tanh-funksjon med et sett parametre som tillater at funksjonen kan forskyves og skaleres i både x- og y-retning. En slik funksjon vil ha følgende matematiske form: f(x) = a 1 + a 2 tanh (a 3 x + a 4 ) der a 1 og a 4 forskyver, mens a 2 og a 3 skalerer funksjonen i henholdsvis y- og x-retning. (b) Sett opp den parametriserte funksjonen fra (a) i Matlab på den formen nlintool krever. Vi bruker inline for å definere funksjonen som en parametrisert funksjon med komponentene i vektoren a som parametre og med x som variabel. La oss kun se på den øvre hyseteresekurve. Prosedyren blir identisk for den nedre kurven. Den parametriserte tanh-funksjonen for den øverste kurven defineres 3
ved følgende Matlab-kode: paramtanho=inline( a(1)+a(2)*tanh(a(3)*x+a(4)), a, x ); (c) Bruk nlintool til å finne analytiske uttrykk for øvre og nedre del av hysteresekurven. Sett opp funksjonene og plott dem vha. ezplot. Matlab-funksjonen nlintool tar fire argumenter. De to første er vektorer bestående av henholdsvis x- og y-verdiene av målepunktene, det tredje er den parametriserte funksjonen som skal tilpasses verdiene, mens det siste er en vektor bestående av startverdier for de parametrene som skal bestemmes. Før vi bruker nlintool må vi først definere startverdiene for vektoren a. Disse verdiene kan være hva som helst bare de ikke er null. La oss definere de lik én: a=ones(1,4); % a defineres som en 1x4 matrise, dvs. en vektor, % med enerne som komponenter Vi lar så nlintool bestemme de parametrene som gir best tilpasning til dataene: nlintool(h,bo,paramtanho,a); Når vi kjører denne kommandoen vil det sprette opp et vindu der vi kan se både målepunktene og den tilpassede funksjonen. Verdien på parametrene finner vi ved å eksportere disse på samme måte som vi gjorde i forrige oppgave. De eksporterte parametrene vil da lagres i form av en 4-dimensjonal vektor som heter beta (dersom vi velger det navnet som foreslås av Matlab). Vi definerer så den tilpassede funksjonen som en symbolsk funksjon: syms pos; tanho=paramtanho(beta,pos); Vi definerer en funksjon tanhn for den nedre hysteresekurven på tilsvarende måte. Disse plottes så i samme figur ved å bruke ezplot og hold on: ezplot(tanho,[-7,7]); hold on 4
ezplot(tanhn,[-7,7]); (d) Bruk de funnede funksjonene til å finne hysteresetapet. Anslå usikkerheten. Arealet mellom de to hysteresekurvene finner vi på samme måte som i forrige oppgave, dvs. ved å bruke quadl: IntTanh=quadl(tanho-tanhn,-7,7); Svaret vi får her ganges så med volumet og konversjonsfaktorene for å få en numerisk verdi på hysteresetapet. Usikkerheten i dette svaret beregnes på samme måte som i polynomoppgaven. 5