KPP053, HT2015 MATLAB, Föreläsning 1 Introduktion till MATLAB Skript Inläsning och utskrift av variabler Ekvationssystem Anonyma funktioner
MATLAB Väletablerat Mycket omfattande program
GNU OCTAVE Öppen källkod Gratis I de flesta fall fullt kompatibel med kod som är skriven för MATLAB (och vice versa) Kan köras utan grafiskt gränssnitt.
FREEMAT Öppen källkod. Gratis. I de flesta fall fullt kompatibel med kod som är skriven för MATLAB (och vice versa). Kommer med ett grafiskt gränssnitt.
Arbetsytan
Historik Tidigare körda kommandon kan köras igen: genom att dubbelklicka på dem i historik-fönstret genom att bläddra tillbaka genom historiken med piltangenterna
Variabler Variabler kopplar ett namn till en viss platts i datorns arbetsminne så att man enkelt kan hänvisa till det som lagrats där. Svaret från senaste uträkningen lagras automatiskt under variabelnamnet ans Egna variabler lagras med likhetstecken. Exempel: a=2 Några variabler är fördefinierade vid start t.ex. pi e i
Tillåtna variabelnamn Variabelnamn får innehålla följande tecken Versaler och gemener (A-Z),(a-z) Siffror (0-9) Understreck (_) Variabelnamnet får inte börja med siffra eller understreck. Det går bra att lagra ett annat värde i någon av de fördefinierade variablerna. Det fördefinierade värdet återställs automatiskt när variabelnamnet blir ledigt igen. Observera att programmet gör skillnad på versaler och gemener.
Att hålla arbetsytan prydlig Avsluta kodrader med semikolon för att inte se någon output från kommandot. Exempel: b = 3; Använd kommandot clc för att rensa kommandofönstret. Använd kommandot clear för att radera en given variabel. Exempel: clear b Skriv clear all för att radera samtliga lagrade variabler (inbyggda variabler stannar)
Funktioner En funktion anropas med funktionens namn, och en eller flera variabler inom parantes. Exempel: sqrt(2) ger roten ur två, sqrt(a)ger roten ur det värde som lagrats under variabelnamnet a. Om funktionen tar mer än en variabel separeras dessa med kommatecken. Exempel: rem(13,5)ger resten av heltalsdivisionen 13/5.
Funktioner En kort lista med några av de inbyggda funktionerna finns på sidan 30 i kursboken. Observera att standardenheten för de trigonometriska funktionerna är radianer. Det går att definiera egna funktioner (kommer senare i kursen).
Funktioner Det går utmärkt att ge värdet av en funktion som input till en annan funktion. Exempel: sin(deg2rad(45)). ( deg2rad(x) konverterar vinkeln x från grader till radianer) OBS: det går i det här fallet även att skriva sind(45).
Skript Skript kan användas för att automatisera beräkningar. Ett skript är en textfil som innehåller ett antal kommandon som körs automatiskt ett efter ett när skriptet körs. För att textfilen skall kännas igen som ett skript måste namnet sluta med.m Kommandon som körs av ett skript beter sig precis likadant som när de skrivs in manuellt.
Statiskt bestämt problem En stel balk är förankrad i väggen med ett gångjärn, och fäst i taket via ett stag med tvärsnittsarea A elacticitetsmodul E (fig. 1). En punktlast F läggs på längst ut på balken. Hur stor blir vinkeln α (fig. 2)? 2 m A, E L 1 2 m A, E L 1 3 m 3 m α F A = 50 mm 2 E = 70000 MPa L 1 = 1,5 m F = 50000 N
Uträkning: Momentjämvikt : F 3 m S 1 2 m = 0 S 1 = F 3 m 2 m Stagets förlängning δ 1 = S 1L 1 EA Vinkeln alfa α = arctan δ 1 2 m A = 50 mm 2 E = 70000 MPa L 1 = 1,5 m F = 50000 N
Skapa en ny skript-fil
Mata in variabler Variabler kan deklareras i skript-filen på samma sätt som i kommandofönstret: %Skript för att lösa statiskt bestämt problem % Indata: A = 50; % mm2 E = 70000; % MPa L1 = 1.5; % m F = 50000; % N Allt som står efter ett procenttecken ignoreras av programmet, detta kan användas till att lägga till kommentarer i koden.
Beräkna lösningen Jämvikten, stagets förlängning och vinkeln alfa beräknas i tur och ordning: % Moment-jämvikt: S1 = F*3/2; % Stagets förlängning: delta = S1*L1/E/A; % Vinkeln alfa: alfa = atand(delta/2) Eftersom det inte finns något semikolon efter sista kodraden kommer svaret att printas i kommandofönstret när skriptet kört klart.
input() Ett behändigt sätt att mata in data i skript om man vill göra dem mera användarvänliga. input( text ) skriver text i kommandofönstret, och väntar på input. Exempel: L1 = input( Ange längden L1 ); kommer att skriva Ange längden L1 på skärmen, vänta på input, och sedan lagra resultatet i variabeln L1.
fprintf() Ett behändigt sätt att få ut data ur skript om man vill göra dem mera användarvänliga. fprintf( text %4.3f \n,x) skriver text i kommandofönstret. text skrivs ut rakt av. %4.3f kommer att ersättas av variabeln x utskriven som decimaltal fyra siffror i bredd varav 3 är decimaler. \n flyttar markören till nästa rad. Mer utförlig förklaring av fprintf finns på sidan 41 i kursboken.
Lös ett linjärt ekvationssystem Exempel från sidan 17 i boken: 1 2 1 9 0 2 1 2 3 A % Ange matriser: x 1 x 2 x 3 x A = [1 2-1 ; 9 0 2 ; 1 2 3]; b = [0 ; 2 ; -1]; % Beräkna svarsmatrisen x: x = A\b = 0 2 1 b
Statiskt obestämt problem 1,5 m 3 m A, E A, E L L 2 1 A = 50 mm 2 E = 70000 MPa L 1 = 1,5 m L 2 = 2 m F = 50000 N F
Uträkning: Momentjämvikt : F 3 m S 1 1,5 m S 2 3 m = 0 S 1 1,5 + S 2 3 = F 3 Stagens förlängning δ 1 = S 1L 1, δ EA 2 = S 2L 2 EA Geometriskt samband α = arctan S 1 L 1 EA δ 1 = 0, S 2 L 2 EA δ 2 = 0 δ 1 1,5 m = arctan δ 2 3 m δ 2 δ 1 3 m 1,5 m = 0
Ekvationssystem: S 1 S 2 δ 1 δ 2 1,5 3 3F = L 1 / (AE) -1 0 L 2 / (AE) -1 0 3/1,5-1 0
Nytt skript Indata som i förra skriptet % Indata: A = 50; % mm2 E = 70000; % MPa L1 = 1.5; % m L2 = 2; % m F = 100000; % N Alternativt kan input användas för att läsa in en eller flera av variablerna när funktionen körs.
Nytt skript Mata in matriser och lös ekvationssytsemet % Definera matriser: A = [1.5 3 0 0 ; L1/E/A 0-1 0 ; 0 L2/E/A 0-1 ; 0 0 3/1.5-1 ]; b = [ 3*F ; 0 ; 0 ; 0]; % Lös ekvationssystemt och lagra svarsmatrisen x x = A\b; % Hämta delta2 från 4e raden i 1a kolumnen i matrisen x delta2 = x(4,1); % Räkna ut vinkeln alfa och printa till skärm; alfa = atand(delta2/3) Alternativt kan funktionen fprintf användas för att printa svaret till skärmen.
Anonyma funktioner Exempel f = @(x) x^2 + 2*x -1 definierar funktionen f som polynomet x 2 +2x-1, den funktionen f kan nu användas på samma sätt som de inbyggda funktionerna. Om funktionen har flera variabler skiljs dessa åt med ett kommatecken: f = @(x,y) x^2 + y. (Det är även möjligt skapa mer avancerade funktioner, som sparas i sin egen textfil. Mer om detta i en senare föreläsning.)
Eget arbete (förslag): Läs avsnitten 1.1-1.6, 2.1-2.4 och 3.1-3.5. Modifiera det sista skriptet så att funktionerna input och fprintf används för att läsa in och skriva ut data. Några lämpliga instuderingsfrågor/övningsuppgifter i boken: 1.10.1 2.6.4-5 2.6.8-12 2.7.3-6.