Gå til innhold
Trenger du skole- eller leksehjelp? Still spørsmål her ×

Hjelp med matlab oppgave (subplot)


Anbefalte innlegg

Er på den siste oppgaven i en oblig i matlab, skal først inn om 17 dager, men digg å bli ferdig med den nå

 

Uansett, oppgaven var forholdsvis enkel, du skulle:

 

"Bruk funksjoner fra ”symbolic toolbox” til å finne integralet, dobbeltintegralet og trippel- integralet av uttrykket y = x2.

Lag fire subplott i figur 5, der y vises i første plott, integralet til y i andre plott, dobbeltintegralet i tredje plott, og trippelintegralet i fjerde plott. For alle plottene skal x være innenfor intervallet [-2,2]. Se figuren under. Din figur skal bli lik denne."

 

x=-2:.1:2;

y=x.^2;

 

 

x=sym('x');

int(x.^2)

 

x=sym('x');

int(x^3/3)

 

x=sym('x');

int(x^4/12)

 

figure(5)

 

Hvordan plotter jeg de inn i samme figur?

Har lekt meg med subplot men blir bare surr, den skal altså ligge mellom -2,2

 

Legger med filen hvordan det skal se ut

post-209627-0-15317600-1347727635_thumb.png

Lenke til kommentar
Videoannonse
Annonse

Du bruker subplot funksjonen, ved å sette subplot(antall,hvor mange vinduer,hvilken plot det er) så dersom du skulle plotte den første funksjonen så skriver du subplot(4,1,1); og så plot(x,y).. Så hvis du skal ta den neste så er det subplot(4,1,2) så plot(); funksjonen igjen.. og sånn fortsetter du fram til du har 4 plots i ett vindu... Kanskje litt kronglete forklart men det står en god del om det her.

Lenke til kommentar

Har forøvrig skrivd det sånn her

 

Men grafen er jo ikke lik i det hele tatt

 

y=x.^2;

x=sym('x');

int(x.^2)

x=sym('x');

int(x^3/3)

x=sym('x');

int(x^4/12)

figure(5)

x=-2:1:2

subplot(2,2,1);

plot(x.^2);

subplot(2,2,2);

plot(x.^3/3);

subplot(2,2,3)

plot(x.^4/12);

subplot(2,2,4);

plot(x.^5/60);

 

Du bruker subplot funksjonen, ved å sette subplot(antall,hvor mange vinduer,hvilken plot det er) så dersom du skulle plotte den første funksjonen så skriver du subplot(4,1,1); og så plot(x,y).. Så hvis du skal ta den neste så er det subplot(4,1,2) så plot(); funksjonen igjen.. og sånn fortsetter du fram til du har 4 plots i ett vindu... Kanskje litt kronglete forklart men det står en god del om det her.

oj så først hva du hadde skrevet nå, får prøve igjen :)

 

takk

Lenke til kommentar

Du bruker subplot funksjonen, ved å sette subplot(antall,hvor mange vinduer,hvilken plot det er) så dersom du skulle plotte den første funksjonen så skriver du subplot(4,1,1); og så plot(x,y).. Så hvis du skal ta den neste så er det subplot(4,1,2) så plot(); funksjonen igjen.. og sånn fortsetter du fram til du har 4 plots i ett vindu... Kanskje litt kronglete forklart men det står en god del om det her.

Jeg hadde tydeligvis brukt riktig når jeg brukte subplot(2,2,1) osv.

 

Fordi med 4, blir de avlang.

 

Men uansett ,med de de riktige plottene fra integralene, så blir fortsatt grafene helt feil. i forhold til hvordan de skal se ut.

 

Av en merkelig grunn tar han ikke med fra -2 til 2 på xaksen. Setter jeg det inn manuelt så blir bare grafen enda værre :)

 

På det andre screenshotet ser det når jeg setter -2 til 2 på xaksen, men da syntes jo nesten ikke noe av grafen, vet ikke om han tar for lite punkter eller what.

 

