blank funktions-plot
Hej!
Varför kommer det bara upp en blank sida när jag RUN denna script?
Första gången jag skriver en funktion där ett uttryck ska divideras med ett annat i mathlab. Jag vet inte vad som menas med elementvis multiplikation i funktioner för elementvis multiplikation används ju när man multiplicerar matriser men detta är en funktion.
Vad är ditt x? Du behöver ju skapa en vektor säg x=1:10 för att plotta den mot något.
Ser nu att problemet är att din y=f(x) dividerar med / och inte ./(punkt slash). Om du vill plotta så gör istället att du skapar ett intervall (exempelvis x=0:0.1:10) och sedan en funktion (säg y=2.^x) och sedan "plot(x,y)".
Jag ska ta reda på minpunkten så intervallet måste vara öppet tills jag vet ungefär var minpunkten är. Vad är felet nu? Dessa prickar före / och * vet jag inte vad det är för utom när jag multiplicerar matriser.
Skillnaden mellan till exempel och i matlab kan vara följande:
Säg att x=[0 1 2 3 4], om du nu bara tar x*x så kommer du få en error som säger "matrix dimension does not agree! eftersom det blir felaktiga dimensioner.
Däremot skulle bli elementvis multiplikation, så du skulle få en ny vektor med som är på formen x.*x=[0*0 1*1 2*2 3*3 4*4]=[0 1 4 9 16].
Du har alltså bara multiplicerat varje element med sig själv igen.
Om du använder x=[0 1 2 3 4] och använder att y=x^2 och z=x.^2 så får du samma problem; ^2 betyder matris*matris (och dimensioner fungerar ej i detta fall!) medan .^ att man tar varje element och kvadrerar, så du skulle få att y=x^2 (ERROR matrix dimensions does not agree) och z=x.^2=[0^2 1^2 2^2 3^2 4^2]=[0 1 4 9 16]
tack!
Men nu måste jag snart få denna funktion att inte ge en blank plot. Det funkade kort men sen sparade jag och då var det blankt igen.
Elias93 skrev:tack!
Men nu måste jag snart få denna funktion att inte ge en blank plot. Det funkade kort men sen sparade jag och då var det blankt igen.
Först och främst: Du kan inte ge en "öppet intervall" (det vore enklare att argumentera varför stora x är irrelevanta för min-funktionen ;) )
Så här skulle jag göra: Skapa ett intervall som du tycker är relevant (vi kan överdriva och säga x=-1000:0.5:1000)
Sedan skapar jag funktionen; f=(1+x.^2-1.5*x.^3+0.5*x.^4)./(1+x.^4);
Sedan plot(x,f)
Det skulle alltså se ut:
x=-1000:0.5:1000; %du kan förminska intervallet efter vad du vill ha
f=(1+x.^2-1.5*x.^3+0.5*x.^4)./(1+x.^4); %funktionen
plot(x,f) %plotten av funktionen i givet intervall
Om du dessutom vill ha reda på vad det minsta/största värdet är av en funktion givet intervallet så kan du helt enkelt skriva min(f) eller max(f), så väljer den ut minsta/största värdet i vektorn f (som är din funktion)
tack nu lyckades det. Jag försöker hitta max och minpunkter nu. Men en gång skrev jag in en funktion utan att ange intervall och då kom det upp en plot från 250 000>x<-250 000. Konstigt.
Tack! Det lyckades även om det är lite mysko. Men jag vänjer mig nog allt eftersom. Jag trodde man måste använda x=fminbnd för funktionen och för -f(x) men det du föreslår låter enklare.
Elias93 skrev:tack nu lyckades det. Jag försöker hitta max och minpunkter nu. Men en gång skrev jag in en funktion utan att ange intervall och då kom det upp en plot från 250 000>x<-250 000. Konstigt.
Det låter som du måste ha indirekt definierat det intervallet, annars skulle matlab bara säga att det inte finns någon vektor att sätta in i funktionen och du får en röd text. Det går inte heller att skapa en vektor [-inf,inf] eftersom det skulle krävas...ptja, oändligt mycket tid. :P
ok. En vän förklarade att linspace skapar en vektor mellan punkterna och att x är en vektor, inte en variabel. Därför vet jag nu varför jag ska sätta en punkt före * ibland.