Include Page | ||||
---|---|---|---|---|
|
Kodeforståelsesoppgaver (total videotid: 33:13)
Oppgave | Videotid | Beskrivelse | Vanskelighetsgrad |
---|---|---|---|
Oppgave 4.1.1: Fprintf datatyper |
...
Hva skrives ut hvis vi kjører dette scriptet?
...
language | none |
---|---|
title | oppgave_1.m |
...
...
14: |
...
Widget Connector | ||
---|---|---|
|
Svar
...
title | Hvis du har prøvd selv, trykk her for å se svaret... |
---|
...
10 | Grunnleggende fprintf-bruk: prosent-tegn for å skrive ut forskjellige datatyper, og backslash for å skrive ut spesielle bokstaver. | Lett |
Oppgave 4.1.2: |
...
Hva skrives ut hvis vi kjører dette scriptet?
Code Block | ||
---|---|---|
| ||
fprintf('%3d,', 1);
fprintf('%03d,', 1);
fprintf('%-3d,', 1);
fprintf('%-03d!\n', 1);
fprintf('%.2f,', 2.524);
fprintf('%6.2f,', 2.524);
fprintf('%06.2f,', 2.524);
fprintf('%-6.2f,', 2.524);
fprintf('%-06.2f!\n', 2.524);
fprintf('%5s,', 'hei');
fprintf('%05s,', 'hei');
fprintf('%-5s,', 'hei');
fprintf('%-05s!\n', 'hei'); |
Videoforklaring (13:23)
Widget Connector | ||
---|---|---|
|
Svar
Expand | ||
---|---|---|
| ||
|
13:22 | Hvordan ekstra tegn mellom prosent-tegnet og datatypebokstaven i fprintf-formatstrenger bestemmer hvordan utskriften til skjerm blir formattert | Middels |
Oppgave 4.1.3: Fprintf med vektorer |
...
Hva skrives ut hvis vi kjører dette scriptet?
...
title | oppgave_3.m |
---|
...
...
5:39 |
...
Widget Connector | ||
---|---|---|
|
Svar
...
title | Hvis du har prøvd selv, trykk her for å se svaret... |
---|
...
Hvordan fprintf behandler vektorer som verdiargument. | Middels |
Kodeoppgaver (total videotid: 54:54)
Oppgave | Videotid | Beskrivelse | Vanskelighetstgrad |
---|---|---|---|
Oppgave 4.2.1: |
...
...
I tidligere oppgaver lagde vi et script som produserer en oversikt over hvilke Fahrenheit-verdier som tilsvarer en rekke Celsius-referanseverdier. Fahrenheit-oversikten forteller oss ikke hvilken Celsius verdi de utskrevne Fahrenheit-verdiene tilsvarer. Utvid scriptet til å skrive ut en mer informativ linje som forklarer hvilken Celsius-verdi Fahrenheit-verdien tilsvarer.
Utdelt kode
...
title | fahrenheit.m |
---|
...
title | fahrenheit.m |
---|
...
...
Widget Connector | ||
---|---|---|
|
Løsningsforslag
Expand | ||||||||||
---|---|---|---|---|---|---|---|---|---|---|
| ||||||||||
|
7:23 |
...
Bruk av fprintf for å få pent formattert utskrift. | Lett |
...
Du stoler ikke på at Matlabs innebygde funksjon sqrt
er effektiv nok, og har funnet ut at du vil lage din egen. Du har innsett at siden , blir det å finne kvadratroten til et tall det samme som å finne nullpunktet til funksjonen . Du har lært en metode for å finne nullpunkt, kalt Newtons metode, som fungerer slik:
Velg et første estimat for nullpunkt, , for funksjonen .
Regn ut videre estimat for nullpunkt med formelen
(I vårt tilfelle er ).
Lag en funksjon som estimerer roten til et tall. Bruk 20 iterasjoner av Newtons metode, og . Sammenlign estimatene for kvadratroten av 4, 97 og 1e18 med estimatene fra sqrt
.
Videoforklaring (9:02)
Widget Connector | ||
---|---|---|
|
Løsningsforslag
...
title | Hvis du har prøvd selv, trykk her for å se svaret... |
---|
...
title | kvadratrot.m |
---|
...
Kvadratrotestimat | 9:02 | Bruk av for-løkke til å beregne kvadratrot numerisk, vha Newtons metode. | Middels |
...
...
...
Du har nettopp laget en funksjon som estimerer kvadratroten til et tall, ved hjelp av 20 iterasjoner av Newtons metode. Du ønsker nå å vite hvordan utviklingen av estimatene er i hver iterasjon. Utvid funksjonen til å produsere utskrift som det følgende i hver iterasjon:
Utdelt kode
...
title | kvadratrot.m |
---|
...
title | kvadratrot.m |
---|
...
...
7:25 |
...
Widget Connector | ||
---|---|---|
|
Løsningsforslag
...
title | Hvis du har prøvd selv, trykk her for å se svaret... |
---|
...
title | kvadratrot.m |
---|
...
Bruk av fprintf for å få formatert utskrift. Bygger på funksjonen skrevet i video 4.2.2. | Lettt | |
Oppgave 4.2.4: |
...
...
Du har innsett at å bruke Matlabs input-funksjon uten å bruke 's'
-parameteren er en sikkerhetsrisiko, siden den lar brukeren kjøre vilkårlig Matlab-kode. Du synes også at feilmeldingene som dukker opp hvis brukeren skriver inn et ugyldig tall er dårlige.
Lag en ny funksjon som leser inn og returnerer et tall fra brukeren. For at funksjonen skal kunne brukes så generelt som mulig, skal teksten som spør brukeren om å skrive inn et tall være en parameter. Funksjonen må bruke to-parameter-versjonen av input. Hvis brukeren skriver inn et ugyldig tall, skal funksjonen skrive ut en passende feilmelding og prøve å lese inn et tall på nytt.
Videoforklaring (12:14)
Widget Connector | ||
---|---|---|
|
Løsningsforslag
...
title | Hvis du har prøvd selv, trykk her for å se svaret... |
---|
...
title | les_inn_tall.m |
---|
12:14 | Bruk av while-løkker for kjøring av kode så lenge en betingelse er sann, samt bruk av fprintf for å skrive informative feilmeldinger. Ulemper med å bruke funksjonen input med bare én parameter, og funksjonen str2num , diskuteres også. | Middels |
...
...
...
Tidligere lagde du et script som lot brukeren skrive inn en rekke Celsius-verdier, og konverterte én og én til Fahrenheit. I scriptet måtte brukeren bestemme seg på forhånd for hvor mange Celsius-verdier som skulle skrives inn.
Endre scriptet slik at brukeren kan skrive inn et vilkårlig antall Celsius-verdier. Hvis brukeren trykker enter uten å skrive noe, skal scriptet avslutte.
Utdelt kode
Expand | |||||
---|---|---|---|---|---|
| |||||
|
...
title | skriv_ut_fahr.m |
---|
Code Block | ||
---|---|---|
| ||
function skriv_ut_fahr(celsius)
fahr = cels2fahr(celsius);
fprintf('Celsiusverdi %.2f tilsvarer Fahrenheitverdi %.2f\n', celsius, fahr);
end |
...
title | les_inn_tall.m |
---|
...
title | les_inn_tall.m |
---|
...
...
10:25 |
...
Widget Connector | ||
---|---|---|
|
Løsningsforslag
...
title | Hvis du har prøvd selv, trykk her for å se svaret... |
---|
Bruk av while-løkker for å gjøre innlesing av referanseverdier i Fahrenheit-scriptet mer fleksibelt. Også bruk og utvidelse av funksjon fra oppgave 4.2.4. | Middels |
Code Block | ||
---|---|---|
| ||
svar = input('Ønsker du å skrive inn egne Celsius-verdier? (ja/nei) ', 's');
if strcmp(svar, 'ja')
celsius = les_inn_tall('Skriv inn Celsius-verdi: ');
while ~isempty(celsius)
skriv_ut_fahr(celsius);
celsius = les_inn_tall('Skriv inn Celsius-verdi: ');
end
else
skriv_ut_fahr(-20);
skriv_ut_fahr(0);
skriv_ut_fahr(18);
skriv_ut_fahr(37);
skriv_ut_fahr(100);
end |
...
title | les_inn_tall.m |
---|
...
...
Tidligere lagde du en funksjon som estimerte kvadratroten av et tall ved å bruke et fast antall iterasjoner av Newtons metode. Du har imidlertid innsett at dette gir unøyaktige svar i noen tilfeller, og unødvendig mange iterasjoner i andre tilfeller. Du ønsker derfor å tilpasse antall iterasjoner til verdien vi skal estimere kvadratroten av. En måte å gjøre dette på, er å kjøre Newtons metode helt til relativ endring av verdien er mindre enn en viss grense. Formelen for relativ endring, er .
Endre funksjonen til å regne ut kvadratrot med en relativ feilgrense på 1e-9.
Utdelt kode
Expand | |||||
---|---|---|---|---|---|
| |||||
|
Videoforklaring (8:25)
Widget Connector | ||
---|---|---|
|
Løsningsforslag
...
title | Hvis du har prøvd selv, trykk her for å se svaret... |
---|
...
title | kvadratrot.m |
---|
...
8:25 | Bruk av while-løkker til å gjøre en beregning helt til svaret er under en gitt feilgrense. Generell teknikk for å kjøre én iterasjon av while-løkken først. | Middels |
Alle oppgavene på en side