Det første bildet er jo lik fasiten som jeg postet i første inlegg. Men den er mer hakkete og tar ikke med -2 på x-aksen

post-209627-0-86958900-1347728971_thumb.png

post-209627-0-12977000-1347729175_thumb.png

Endret av henrikrox
Lenke til kommentar

Angåande subplot, om det ikkje var heilt klart:

Tenk på subplot-funksjonen som at den deler opp figur-vindauget i eit gitt antal rader og kolonner (som ein tabell) og, angir kva celle® i tabellen som er aktiv. subplot(3,2,1) deler opp i tre rader og to kolonner, og gjer den fyrste cella (øvst til venstre) aktiv. subplot(3,2,2) vil gjere cella øvst til høgre aktiv, sidan teljaren går fyrst bortover so nedover (motsatt av vanleg indeksering i matriser).

 

Angåande resten:

Du treng berre definere x som symbolsk variabel ein gong, og det er ikkje nødvendig å definere verdiane for x (x = -2:.1:2). Vidare kan du lagre resultatet av integrasjonen i ein variabel, og integrere denne igjen, då treng du ikkje lese funksjonane av kommandolinja (om det var det du hadde gjort). Til sist kan du plotte symbolske funksjonar med ezplot(f,[min max]).

 

syms x

y = x^2;
y2 = int(y);
y3 = int(y2);
y4 = int(y3);

figure;
subplot(2,2,1)
ezplot(y,[-2 2])

subplot(2,2,2)
ezplot(y2,[-2 2])

subplot(2,2,3)
ezplot(y3,[-2 2])

subplot(2,2,4)
ezplot(y4,[-2 2])

post-21406-0-51988900-1347733745_thumb.png

Endret av Torbjørn T.
Lenke til kommentar

Angåande subplot, om det ikkje var heilt klart:

Tenk på subplot-funksjonen som at den deler opp figur-vindauget i eit gitt antal rader og kolonner (som ein tabell) og, angir kva celle® i tabellen som er aktiv. subplot(3,2,1) deler opp i tre rader og to kolonner, og gjer den fyrste cella (øvst til venstre) aktiv. subplot(3,2,2) vil gjere cella øvst til høgre aktiv, sidan teljaren går fyrst bortover so nedover (motsatt av vanleg indeksering i matriser).

 

Angåande resten:

Du treng berre definere x som symbolsk variabel ein gong, og det er ikkje nødvendig å definere verdiane for x (x = -2:.1:2). Vidare kan du lagre resultatet av integrasjonen i ein variabel, og integrere denne igjen, då treng du ikkje lese funksjonane av kommandolinja (om det var det du hadde gjort). Til sist kan du plotte symbolske funksjonar med ezplot(f,[min max]).

 

syms x

y = x^2;
y2 = int(y);
y3 = int(y2);
y4 = int(y3);

figure;
subplot(2,2,1)
ezplot(y,[-2 2])

subplot(2,2,2)
ezplot(y2,[-2 2])

subplot(2,2,3)
ezplot(y3,[-2 2])

subplot(2,2,4)
ezplot(y4,[-2 2])

Takk torbjørn, vi skal bare ha matlab i 6 uker, så er det slutt tydeligvis så blir det eksamen i november.

 

Takk for en veldig god forklaring. Ser jeg har gjort det litt tungvint.

 

Aner ikke hvor mye jeg setter pris på dette. Vi er på kap 12, og vi begynte i uke 34, så her går det fort unna! :)

Lenke til kommentar

Da var oblig levert, skal først inn 1 oktober, og det føltes godt.

 

Holder nå på frivllig oppgave sett, og har et spørsmål om en oppgave jeg sliter litt med. Da vi ikke har brukt function mye,

 

sliter meg å skrive en function som får ting til å fungere med kryptering/dekryptering

post-209627-0-83735100-1347964966_thumb.png

