Vinnaren i pepparkakshustävlingen!
2017-01-19, 19:33
  #541
Medlem
Hej!
Jag ska plotta en funktion x − 4 sin (2x) − 3 = 0 i matlab och såsom jag förstått så skall jag använda ezplot och när jag gör får jag en figur men det går ej att se nollställena ? Jag får ingen traditionell xy plan vid plot.
Citera
2017-01-19, 21:54
  #542
Medlem
nihilverums avatar
Citat:
Ursprungligen postat av ruuners123
Hej!
Jag ska plotta en funktion x − 4 sin (2x) − 3 = 0 i matlab och såsom jag förstått så skall jag använda ezplot och när jag gör får jag en figur men det går ej att se nollställena ? Jag får ingen traditionell xy plan vid plot.

Det går ju alltid att manuellt specificera vilket intervall för x och y som ska användas. Med tanke på att sinusfunktionen i sig kan anta värden mellan -1 och 1 så kan man med säkerhet veta att för x > 7 så kommer x - 3 > 4 och således kan inte 4sin(2x) bli tillräckligt låg för att hela funktionen ska bli noll. På motsvarande sätt så kan man för x < -1 se att x - 3 < -4 och då kan inte 4sin(2x) bli tillräckligt hög för att hela funktionen ska bli noll.

Det är alltså lämpligt att plotta funktionen för x mellan exempelvis -1,01 och 7,01 för att få med alla nollställen. Du kan alltså skapa en vektor med steglängd 0,01 mellan dessa x-värden och sedan beräkna funktionsvärdet för alla x i den vektorn. Sedan plottar du bara funktionsvärdena mot x-värdena.
Citera
2017-01-24, 20:33
  #543
Medlem
Går det inte att bara skriva såhär:
syms x
ezplot(x-4-sin(2*x)-3)
Det är tänkt att jag ska se nollställen på grafen och då behöver jag rita till x och y axlar i 2d. ?
Citera
2017-03-02, 19:14
  #544
Medlem
Jag har en uppgift i Matlab som jag inte förstår hur jag skall skriva. Jag förstår att jag ska jämföra "intersections".

Jag anger Universal set E = [ 0 1 2 3 4 5 6 7 8 9 10]
Sedan anger jag mina Subsets till E.

A= { 8 7 1 9 }
B= { 9 2 3 4}
C= { 7 1 9 2 6 10}

Så långt är allt bra men sen förstår inte jag hur syntaxen skall skrivas och jag har Googlat på det och testat men få ändå inte rätt på det.

Jag ska hitta intersectionen mellan A∩B, A∩C, A∩B∩C och A∩E.

Är inte syntaxen E = intersect(A,B) eller E = intersect(A,C)

Jag förstår själva uppgiften men jag förstår inte syntaxen för att vara helt ärlig.
Citera
2017-03-02, 19:24
  #545
Medlem
inneskos avatar
Citat:
Ursprungligen postat av Rytve
Jag har en uppgift i Matlab som jag inte förstår hur jag skall skriva. Jag förstår att jag ska jämföra "intersections".

Jag anger Universal set E = [ 0 1 2 3 4 5 6 7 8 9 10]
Sedan anger jag mina Subsets till E.

A= { 8 7 1 9 }
B= { 9 2 3 4}
C= { 7 1 9 2 6 10}

Så långt är allt bra men sen förstår inte jag hur syntaxen skall skrivas och jag har Googlat på det och testat men få ändå inte rätt på det.

Jag ska hitta intersectionen mellan A∩B, A∩C, A∩B∩C och A∩E.

Är inte syntaxen E = intersect(A,B) eller E = intersect(A,C)

Jag förstår själva uppgiften men jag förstår inte syntaxen för att vara helt ärlig.

intersect(A, B) ger dig A∩B vilket fungerar utmärkt när jag testar det, så jag förstår inte vad du har problem med.
Citera
2017-03-03, 01:10
  #546
