3 svar
127 visningar
Thoren 4 – Fd. Medlem
Postad: 7 dec 2018 18:06

Diffekvation matlab

Hej, jag har under några timmar försökt lösa nedanstående uppgift i matlab men lyckas inte få till den, jag får alltid fel riktningsfält och fel funktion. Hjälp uppskattas! Tack på förhand :)  Funktionerna D & S är  :  

D = @(q)300*exp(-0.02*q.^2);
S = @(q) 20*q.^(1.2) +2*q.^(0.4);

 

 

 

 

Affe Jkpg 6630
Postad: 7 dec 2018 23:57

Hur många av oss kan tolka detta:

D = @(q)300*exp(-0.02*q.^2);
S = @(q) 20*q.^(1.2) +2*q.^(0.4);

När du svarar på/skriven en tråd, har du sett rot-tecknet ... längst uppe till höger i editerings-listen?

Dr. G 9484
Postad: 8 dec 2018 10:30

Har du provat matlabs inbyggda diffekvationslösare, t.ex ode45(...)? Annars kan du skriva en egen kodsnutt som använder RK4 eller annan metod. Visa hur du har försökt. 

Affe: funktionerna är skrivna i matlabkod.

D = @(q)300*exp(-0.02*q.^2);
S = @(q) 20*q.^(1.2) +2*q.^(0.4);

Thoren 4 – Fd. Medlem
Postad: 8 dec 2018 11:07
Dr. G skrev:

Har du provat matlabs inbyggda diffekvationslösare, t.ex ode45(...)? Annars kan du skriva en egen kodsnutt som använder RK4 eller annan metod. Visa hur du har försökt. 

Affe: funktionerna är skrivna i matlabkod.

D = @(q)300*exp(-0.02*q.^2);
S = @(q) 20*q.^(1.2) +2*q.^(0.4);

 Jag har gjort på följande sätt på c uppgiften men grafen jag får verkar vara helt fel då den aldrig stabiliseras. K_approx kommer från b uppgiften och slope_field kommer från en m-fil med funktionen.

F = @(t,q) k_approx.*((300*exp(-0.02*q.^2))-(20*q.^(1.2) +2*q.^(0.4)));
t_sf = 0:10:150;
q_sf = q_0-150:15:q_0;
slope_field(F,t_sf,q_sf)
hold on
[tv, qv] = ode45(F,[0 150],q_0)
p_k = plot(tv, qv,'m','LineWidth',2);
grid on, hold on

Svara
Close