post-209627-0-65171800-1347964988_thumb.png

Lenke til kommentar

Her er forøvrig det jeg har kommet frem til, men får ikke kryptert hele navnet mitt, har heller ikke laget det som egen dekrypt/krypt funksjon

 

alf = char(97:122); % 26 Bokstaver

innbokst = input('Legg inn en bokstav fra a til z: ','s');

skift = input('Legg inn antall skift: ');

pos = find(alf==innbokst);

if isempty(pos)

utbokst = '*';

else

nypos = mod(pos+skift,26); %modulo-operator.

if nypos == 0

% mod gir oss 0 der vi ønsker 6.

nypos = 26;

end

utbokst = alf(nypos);

end

Lenke til kommentar

For å utvide til ord kan du bruke ei for-løkke, der du for kvart teikn i strengen innbokst substituerer bokstaven, og lagrer resultatet i utbokst. Noko liknande

for ind = 1:length(innbokst)
 pos = find(alf==innbokst(ind));

 % kode for å finne nypos

 utbokst(ind) = alf(nypos);
end
disp(utbokst)  % for å vise resultatet

 

Hugs å ta mellomrom med i betraktninga.

Endret av Torbjørn T.
Lenke til kommentar

For å utvide til ord kan du bruke ei for-løkke, der du for kvart teikn i strengen innbokst substituerer bokstaven, og lagrer resultatet i utbokst. Noko liknande

for ind = 1:length(innbokst)
 pos = find(alf==innbokst(ind));

 % kode for å finne nypos

 utbokst(ind) = alf(nypos);
end
disp(utbokst)  % for å vise resultatet

 

Hugs å ta mellomrom med i betraktninga.

Forstår ikke helt, men jeg gir meg ikke!

Takk skal du ha:)

 

alf = char(97:122); % 26 Bokstaver

innbokst = input('Legg inn en bokstav fra a til z: ','s');

skift = input('Legg inn antall skift: ');

pos = find(alf==innbokst);

if isempty(pos)

utbokst = '*';

else

nypos = mod(pos+skift,26); %modulo-operator.

if nypos == 0

% mod gir oss 0 der vi ønsker 6.

nypos = 26;

end

utbokst = alf(nypos);

end

for ind = 1:length(innbokst)

pos = find(alf==innbokst(ind));

% kode for å finne nypos

utbokst(ind) = alf(nypos);

end

disp(utbokst) % for å vise resultatet

 

Er dette jeg har gjort, alt er riktig, men den godtar ikke mer enn en bokstav. beklager å plage deg så mye.

Endret av henrikrox
Lenke til kommentar

Med "% kode for å finne nypos" meinte eg at du skulle putte inn din kode for å finne nypos der, var vel litt uklart.

 


alf = char(97:122); % 26 Bokstaver
innbokst = input('Legg inn en bokstav fra a til z: ','s');
skift = input('Legg inn antall skift: ');
for ind = 1:length(innbokst)
   pos = find(alf==innbokst(ind));
   if isempty(pos)
    utbokst(ind) = '*';
   else
    nypos = mod(pos+skift,26); %modulo-operator.
    if nypos == 0
	    % mod gir oss 0 der vi ønsker 6.
	    nypos = 26;
    end
    utbokst(ind) = alf(nypos);
   end
end
disp(utbokst) % for å vise resultatet

 

Og so må du som sagt hugse å ta høgde for mellomrom, som ikkje skal verte endra.

Lenke til kommentar
  • 1 år senere...

Nei, det blir forsåvidt riktig på venstre side av * som skiller de to krypteringssvarene, men skjønner ikke hvorfor det kommer to svar selv om jeg skriver inn 1 ord. Men forsåvidt skal den jo fungere når jeg skriver inn "mitt navn er .." Så kan jo prøve å se litt på det, hvis du ikke har noen supre forslag :)

Lenke til kommentar

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
×
×
  • Opprett ny...