Medlem
Citat:
Ursprungligen postat av ruuners123
Går det inte att bara skriva såhär:
syms x
ezplot(x-4-sin(2*x)-3)
Det är tänkt att jag ska se nollställen på grafen och då behöver jag rita till x och y axlar i 2d. ?
Du kan lika gärna skriva
x = linspace(-10,100,1000);
y = x-4-sin(2*x)-3;
plot(x,y)
Citera
2017-03-03, 12:48
  #547
Medlem
Citat:
Ursprungligen postat av innesko
intersect(A, B) ger dig A∩B vilket fungerar utmärkt när jag testar det, så jag förstår inte vad du har problem med.


Det är märkligt. Jag får detta felmeddelande när jag skriver intersect(A,B)

Error using cell/intersect>cellintersectR2012a (line 280)
Input A of class cell and input B of class cell must be cell arrays of
character vectors, unless one is a character vector.

Error in cell/intersect (line 84)
[varargout{1:nlhs}] = cellintersectR2012a(varargin{:});
Citera
2017-03-03, 13:08
  #548
Medlem
inneskos avatar
Citat:
Ursprungligen postat av Rytve
Det är märkligt. Jag får detta felmeddelande när jag skriver intersect(A,B)

Error using cell/intersect>cellintersectR2012a (line 280)
Input A of class cell and input B of class cell must be cell arrays of
character vectors, unless one is a character vector.

Error in cell/intersect (line 84)
[varargout{1:nlhs}] = cellintersectR2012a(varargin{:});

Jaha, ja det förklarade nog saken. När du har definierat vektorerna A, B, C så har du använt { } istället för []. När du använder {} så definierar du en cell array.
Citera
2017-03-03, 14:36
  #549
Medlem
ozyrecons avatar
Hej gott folk. Jag håller på lite med matlab men är så osäker på hur syntaxen skall skrivas och jag är tyvärr ingen vidare i matte.
Antagligen rör jag till det mer än vad som är nödvändigt men tänkte fråga om hjälp.

S∞= a/1-r
a=1/2 och r=1/2

Formeln i sig förstår jag men förstår inte riktigt hur svaret kommer se ut i Matlab.
Uppgiften fortsätter med summan n-antalet termer.
Sn = a(1-r^n) / 1- r

I denna formeln ska jag ju plugga in n = 1 a=1/2 och r=1/2
och sen ska jag även kalkylera när n = 2.
Vad jag mest undrar är hur man skriver in denna formeln på ett korrekt sätt i Matlab, det känns som mina svar är ganska tokiga. Sedan fortsätter uppgiften nedan där man skall skapa en Matlab Script och göra följande. Om jag inte kan skriva in formlerna ovan rätt kan jag väl inte ens göra uppgiften nedan?


1. Make an integer n vector starting at 1and ending at 100(use colon notation for vector assignment).
2. Make a corresponding (exactly same length as the n vector) Sinf vector with constant terms equals to S∞.
3. Plot Sinf against n (Sinf on the y-axis, n on the x-axis). (You should get a horizontal line at y = S∞ ).
4. Use hold on,
5. Calculate the corresponding vector Sn. Use the above formula with the constant values a and r, and the n vector (the term r is calculated elementwise by r.^n ).
6. Plot Sn against n in the same graph!(Sn on the y-axis,n on the x- axis)
Citera
2017-03-03, 14:46
  #550
Medlem
inneskos avatar
Citat:
Ursprungligen postat av ozyrecon
Hej gott folk. Jag håller på lite med matlab men är så osäker på hur syntaxen skall skrivas och jag är tyvärr ingen vidare i matte.
Antagligen rör jag till det mer än vad som är nödvändigt men tänkte fråga om hjälp.

S∞= a/1-r
a=1/2 och r=1/2

