MATLAB MATrix LABoratory avancerad ”räknedosa” visualisering av data

Slides:



Advertisements
Liknande presentationer
Talföljder formler och summor
Advertisements

Kap 1 - Algebra och linjära modeller
BENÄMNA lätta ord SPRÅKTRÄNING VID AFASIKg VIII
Programstruktur: C för enchipsdatorer
Många studenter använder en LCD-display till sin programmeringsuppgift
Funktioner och programorganisation
1 Listor En sekvens värden av samma typ Nr 5. 2 Listor Sekvens av värden, element Variabelt antal Alla med samma typ Bara första elementet direkt åtkomligt.
2D1311 Programmeringsteknik med PBL
1 Ingenjörsmetodik IT & ME 2007 Föreläsare Dr. Gunnar Malm.
1 Ingenjörsmetodik IT & ME Dagens tema Att tänka rätt är stort att tänka fritt är större MATLAB programmering är väldigt kreativt men minsta tecken.
Föreläsning 10 Kurvanpassning som en del av problemlösning med datorer
De fundamentala datatyperna
Föreläsning 15 Matlab överkurs KTH, CSC, Vahid Mosavat.
MS Excel 2007 Dag 1 Lärare: Mahmud Al Hakim. Agenda 1.Börja arbeta med Excel Hantera arbetsböcker 3.Formler 4.Formatera 5.Diagram Att läsa: sid.
1 Ingenjörsmetodik IT & ME 2009 Föreläsare Dr. Gunnar Malm.
Operatorer.
Eddie Arnold - Make The World Go Away Images colorées de par le monde Déroulement automatique ou manuel à votre choix 1 för dig.
Föreläsning 12 Matlab J-uppgiften.
Föreläsning 13 Allt om tentan. Sistaminutenhjälp: På fredag 17 december kl 12 sitter Linda i kemi-fiket och svarar på frågor.
Föreläsning 2 Datalogi för E1 2D1343
Föreläsning 2 Primitiva datatyper Variabler och konstanter Tilldelning Inläsning Operatorer Villkorssatsen if Slingor: while och for.
Karolinska Institutet, studentundersökning Studentundersökning på Karolinska Institutet HT 2013.
Punktprevalensmätning av trycksår 2011, v.40 Resultat från landstingen
Bastugatan 2. Box S Stockholm. Blad 1 Läsarundersökning Maskinentreprenören 2007.
| Trycksår Kommun/Områdes-skillnader (inklusive könsdimensionen) Dennis Nordvall Statistiker/Datamanager,
Programmering B PHP Lektion 2
1 Funktioner Nr 3 Funktionstyper, högre ordningens funktioner och polymorfism.
Enkätresultat för Grundskolan Elever 2014 Skola:Hällby skola.
Sveriges utrikeshandel (Andelar i procent) ImportExport EU (25) EFTA NAFTA Central- och Östeuropa Asien - Japan - Kina Övriga 59,9.
Föreläsning 2 Kort Översikt Över Javaspråket. Källkodsformat Unicode används åäöμψζ tillåtna Inte alla miljöer klarar av det Källkod Bytekod Java VM för.
1 Vänsterskolan Debattartiklar. 2 Aktuell krok 3 Aktuella krokar 1. Direkt krok.
Hittarps IK Kartläggningspresentation år 3.
Från Gotland på kvällen (tågtider enligt 2007) 18:28 19:03 19:41 19:32 20:32 20:53 21:19 18:30 20:32 19:06 19:54 19:58 20:22 19:01 21:40 20:44 23:37 20:11.
Arbetspensionssystemet i bilder Bildserie med centrala uppgifter om arbetspensionssystemet och dess funktion
Det handlar om multiplikation
TÄNK PÅ ETT HELTAL MELLAN 1-50
Introduktion till Matlab Föreläsning 2
Listor En lista är en föränderlig ordnad samling objekt.
Kouzlo starých časů… Letadla Pár foteček pro vzpomínku na dávné doby, tak hezké snění… M.K. 1 I Norrköping får man inte.
Best pictures on the internet 2007 Awards 1http:// Är vänsteralliansen trovärdig i Norrköping.
Programspråk Två olika typer av program omvandlar högnivå till lågnivå program: Interpreterande program och kompilerande program. Python är ett interpreterande.
Funktioner, styrstrukturer, manipulering av matriser
1 Föreläsning 3 programmeringsteknik och Matlab 2D1312/ 2D1305 Matlab fortsättning Funkioner, styrstrukturer, manipulering av matriser.
Grundläggande programmering
Best pictures on the internet 2007 Awards 1http:// (s), (v), och (mp) i Norrköping, gillar inte att vi använder grundlagarna.
Styrteknik: Grundläggande logiska funktioner D2:1
2 Agenda 1. Börja arbeta med Excel Hantera arbetsböcker 3. Formler 4. Formatera 5. Diagram 6. Skriva ut 7. Referenser mellan kalkylblad 8. Arbeta.
Arbetspensionssystemet i bilder Bildserie med centrala uppgifter om arbetspensionssystemet och dess funktion
1 Föreläsning 6 Programmeringsteknik och Matlab 2D1312/2D1305 Metoder & parametrar Array API och klassen ArrayList.
1 Föreläsning 5 Programmeringsteknik och Matlab 2D1312/2D1305 Repetition Metoder Array API och klassen ArrayList.
Namnrum, räckvidd och rekursion Linda Mannila
Enkätresultat för Grundskolan Föräldrar 2014 Skola - Gillberga skola.
Regional handlingsplan ”Det goda livet för sjuka äldre” RESULTAT i VG+Skaraborg.
Grunderna i MATLAB 1 Vad är MATLAB? Användningsområden MATLAB-miljön
Jonny Karlsson INTRODUKTION TILL PROGRAMMERING Föreläsning 2 ( ) INNEHÅLL: -Variabler och datatyper -Tilldelning av variabler -Aritmetiska.
Problemlösningsmetodik
Jonny Karlsson INTRODUKTION TILL PROGRAMMERING Föreläsning 3 ( ) INNEHÅLL: -Tabeller -Villkorssatser -Repetitionssatser.
Räkna till en miljard 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13,14,15,16,17,18,19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, En miljard är ett.
© Anders Broberg, Ulrika Hägglund, Lena Kallin Westin, 2003 Föreläsning 12 Sökning och Sökträd.
Förskoleenkät Föräldrar 2012 Förskoleenkät – Föräldrar Enhet:Hattmakarns förskola.
2D1311 Programmeringsteknik med PBL Föreläsning 1 Skolan för Datavetenskap och kommunikation.
1 Mönstermatchning och rekursion Nr 4. 2 Förenklad notation val fnname = fn name => expression Förenklas till fun fnname name = expression Exempel fun.
OOP F2:1 Stefan Möller OOP Objekt-orienterad programmering Föreläsning 2 Deklaration och tilldelning Programsatser Tilldelning Input/Output Selektion.
Diskret stokasticitet Projekt 2.3, Talltita
Föreläsning 2 programmeringsteknik och Matlab 2D1312/ 2D1305
1 Ingenjörsmetodik IT & ME 2007 Föreläsare Dr. Gunnar Malm.
F2 1 Programmeringsteknik, 4p vt-00 Kommentarer Allt mellan /* och */ Varje kommentar byts ut mot en blank av kompilatorn /* Exempel på uttryck, tilldelningsoperatorn.
1 Matlab, föreläsning 1 Oktober MATLAB Perspektiv på materialdesign Lina Kjellqvist Rum: K324 Telefon:
1 Föreläsning 13 programmeringsteknik och Matlab Funktioner, styrstrukturer, mer om matriser.
KPP053, HT2015 MATLAB, Föreläsning 4
Presentationens avskrift:

MATLAB MATrix LABoratory avancerad ”räknedosa” visualisering av data utvecklingsmiljö och “programmeringsspråk” visualisering av data avancerad grafik Mom 3, 5DV104, 5DV105 HT09

MATLAB Mom 3, 5DV104, 5DV105 HT09

Användbara kommandon help kommando – visar hjälptext i kommandofönstret doc – öppnar Matlab-dokumentationen who/whos – listar variabler format – anger formatet på utskriften clear all – ta bort alla definierade variabler Mom 3, 5DV104, 5DV105 HT09

Språket - kommandosyntaxen liknar ”matematik” med C syntax stor uppsättning kommandon och funktioner avancerade algoritmer ursprungligen inriktat mot linjär algebra enkelt konstruera egna program/script och funktioner (M-filer) Mom 3, 5DV104, 5DV105 HT09

Variabler m.m. ingen variabeldeklaration variabler definieras genom tilldelning den grundläggande datatypen är double (normalt 16 decimaler) elementen är i de flesta fall reella (kan vara komplexa) det grundläggande dataformatet är matriser 1×1-matriser kallas skalärer case-sensitive Mom 3, 5DV104, 5DV105 HT09

…variabler m.m. resultat lagras i ans (om ingen tilldelning) tilldelningar sker med = >> A = 7.5*2 (resultatet i A) A = 15 >> 7.5*2 (resultatet i ans) ans = semikolon undertrycker utskrifter kommentarer inleds med % och räcker resten av raden Mom 3, 5DV104, 5DV105 HT09

: operatorn start : steg : stopp start : stopp x = -pi/2:pi/30:pi/2 ger en följd av värden till exempel 1:2:9 ger vektorn [1 3 5 7 9] start : stopp steget är 1 x = -pi/2:pi/30:pi/2 ger en radvektor Mom 3, 5DV104, 5DV105 HT09

Grafik- 2D plot fplot hold olika kommandon för text i grafikfönster ritar ut en mängd av ordnade talpar (punkter, linjer, färger) fplot graf till funktion i en variabel hold håller kvar aktuellt grafikfönster, så att flera figurer kan ritas i samma fönster olika kommandon för text i grafikfönster xlabel, ylabel, title,... Mom 3, 5DV104, 5DV105 HT09

Elementoperationer x = linspace(0,1); % OBS! Radvektor n=2; y = x.^n.*exp(x); plot(x,y,'k') n=3; hold on plot(x, x.^n.*exp(x)) Mom 3, 5DV104, 5DV105 HT09

Kod direkt i kommandofönstret >>x = linspace(0,1); % OBS! Radvektor >>n=2; >>y = x.^n.*exp(x); >>plot(x,y,'k'); >>n=3; >>hold on >>plot(x, x.^n.*exp(x)) >> title('x^n*exp(x) för n=2 och n=3') >> xlabel('x-axeln') >> ylabel('y-axeln') >> axis([-1 1 -1 3]) >> v=axis; >> plot([v(1) v(2)],[0 0]) %Rita y=0 >> plot([0 0], [v(3) v(4)]) %Rita x=0 Mom 3, 5DV104, 5DV105 HT09

Slutlig figur (som Figure 1) Mom 3, 5DV104, 5DV105 HT09

Subplottar %Test subplot() by plotting different functions %in different plot windows % x=linspace(0,1); for n=0:10 y=x.^n .* exp(x); subplot(4,3,n+1) plot(x,y) nchar=num2str(n); title(strcat('x^n*exp(x) where n= ', nchar)) end Mom 3, 5DV104, 5DV105 HT09

Subplottar Mom 3, 5DV104, 5DV105 HT09

Funktioner en funktion ̶ en fil om en fil innehåller flera funktioner kan endast den första anropas, de andra är interna funktioner första kommandoraden skall innehålla ordet function (annars en kommandofil/script/huvudprogram) function [utparametrar] = namn(inparametrar) noll, en eller flera in-/utparametrar – värdeparametrar anropas med: [utparametrar] = filnamn(inparametrar) ger funktionen samma namn som filen de första kommentarraderna (fram till blankrad eller första kommandorad) skrivs ut vid >> help filnamn Mom 3, 5DV104, 5DV105 HT09

Mata in i editorn och spara myf() på fil namn myf.m function y = myf(x) %Evaluate f(x)=sin(x)+x^3-x^2+1.5 %Call: y=myf(x) % y=sin(x)+x.^3-x.^2+1.5; Skriv i kommandofönstret >> help myf Evaluate f(x)=sin(x)+x^3-x^2 Call: y=myf(x) >>t=-2:0.1:2; >>y=myf(t); >>plot(t,y) Mom 3, 5DV104, 5DV105 HT09

Plot av: sin(x)+x^3-x^2+1.5 Mom 3, 5DV104, 5DV105 HT09

Elementära matematiska funktioner help elfun Elementary math functions. Trigonometric. sin - Sine. sind - Sine of argument in degrees. sinh - Hyperbolic sine. asin - Inverse sine. asind - Inverse sine, result in degrees. asinh - Inverse hyperbolic sine. cos - Cosine. Och många fler….. Mom 3, 5DV104, 5DV105 HT09

Problemet måste definieras i en funktion help funfun Function functions and ODE solvers. Optimization and root finding. -fminbnd Scalar bounded nonlinear function minimization. -fminsearch Multidimensional unconstrained nonlinear minimization, -fzero - Scalar nonlinear zero finding. Och många fler…….. >> help fzero FZERO Scalar nonlinear zero finding. X = FZERO(FUN,X0) tries to find a zero of the function FUN near X0, if X0 is a scalar. Mom 3, 5DV104, 5DV105 HT09

Prova använda fzero() >> help myf Evaluate f(x)=sin(x)+x^3-x^2+1.5 Call: y=myf(x) >> xzero=fzero('myf',0.9) xzero = -0.7062 >> myf(xzero) ans = -4.4409e-016 Mom 3, 5DV104, 5DV105 HT09

S.k. anonyma funktioner FUNHANDLE = @(ARGLIST)EXPRESSION constructs an anonymous function and returns a handle to that function. >> format short >> fh=@(x)x.^2-2; %Def. av anonym funktion >> fh(-2); >> t=-2:0.1:2; >> y=fh(t); >> plot(t,y) >> tzero=fzero(fh,1.3) tzero =1.4142 >> fh(tzero) ans =4.4409e-016 Mom 3, 5DV104, 5DV105 HT09

X^2-2 i [-2..2] Mom 3, 5DV104, 5DV105 HT09

Matriser tilldelning värdet av en variabel omges av hakparenteser [ ] tilldelning sker radvis blank eller komma mellan elementen rader i matrisen skiljs med semikolon eller ny rad värdet av en variabel variabelns namn följt av retur Mom 3, 5DV104, 5DV105 HT09

Skapa en matris Mom 3, 5DV104, 5DV105 HT09

Observera! skillnad mellan tilldelning och adressering Enstaka element i matrisen adresseras med rad- resp. kolumnindex 1,2,…. variabelnamn(radindex,kolumnindex) A(1,3) Observera! skillnad mellan tilldelning och adressering A=[1 5;10 15;-2 6] ger A (3*2)-matris A(1,1)=100 ändrar (1,1)-elementet Mom 3, 5DV104, 5DV105 HT09

Del av matrisen alla i:te raden A(i,:) j:te kolumnen A(:,j) Delmatris A(i:j,k:l) Mom 3, 5DV104, 5DV105 HT09

Att skapa matriser ones(n) n × n-matris med ettor ones(m,n) m × n-matris med ettor zeros(n) n × n-matris med nollor eye(n) en enhetsmatris n × n diag ger diagonalen/skapar diagonalmatris triu,tril ger över/under triangulära matriser Mom 3, 5DV104, 5DV105 HT09

Matrisoperationer A’ (konjugerade) transponatet det(A) determinanten inv(A) inversen eig(A) egenvärdena norm(A) 2-normen A*B, A+B matrisoperatorer! Mom 3, 5DV104, 5DV105 HT09

Strängar strängar är av datatypen char de lagras som matriser strängkommandon strcmp, strncmp strcat strfind, findstr strrep lower, upper int2str, str2double sprintf ... Exempel: >>s = ’detta är en sträng’ s = detta är en sträng >>s(2) ans = e >>s2 = s(5:10) s2 = a är e Mom 3, 5DV104, 5DV105 HT09

Kontrollstrukturer... for variabel = uttryck end for I = 1:2:n satser end for I = 1:2:n for i= 1:n jmfr. C / Java for (i=1; i<=n; i=i+2) { satser } Mom 3, 5DV104, 5DV105 HT09

…kontrollstrukturer... if logiskt uttryck satser end elseif logiskt uttryck end if logiskt uttryck satser else end Mom 3, 5DV104, 5DV105 HT09

...kontrollstrukturer... logiska operatorer & (och) | (eller) ~ (inte) relations operatorer == (lika med) ~= (skilt från) < och > (mindre/större än) <= och >= (mindre än eller lika med resp. större än eller lika med) Mom 3, 5DV104, 5DV105 HT09

Andra användbara funktioner vid kontroller any(), all(), ismember() Exempel a=[1:10]; b=[1 2 3 4 5]; if(any(a<0)) %värde falskt do something else do something else end -ismember(b,a); Ger vektor [1 1 1 1 1 ] -ismember(a,b); Ger vektor [1 1 1 1 1 0 0 0 0 0] Mom 3, 5DV104, 5DV105 HT09

...kontrollstrukturer... while logiskt uttryck satser end Exempel: while x < 3 x = x*1.1 end Mom 3, 5DV104, 5DV105 HT09

...kontrollstrukturer switch vilkorsuttryck case vilkor1 satser case {vilkor2,vilkor3,...} : [otherwise] end vilkorsuttrycket kan vara en skalär eller sträng Mom 3, 5DV104, 5DV105 HT09

Skärmutskrift och inläsning returvärdet från kommandon som inte avslutas med semikolon skrivs ut kommandon för utskrift fprintf – formaterad utskrift (C syntax) disp – textutskrift eller matriser Ex. disp(’Rubrik över en tabell’) T.ex. om a och b är radvektorer av samma längd: disp([a’ b’]) Mom 3, 5DV104, 5DV105 HT09

Input() för inläsning via tangentbordet Ex. postal=input(’Ge positivt heltal’); Inmatning av sträng görs med Ex. str=input(’Ledtext ’,’s’); Utan ; i slutet ger utskrift av det nyss inmatade Mom 3, 5DV104, 5DV105 HT09

%A program to roll 2 ordinary dice a number of times. %Number of times is input by the user. %The program produces statistics for results 2,3,4...,11,12 % disp('The program simulates rolling 2 dice a number of times') num=-1; % Initiate for the while-loop while num <= 0 num=input('Give number of simulations (>0): ') end % of while tab=zeros(12,2); % 2:nd column for relative frequence %Use the clock to initiate the random sequence rand('state',sum(100*clock)); Mom 3, 5DV104, 5DV105 HT09

res=rolldice+rolldice; tab(res,1)=tab(res,1)+1; end %of for %Simulate and save for i=1:num res=rolldice+rolldice; tab(res,1)=tab(res,1)+1; end %of for %Compute relative frequence tab(2:12,2)=tab(2:12,1)/num; %Print format short format compact utfall=2:12; disp('disp does not print results readable') disp('DICE_Sum Totals Relative freq.') disp([utfall(:) tab(2:12,:)]) disp('Using FPRINTF gives better print out') %NOTE the transpose of tab %The matrix is printed column wise fprintf('%3d %10d %10.3f\n',[utfall; tab(2:12,:)']) Mom 3, 5DV104, 5DV105 HT09

function dice = rolldice %Roll one ordinary dice. The returned value is %1, 2, 3, 4, 5 or 6 %Call: s=rolldice % dice = 1+floor(rand*6); Mom 3, 5DV104, 5DV105 HT09

The program simulates rolling 2 dice a number of times >> simdice The program simulates rolling 2 dice a number of times Give number of simulations (>0): 100000 num = 100000 disp does not print results readable DICE_Sum Totals Relative freq. 1.0e+004 * 0.0002 0.2711 0.0000 0.0003 0.5509 0.0000 0.0004 0.8422 0.0000 0.0005 1.1289 0.0000 0.0006 1.3767 0.0000 0.0007 1.6675 0.0000 0.0008 1.3920 0.0000 0.0009 1.1153 0.0000 0.0010 0.8238 0.0000 0.0011 0.5548 0.0000 0.0012 0.2768 0.0000 Mom 3, 5DV104, 5DV105 HT09

Using FPRINTF gives better print out DICE_Sum Totals Relative freq. 2 2711 0.027 3 5509 0.055 4 8422 0.084 5 11289 0.113 6 13767 0.138 7 16675 0.167 8 13920 0.139 9 11153 0.112 10 8238 0.082 11 5548 0.055 12 2768 0.028 >> Mom 3, 5DV104, 5DV105 HT09

function fmedel=tabell(fun,xstart,xslut,step) %Anrop: fmedel=tabell(fun,xstart,xslut,step) %Funktion som tabulerar den matematiska funktionen fun %mellan xstart och xslut med steg step %fun = filnamn eller funktionshandtag för den matematiska %funktionen %fmdel= medelvärdet av funktionsvärdena % t=xstart; n=0; while t<=(xslut+eps) fx=feval(fun,t); n=n+1; x(n)=t; tabell(n)=fx; t=t+step; end %of while Mom 3, 5DV104, 5DV105 HT09

%Skriv ut if isa(fun,'function_handle') fun=func2str(fun); end %of if if n>0 disp(strcat('Tabell över funktionen ',fun)) disp('x-värden f(x)-värden') disp([x(:) tabell(:)])%Gör x och tabell till kolumner medel_1=sum(tabell)/n; else disp('Fel i x-argumenten') medel_1=0; %Ett annat sätt är med vektorer x=xstart:step:xslut; fx=feval(fun,x); n=length(x); medel_2=sum(fx)/n; medel_2=0; fmedel=medel_1; Mom 3, 5DV104, 5DV105 HT09

%Skriv ut multiplikationstabell för tabell 1,2,3...,tal function mult(tal) %Anrop: mult(tal) %Skriv ut multiplikationstabell för tabell 1,2,3...,tal %Multiplicera talen med 1,2,.....12 % if tal>0 for i=1:tal for j=1:12 t(i,j)=i*j; end end % for i disp('Multabeller för talen') disp([1:tal]) disp('-----------------------------------') disp(t') else disp('Fel indata') end % of if Mom 3, 5DV104, 5DV105 HT09

disp('ETT ANNAT SÄTT att beräkna') A=col'*rad; A end % of if if tal>0 rad=1:tal; col=1:12; disp('ETT ANNAT SÄTT att beräkna') A=col'*rad; A end % of if Mom 3, 5DV104, 5DV105 HT09

----------------------------------- 2 4 6 8 10 3 6 9 12 15 >> mult(5) Multabeller för talen 1 2 3 4 5 ----------------------------------- 2 4 6 8 10 3 6 9 12 15 4 8 12 16 20 5 10 15 20 25 6 12 18 24 30 7 14 21 28 35 8 16 24 32 40 9 18 27 36 45 10 20 30 40 50 11 22 33 44 55 12 24 36 48 60 Mom 3, 5DV104, 5DV105 HT09

Spara och öppna/ladda data datat i definierade variabler kan sparas i en fil (ges filändelsen .mat) save ex. för att spara matrisen A och vektorn b till filen ’minfil.mat’ i aktuell katalog >>save minfil A b load ex. ladda in filen ’minfil.mat’ >>load minfil (skapar A och b i Matlab) ex. >>load minfil A b Mom 3, 5DV104, 5DV105 HT09

Validering vid inmatning Skräp in ger skräp ut….. Så man bör validera indata!!!! T.ex. Inmatning av ett postivt tal tal=-1; while tal<0 tal=input(’Ge positivt tal: ’); end %of while T.ex. inmatning av tal i vektor där alla tal måste vara olika och i givet intervall [1..20] -----”------ rad=[]; %tomma vektorn disp('Ge 5 tal. Alla olika') i=1; while i<=5 tal=input('Ge tal>>>: '); if any(rad==tal) | tal<1 |tal>20 disp('Fel inmatning. Försök igen') else rad(i)=tal; i=i+1; end %of if Mom 3, 5DV104, 5DV105 HT09

Ett exempel till %Konverteringstabell mellan Celsius och Fahrenheit %Formel: Temp(F)=9/5Temp(C)+32 %Låt användaren mata in starttrmp. i C, ökning mellan varje rad %i tabellen och antalet rader i tabellen disp('Konverteringstabell mellan Celsius och Fahrenheit'); start = input('Ge starttemp i Celsius: '); incr = input('Ge steget (mellan rader) i Celsius: '); total = input('Hur många rader i tabellen: '); stop = start+(total-1)*incr; C = start:incr:stop; F = 9/5*C+32; more on format bank disp('Celsius Fahrenheit'); disp([C(:) F(:)]); disp('**************************Med FPRINTF blir utskriften'); fprintf('%10.2f %10.2f \n', [C;F]); Ett exempel till Mom 3, 5DV104, 5DV105 HT09

Konverteringstabell mellan Celsius och Fahrenheit >> help CelFah   Konverteringstabell mellan Celsius och Fahrenheit Formel: Temp(F)=9/5Temp(C)+32 Låt användaren mata in starttrmp. i C, ökning mellan varje rad i tabellen och antalet rader i tabellen >> CelFah Ge starttemp i Celsius: -10 Ge steget (mellan rader) i Celsius: 5 Hur många rader i tabellen: 10 Celsius Fahrenheit -10.00 14.00 -5.00 23.00 0 32.00 5.00 41.00 10.00 50.00 15.00 59.00 20.00 68.00 25.00 77.00 30.00 86.00 35.00 95.00 Mom 3, 5DV104, 5DV105 HT09

**************************Med FPRINTF blir utskriften Celsius Fahrenheit -10.00 14.00 -5.00 23.00 0.00 32.00 5.00 41.00 10.00 50.00 15.00 59.00 20.00 68.00 25.00 77.00 30.00 86.00 35.00 95.00 >> Mom 3, 5DV104, 5DV105 HT09

% Studera felet då derivatan till f(x)=exp(x) % approximeras med % fprim(x)= (f(x+h)-f(x-h))/(2h) % format compact x=input('Give x-value for approximation: ') t=0.1; i=1; while t>eps %Define all h-values in an array h(i)=t; i=i+1; t=t/10; end %of while fxph = exp(x+h); fxmh = exp(x-h); deriv = (fxph-fxmh)./(2*h); error = exp(x)-deriv; format short e minerr = min(abs(error)) min_ind = find((error == minerr)|(error == -minerr)); Mom 3, 5DV104, 5DV105 HT09

disp('for h= '), disp(h(min_ind)) else if length(min_ind) == 1 disp('for h= '), disp(h(min_ind)) else disp('There are more than one h-value that give minerror') min_ind end %of if error = abs(error); RXF = eps./h; %Beräkningsfel RT = h.^ 2; %Trunkationsfel clf loglog(h,error) title('Error in central diff-approx. of deriv. to f(x)=exp(x)') xlabel('10Log h') ylabel('10Log error') hold on loglog(h, RXF, 'r--') loglog(h, RT, 'k.') Mom 3, 5DV104, 5DV105 HT09

Mom 3, 5DV104, 5DV105 HT09

%Beräkna skalärprodukten mellan vectorerna x och y %med reella element function s = xty(x, y) %Call: s=xty(x,y) %Beräkna skalärprodukten mellan vectorerna x och y %med reella element % if length(x) ~= length(y) error('Vektorerna ska ha samma längd'); return end s = 0; for k = 1:length(x) s = s+x(k)*y(k); % Snabbare variant x=x(:), y=y(:); s1 = x'*y; %Använd fördefinierad funktion dot s2 = dot(x,y); if (s == s1) & (s == s2) disp('Alla tre summorna lika') else disp('Olika summor'); format long [s s1 s2] Mom 3, 5DV104, 5DV105 HT09

function [terms, sum] = harmoni(upper) %Compute the sum of 1/k; k=1,2,3,4,5,......... %until that sum exceeds upper. %Call: [terms,sum] = harmoni(upper) %terms = no. of terms in the sum %sum = the actual sum %Also there is a printout for each time the sum %exceeds "the next" integer. % sum = 0; k = 0; oldsum = -1; heltal = 1; while (sum <= upper) & (oldsum ~= sum) k = k+1; oldsum = sum; sum = sum+1/k; if sum >= heltal fprintf(1,'%d termer behövs för att överskrida %d \n', k, heltal); heltal = heltal+1; end %of if end %of while terms = k; Mom 3, 5DV104, 5DV105 HT09

>> [termer, summa]=harmoni(15); 1 termer behövs för att överskrida 1 4 termer behövs för att överskrida 2 11 termer behövs för att överskrida 3 31 termer behövs för att överskrida 4 83 termer behövs för att överskrida 5 227 termer behövs för att överskrida 6 616 termer behövs för att överskrida 7 1674 termer behövs för att överskrida 8 4550 termer behövs för att överskrida 9 12367 termer behövs för att överskrida 10 33617 termer behövs för att överskrida 11 91380 termer behövs för att överskrida 12 248397 termer behövs för att överskrida 13 675214 termer behövs för att överskrida 14 1835421 termer behövs för att överskrida 15 Mom 3, 5DV104, 5DV105 HT09

>> format compact >> summa summa = 15.0000 >> termer termer = 1835421 >> format compact >> summa summa = 15.0000 >> format long 15.00000037826723 Mom 3, 5DV104, 5DV105 HT09

function [pos, neg] = split1(x) %Call: [pos, neg]=split1(x) %x= a vector with numeric values %pos= a vector containing the positive values of x %neg= a vector containing the negative values of x % %This is the straight forward solution in Matlab indpos = 0; indneg = 0; for k=1:length(x) if x(k)<0 indneg = indneg+1; neg(indneg) = x(k); else indpos = indpos+1; pos(indpos) = x(k); end %of if end %of for k=...... Mom 3, 5DV104, 5DV105 HT09

function [pos, neg] = split2(x) %Call: [pos, neg]=split2(x) >> type split2 function [pos, neg] = split2(x) %Call: [pos, neg]=split2(x) %x = a vector with numeric values %pos = a vector containing the positive values of x %neg = a vector containing the negative values of x % %This is the short, but not obvious solution in Matlab indpos = find(x>=0); indneg = find(x<0); pos = x(indpos); neg = x(indneg); Mom 3, 5DV104, 5DV105 HT09