26 svar
92 visningar
offan123 behöver inte mer hjälp
offan123 3072
Postad: 24 sep 2022 18:56 Redigerad: 24 sep 2022 18:56

Grafer

Jag ska lösa uppgiften på första bilden. Men jag vet inte hur man startar igång fplot för som ni ser så funkar inte koden längst ner på bilden då fplot inte är påsatt. 

Laguna Online 30484
Postad: 24 sep 2022 18:57

Hur ser hela din kod ut?

offan123 3072
Postad: 24 sep 2022 18:59 Redigerad: 24 sep 2022 18:59

Jag skrev bara det första på uppgiften. Det står att det är fel uttryck så jag ändrade till ett ggr-tecken men fick fel uttryck ändå.

offan123 3072
Postad: 24 sep 2022 19:07

Såg nu vad jag gjorde för fel

Laguna Online 30484
Postad: 24 sep 2022 19:08 Redigerad: 24 sep 2022 19:09

Jag gissar att det ska vara en ensam variabel på första platsen. Det säger bara vad som är den oberoende variabeln i uttrycket som följer.

Dessutom undrar jag om man inte måste skriva 3*x när man menar 3x.

Så prova @(x)2*sin(3*x)

offan123 3072
Postad: 24 sep 2022 19:10

Fick detta.

offan123 3072
Postad: 25 sep 2022 16:26

Vad kan jag göra för att komma vidare? :)

Fermatrix 7841 – Fd. Medlem
Postad: 25 sep 2022 17:08

Varför inte bara:

y=sin(3*x);
fplot(y, [-pi 3*pi], 'blue','LineWidth',2)

Matsmats 571 – Livehjälpare
Postad: 25 sep 2022 17:38

Som uppgiften är skriven så använder man anonyma funktioner.

@(x) sin(x) skapar en anonym funktion (en funktion som inte heter något). fplot tar som första argument ett handtag till en funktion.  Om man gör som det står i texten, fplot(@(x) sin(x), ...) så tolkas detta som "jag har en funktion av x som är sin(x)" och den funktionen (eller rättare sagt, handtaget till den funktionen) blir första argumentet till fplot.

Däremot kan man nog inte skriva som offan123 gjort, @(3*x), det kommer inte att betyda något för MATLAB. Det som står innanför parenteserna skall vara de formella argumenten till den anonyma funktionen och skall alltså vara "rena" parametrar, sedan följer själva funktionsdefinitionen, som skulle kunna vara t.ex. sin(x), sin(3*x), exp(45*x), ....

Begriper inte riktigt att Dracaenas kod fungerar, den borde definiera en variabel y, inte ett funktionshandtag. Tycker det borde vara y=@(x) sin(x)  vilket skapar ett funktionshandtag y. Men man ser inte hur x är definierat där.

Laguna Online 30484
Postad: 25 sep 2022 18:01
offan123 skrev:

Vad kan jag göra för att komma vidare? :)

Jag skrev ju det tidigare:

 

"Jag gissar att det ska vara en ensam variabel på första platsen. Det säger bara vad som är den oberoende variabeln i uttrycket som följer.

Dessutom undrar jag om man inte måste skriva 3*x när man menar 3x.

Så prova @(x)2*sin(3*x)"

Fermatrix 7841 – Fd. Medlem
Postad: 25 sep 2022 18:18

Begriper inte riktigt att Dracaenas kod fungerar, den borde definiera en variabel y, inte ett funktionshandtag. Tycker det borde vara y=@(x) sin(x)  vilket skapar ett funktionshandtag y. Men man ser inte hur x är definierat där.

Egentligen står det:

syms x
y=sin(3*x);
fplot(y, [-pi 3*pi], 'blue','LineWidth',2)

Men jag missade att ta med första raden.

Matsmats 571 – Livehjälpare
Postad: 25 sep 2022 18:21

Aha ja, symbolic toolbox... det var nog inte tanken riktigt :)