Formeln i sig förstår jag men förstår inte riktigt hur svaret kommer se ut i Matlab.
Uppgiften fortsätter med summan n-antalet termer.
Sn = a(1-r^n) / 1- r

I denna formeln ska jag ju plugga in n = 1 a=1/2 och r=1/2
och sen ska jag även kalkylera när n = 2.
Vad jag mest undrar är hur man skriver in denna formeln på ett korrekt sätt i Matlab, det känns som mina svar är ganska tokiga. Sedan fortsätter uppgiften nedan där man skall skapa en Matlab Script och göra följande. Om jag inte kan skriva in formlerna ovan rätt kan jag väl inte ens göra uppgiften nedan?


1. Make an integer n vector starting at 1and ending at 100(use colon notation for vector assignment).
2. Make a corresponding (exactly same length as the n vector) Sinf vector with constant terms equals to S∞.
3. Plot Sinf against n (Sinf on the y-axis, n on the x-axis). (You should get a horizontal line at y = S∞ ).
4. Use hold on,
5. Calculate the corresponding vector Sn. Use the above formula with the constant values a and r, and the n vector (the term r is calculated elementwise by r.^n ).
6. Plot Sn against n in the same graph!(Sn on the y-axis,n on the x- axis)

Ta och kolla på följande tråd (FB) Använd parenteser: hur man skriver matematik korrekt. Om du inte kan ordningsreglerna för operatorerna är du körd om du försöker skriva formler. Anledningen till att jag rekommenderar detta är för att jag skulle gissa på att formlerna är

S_∞ = a/(1 - r)

samt

S_n = a(1 - r^n)/(1 - r)

Sättet att skriva dessa formler i Matlab är nästan exakt som det står. Man skriver 1/(1 - r) för första formeln och a*(1 - r^n)/(1 - r) för andra formeln, så det enda som skiljer är väl att du måste skriva ut multiplikationer.
Citera
2017-03-03, 15:06
  #551
Medlem
Citat:
Ursprungligen postat av innesko
Jaha, ja det förklarade nog saken. När du har definierat vektorerna A, B, C så har du använt { } istället för []. När du använder {} så definierar du en cell array.

Tack! Det var en liten tabbe av mig. Min skärm är riktigt dålig och kan knappt se tecknen.
Citera
2017-03-05, 13:34
  #552
Medlem
Hej!
Behöver hjälp med dels hur man definierar noggrannhetsordningen för fjärdeordningens Runge-Kutta (RK4) samt hur man skulle kunna göra för att implementera det i sin matlabkod för Runge-Kutta. Vet att det är 4(ergo p=4) men vet dock ej hur jag ska visa detta genom det globala trunkeringsfelet.
Har provat köra enligt nedan(koden som står längst ned), får dock fel meddelandet:

Kod:
Index exceeds matrix dimensions.

Error in RungeKuttaorg (line 61)
Re=(R(t(2,:),h)-R(t(2,:),h/2))/(R(t(2,:),h/2)-R(t(2,:),h/4));

Har provat byta index på t så att det istället står:

Kod:
%Noggrannhetsordning
%2^p=(f(t, h) − f(t, h/2))/(f(t, h/2) − f(t, h/4))
Re=(R(t,h)-R(t,h/2))/(R(t,h/2)-R(h/4));
disp([Re]); %Bör bli 16 då p bör vara 4

Och får då istället felmeddelandet:

Kod:
Subscript indices must either be real positive integers or logicals.

Error in RungeKuttaorg (line 61)
Re=(R(t,h)-R(t,h/2))/(R(t,h/2)-R(h/4));

Kod:
clc
clear all
close all
%Runge Kutta
% dR/dt=Ttsi-myR-BRV
% dL/dt=pBRV-myL-aL
% dE/dt=(1-p)BRV+aL-DE
% dV/dT=piE-sigmaV
%CD4=[1000*(1-tao)+R+L+E];

