Skillnad mellan versioner av "MATLAB-övningar"
Per (Diskussion | bidrag) (→Specifikt om numeriska funktioner) |
Per (Diskussion | bidrag) (→Krånglig ODE) |
||
(5 mellanliggande versioner av samma användare visas inte) | |||
Rad 77: | Rad 77: | ||
deltaV = Vvec(3)-Vvec(2) | deltaV = Vvec(3)-Vvec(2) | ||
pV = pvec.*Vvec | pV = pvec.*Vvec | ||
+ | </syntaxhighlight> | ||
+ | </div> | ||
+ | |||
+ | ==For-loop== | ||
+ | |||
+ | '''Uppgift:''' Gör exakt samma volymsberäkningar som i ovanstående uppgift men med hjälp av ett anrop till funktionen <code>vola</code> ''för varje tryck'' istället. Använd en <code>for</code>-loop och lägg resultaten i en vektor liksom i ovanstående uppgift. | ||
+ | |||
+ | <div class="toccolours mw-collapsible mw-collapsed" data-expandtext="Visa lösningsförslag" data-collapsetext="Dölj" style="width:60em;"> | ||
+ | <syntaxhighlight lang="MATLAB"> | ||
+ | R=8.3145; | ||
+ | vola = @(n, T, p) n.*R.*T./p; | ||
+ | |||
+ | pvec=[0.5, 1.1, 2.0, 3.5, 6.0]*1e5; | ||
+ | for i=1:5 | ||
+ | Vvec(i)=vola(1, 298, pvec(i) ); | ||
+ | end | ||
+ | %plot etc. (samma som ovan) | ||
</syntaxhighlight> | </syntaxhighlight> | ||
</div> | </div> | ||
Rad 117: | Rad 134: | ||
==Ordinär differentialekvation (ODE)== | ==Ordinär differentialekvation (ODE)== | ||
− | '''Uppgift:''' Beräkna <math>p(2)</math> om <math>p(1)=1/3</math> och <math>\frac{dp}{ds}=\exp(z(p,s))</math> där <math>z(p,s)</math> är samma funktion som i | + | '''Uppgift:''' Beräkna <math>y(1)</math> om <math>y(0)=1</math> och <math>\frac{dy}{dx}=x-y</math>. |
+ | |||
+ | '''Svar:''' 0.736 | ||
+ | |||
+ | <div class="toccolours mw-collapsible mw-collapsed" data-expandtext="Visa lösningsförslag" data-collapsetext="Dölj" style="width:60em;"> | ||
+ | <syntaxhighlight lang="MATLAB"> | ||
+ | dydx=@(x,y) x-y; | ||
+ | [xvec,yvec]=ode45(dydx, [0 1], 1); | ||
+ | ans=yvec(end) % Ta ut sista värdet ur vektorn, motsvarande y(1) | ||
+ | </syntaxhighlight> | ||
+ | </div> | ||
+ | |||
+ | ==Krånglig ODE== | ||
+ | |||
+ | |||
+ | '''Uppgift:''' Beräkna <math>p(2)</math> om <math>p(1)=1/3</math> och <math>\frac{dp}{ds}=\exp(z(p,s))</math> där <math>z(p,s)</math> är samma funktion som i den "krångliga" integral-uppgiften. (Tips: tänk på vad som motsvarar <math>x</math> och <math>y</math> här). | ||
'''Svar:''' 1.848 | '''Svar:''' 1.848 |
Nuvarande version från 7 november 2018 kl. 19.47
För den som föredrar att först bli van vid MATLAB innan du ger dig i kast med värmepumpsuppgiften finns här några rena MATLAB-uppgifter att träna på. Första delen syftar till att ge steg-för-steg introduktion till programmering i MATLAB (d.v.s. inte den "miniräknar"-aktiga användningen i MATLAB som ni redan är förtrogna med sedan introduktionskursen i MATLAB). Andra delen handlar om de specifika numeriska funktioner som behövs i datorlabben. En noggrannare beskrivning av funktionerna finns i labbhandledningen till datorlabben samt i kompendiet Börja med MATLAB,
I båda delarna ges lösningsförslag som gömda avsnitt. Det är bara meningen att du ska använda detta som sista utväg om du kört fast.
Innehåll
[dölj]Allmän programmering
Innan du börjar, se till att du har en underkatalog till din hemkatalog där du lägger alla Matlab-script. Under denna kan du sedan lägga ytterligare underkataloger för enskilda övningar, som t.ex. den här.
Skapa ett script, skriv in koden, spara scriptet och kör det sedan med Run-knappen.
Enkelt program
Uppgift: Skriv ett program som beräknar volymen för en ideal gas, med trycket 5.2 bar, substansmängden 2.4 mol och temperaturen 15 grader. Värdena ska läggas i variabler så att själva uträkningen inte innehåller några siffror.
Svar: 11.1 liter
Definiera funktion
Uppgift: Skapa med hjälp av kommandot function
en funktion vol(n,T,p)
som returnerar volymen för en ideal gas. Använd funktionen för att lösa samma problem som i förra uppgiften.
Observera att function
kan användas antingen lokalt i scriptet, eller i en egen m-fil med namn enligt funktionen (vol.m
) Testa gärna båda sätten.
Anonym funktion
Uppgift: Gör samma sak med en så kallad anonym funktion, som beskrivs i datorlabbhandledningen. Låt funktionen ligga i en variabel vola
så att du kan använda den på samma sätt som din föregående funktion.
Vektor
Uppgift: Beräkna volymen för 1 mol gas vid temperaturen 298 K och följande tryck: (0.5, 1.1, 2.0, 3.5, 6.0) bar. Använd ett enda anrop till din funktion vola
genom att lägga trycken i en vektor. Plotta volymen som funktion av trycket. Beräkna också volymsändringen mellan den andra och tredje punkten genom att ta ut värden ur resultatvektorn. Slutligen, beräkna produkten p*V för alla punkter genom att multiplicera vektorerna, och kontrollera att produkten är konstant.
Svar:(49.6, 22.5, 12.4, 7.1, 4.1) liter. Misslyckades med att tolka (MathML med SVG- eller PNG-återgång (rekommenderas för moderna webbläsare och tillgänglighetsverktyg): Ogiltigt svar ("Math extension cannot connect to Restbase.") från server "https://en.wikipedia.org/api/rest_v1/":): {\displaystyle \Delta V= 10.1} liter. Misslyckades med att tolka (MathML med SVG- eller PNG-återgång (rekommenderas för moderna webbläsare och tillgänglighetsverktyg): Ogiltigt svar ("Math extension cannot connect to Restbase.") från server "https://en.wikipedia.org/api/rest_v1/":): {\displaystyle p\cdot V=2.48} kJ för alla punkter.
For-loop
Uppgift: Gör exakt samma volymsberäkningar som i ovanstående uppgift men med hjälp av ett anrop till funktionen vola
för varje tryck istället. Använd en for
-loop och lägg resultaten i en vektor liksom i ovanstående uppgift.
Specifikt om numeriska funktioner
Enkel integral
Beräkna arean av en halvcirkel med radien 1 med hjälp av följande integral:
- Misslyckades med att tolka (MathML med SVG- eller PNG-återgång (rekommenderas för moderna webbläsare och tillgänglighetsverktyg): Ogiltigt svar ("Math extension cannot connect to Restbase.") från server "https://en.wikipedia.org/api/rest_v1/":): {\displaystyle \int_{-1}^1 \sqrt{1-x^2}\,dx}
Svar: 1.5708 (Misslyckades med att tolka (MathML med SVG- eller PNG-återgång (rekommenderas för moderna webbläsare och tillgänglighetsverktyg): Ogiltigt svar ("Math extension cannot connect to Restbase.") från server "https://en.wikipedia.org/api/rest_v1/":): {\displaystyle =\pi/2} )
Krånglig integral
Uppgift: Definiera funktionen Misslyckades med att tolka (MathML med SVG- eller PNG-återgång (rekommenderas för moderna webbläsare och tillgänglighetsverktyg): Ogiltigt svar ("Math extension cannot connect to Restbase.") från server "https://en.wikipedia.org/api/rest_v1/":): {\displaystyle z(p,s)=\frac{1}{\sqrt{p}+s}} . Beräkna integralen:
- Misslyckades med att tolka (MathML med SVG- eller PNG-återgång (rekommenderas för moderna webbläsare och tillgänglighetsverktyg): Ogiltigt svar ("Math extension cannot connect to Restbase.") från server "https://en.wikipedia.org/api/rest_v1/":): {\displaystyle \int_{p_1}^1 z(p_1,s)ds \;\;\;\;} där Misslyckades med att tolka (MathML med SVG- eller PNG-återgång (rekommenderas för moderna webbläsare och tillgänglighetsverktyg): Ogiltigt svar ("Math extension cannot connect to Restbase.") från server "https://en.wikipedia.org/api/rest_v1/":): {\displaystyle \;\;\;\; p_1=\int_0^1 z(p,5)dp }
Svar: 0.8664 (Misslyckades med att tolka (MathML med SVG- eller PNG-återgång (rekommenderas för moderna webbläsare och tillgänglighetsverktyg): Ogiltigt svar ("Math extension cannot connect to Restbase.") från server "https://en.wikipedia.org/api/rest_v1/":): {\displaystyle p_1=0.1768} )
Ordinär differentialekvation (ODE)
Uppgift: Beräkna Misslyckades med att tolka (MathML med SVG- eller PNG-återgång (rekommenderas för moderna webbläsare och tillgänglighetsverktyg): Ogiltigt svar ("Math extension cannot connect to Restbase.") från server "https://en.wikipedia.org/api/rest_v1/":): {\displaystyle y(1)} om Misslyckades med att tolka (MathML med SVG- eller PNG-återgång (rekommenderas för moderna webbläsare och tillgänglighetsverktyg): Ogiltigt svar ("Math extension cannot connect to Restbase.") från server "https://en.wikipedia.org/api/rest_v1/":): {\displaystyle y(0)=1} och Misslyckades med att tolka (MathML med SVG- eller PNG-återgång (rekommenderas för moderna webbläsare och tillgänglighetsverktyg): Ogiltigt svar ("Math extension cannot connect to Restbase.") från server "https://en.wikipedia.org/api/rest_v1/":): {\displaystyle \frac{dy}{dx}=x-y} .
Svar: 0.736
Krånglig ODE
Uppgift: Beräkna Misslyckades med att tolka (MathML med SVG- eller PNG-återgång (rekommenderas för moderna webbläsare och tillgänglighetsverktyg): Ogiltigt svar ("Math extension cannot connect to Restbase.") från server "https://en.wikipedia.org/api/rest_v1/":): {\displaystyle p(2)} om Misslyckades med att tolka (MathML med SVG- eller PNG-återgång (rekommenderas för moderna webbläsare och tillgänglighetsverktyg): Ogiltigt svar ("Math extension cannot connect to Restbase.") från server "https://en.wikipedia.org/api/rest_v1/":): {\displaystyle p(1)=1/3} och Misslyckades med att tolka (MathML med SVG- eller PNG-återgång (rekommenderas för moderna webbläsare och tillgänglighetsverktyg): Ogiltigt svar ("Math extension cannot connect to Restbase.") från server "https://en.wikipedia.org/api/rest_v1/":): {\displaystyle \frac{dp}{ds}=\exp(z(p,s))} där Misslyckades med att tolka (MathML med SVG- eller PNG-återgång (rekommenderas för moderna webbläsare och tillgänglighetsverktyg): Ogiltigt svar ("Math extension cannot connect to Restbase.") från server "https://en.wikipedia.org/api/rest_v1/":): {\displaystyle z(p,s)} är samma funktion som i den "krångliga" integral-uppgiften. (Tips: tänk på vad som motsvarar Misslyckades med att tolka (MathML med SVG- eller PNG-återgång (rekommenderas för moderna webbläsare och tillgänglighetsverktyg): Ogiltigt svar ("Math extension cannot connect to Restbase.") från server "https://en.wikipedia.org/api/rest_v1/":): {\displaystyle x} och Misslyckades med att tolka (MathML med SVG- eller PNG-återgång (rekommenderas för moderna webbläsare och tillgänglighetsverktyg): Ogiltigt svar ("Math extension cannot connect to Restbase.") från server "https://en.wikipedia.org/api/rest_v1/":): {\displaystyle y} här).
Svar: 1.848