Utan symbolic toolbox kan man skriva

y=@(x) sin(x)

och sedan fplot(y, ....)

Första raden skapar ett funktionshandtag till den anonyma funktionen (som är sin(x)).

Fermatrix 7841 – Fd. Medlem
Postad: 25 sep 2022 19:08

Ja, du har nog rätt. Minns inte senaste gången jag använda @ om jag ska vara ärlig. Men och andra sidan använder jag mest matlab för att rita upp bodediagramm och dylikt.

fplot(@(x) sin(3*x), [-pi 3*pi], 'blue','LineWidth',2)

Som du påpekar Matsmats fungerar ju också utmärkt. :)

Ser du @offan123 vad du skrivit fel?

Matsmats 571 – Livehjälpare
Postad: 25 sep 2022 19:16

Tror inte heller jag använt anonyma funktioner i praktiken, men det finns kanske något ställe de passar fantastiskt bra :)

offan123 3072
Postad: 25 sep 2022 19:20

Okej, då är jag med på vad ni säger. Dock förstår jag inte hur man slår ihop flera grafer samtidigt. Det står "hold on" och "hold off". 

Matsmats 571 – Livehjälpare
Postad: 25 sep 2022 19:22

hold on gör att du kan fortsätta rita nya kurvor i samma figur. Om du har hold off (som det är när du har en ny figur) så kommer den nya kurvan att radera den gamla.

offan123 3072
Postad: 25 sep 2022 19:23

Ok, då testar jag om det funkar. Jag återkommer om något går fel :)

offan123 3072
Postad: 25 sep 2022 19:26
Dracaena skrev:

Varför inte bara:

y=sin(3*x);
fplot(y, [-pi 3*pi], 'blue','LineWidth',2)

Var inte intervallet (-3,3)?

Matsmats 571 – Livehjälpare
Postad: 25 sep 2022 19:28

-pi till 3*pi stod det i ditt första inlägg.

offan123 3072
Postad: 25 sep 2022 19:30 Redigerad: 25 sep 2022 19:31

Jag tror det var mest som ett exempel. Längst ner står intervallet (-3,3)

En sak jag inte är helt med på är varför ni inte har en 2:a framför sin(3*x).

Fermatrix 7841 – Fd. Medlem
Postad: 25 sep 2022 19:32 Redigerad: 25 sep 2022 19:32

Försök justera koden som finns i tråden så den passar med din uppgift. Du kan se detta som ett till exempel på hur du ska göra.

offan123 3072
Postad: 25 sep 2022 19:36 Redigerad: 25 sep 2022 19:37

så fort jag la till 2:an framför sin(3*x) fungerade inte koden längre. 

 

Edit: glömde "*"

offan123 3072
Postad: 25 sep 2022 19:46 Redigerad: 25 sep 2022 19:49

När jag satte annan tjocklek på grafen fick jag upp massor med rader om hur man kan förbättra det här. Att jag ska ta fram vektorer osv. Vad bör jag göra nu?

offan123 3072
Postad: 25 sep 2022 19:54 Redigerad: 25 sep 2022 19:59

Verkar detta stämma? Man behöver inte ha parentes vid division  för grafen va?

offan123 3072
Postad: 25 sep 2022 20:01

Jag verkade få 3 olika grafer på bilden så det måste gått rätt till?

Fermatrix 7841 – Fd. Medlem
Postad: 25 sep 2022 20:04 Redigerad: 25 sep 2022 20:05

Om du delar på ett tal typ x/2 så är det lugnt. Men har du x/(x-2) så blir det fel utan parenteser. 

Angående din varning vet jag inte om du riktigt kan göra ngt åt det. 

Varför skulle dina plots vara fel? Du kan dubbelkolla i Desmos om du är osäker.

Om ingen har svarat ännu, försök gärna att redigera ditt inlägg så det inte blir rörigt. :)

offan123 3072
Postad: 25 sep 2022 20:09

Tack!

Svara
Close