%Konstanter
Gamma=1.36; mu=1.36*10^-3;   tao=0.2; B=0.00027; 
p=0.1;  a=3.6*10^-2; sigma=2; D=0.33;  pi=100;  
%Definition av funktionshandtag
fR=@(t,R,V)     Gamma*tao-mu*R-B*R*V; %Gör så att man kan defiera funktion i script fil
fL=@(t,R,V,L)   p*B*R*V-mu*L-a*L;
fE=@(t,R,V,L,E) (1-p)*B*R*V+a*L-D*E;
fV=@(t,V,E)      pi*E-sigma*V;

%Initial villkor
L(1)=0; E(1)=0; 
R(1)=200; V(1)=4*10^-7; 
t(1)=0;
%Tid
h=1; %Stegstorleken
te=120; %Sluttiden
n=ceil(te/h); %Ceil avrundar kvoten te/h till heltal, kvoten anger antal intervall

%Updaterigsloop
for i=1:n
    %Updaterar tid
    t(i+1)=t(i)+h;
    %Updatering av R,L,E,V
    k1R=fR(t(i),R(i),V(i));
    k1L=fL(t(i),R(i),V(i),L(i));
    k1E=fE(t(i),R(i),V(i),L(i),E(i));
    k1V=fV(t(i),     V(i),     E(i));
    
    k2R=fR(t(i)+h/2,R(i)+h/2*k1R,V(i)+h/2*k1V);
    k2L=fL(t(i)+h/2,R(i)+h/2*k1R,V(i)+h/2*k1V,L(i)+h/2*k1L);
    k2E=fE(t(i)+h/2,R(i)+h/2*k1R,V(i)+h/2*k1V,L(i)+h/2*k1L,E(i)+h/2*k1E);
    k2V=fV(t(i)+h/2,             V(i)+h/2*k1V,             E(i)+h/2*k1E);
    
    k3R=fR(t(i)+h/2,R(i)+h/2*k2R,V(i)+h/2*k2V);
    k3L=fL(t(i)+h/2,R(i)+h/2*k2R,V(i)+h/2*k2V,L(i)+h/2*k2L);
    k3E=fE(t(i)+h/2,R(i)+h/2*k2R,V(i)+h/2*k2V,L(i)+h/2*k2L,E(i)+h/2*k2E);
    k3V=fV(t(i)+h/2,             V(i)+h/2*k2V,             E(i)+h/2*k2E);
    
    k4R=fR(t(i)+h,R(i)+h*k3R,V(i)+h*k3V);
    k4L=fL(t(i)+h,R(i)+h*k3R,V(i)+h*k3V,L(i)+h*k3L);
    k4E=fE(t(i)+h,R(i)+h*k3R,V(i)+h*k3V,L(i)+h*k3L,E(i)+h*k3E);
    k4V=fV(t(i)+h,           V(i)+h*k3V,           E(i)+h*k3E);
    
    R(i+1)=R(i)+h/6*(k1R+2*k2R+2*k3R+k4R);
    L(i+1)=L(i)+h/6*(k1L+2*k2L+2*k3L+k4L);
    E(i+1)=E(i)+h/6*(k1E+2*k2E+2*k3E+k4E);
    V(i+1)=V(i)+h/6*(k1V+2*k2V+2*k3V+k4V);
end
%Noggrannhetsordning
%2^p=(f(t, h) − f(t, h/2))/(f(t, h/2) − f(t, h/4))
Re=(R(t(2,:),h)-R(t(2,:),h/2))/(R(t(2,:),h/2)-R(t(2,:),h/4));
disp([Re]); %Bör bli 16 då p bör vara 4

Skulle vara uppskattat om någon vet hur man ska tänka eller vad som kan vara fel.

Tack!
Citera

Stöd Flashback

Flashback finansieras genom donationer från våra medlemmar och besökare. Det är med hjälp av dig vi kan fortsätta erbjuda en fri samhällsdebatt. Tack för ditt stöd!

Stöd Flashback