4 svar
82 visningar
Louiger behöver inte mer hjälp
Louiger 470
Postad: 22 nov 2019 16:03

Samla värden i vektor

Hur gör jag om jag vill samla de tre värden jag får när jag loopar följande program i en vektor?

Program:

for h=[0.5 1 2];
a=-1; b=1;
n=(b-a)/h;
summan=0;

for i=1:(n-1)
x=a+i*h;
summan=funkis(x)+summan;
end
Th=h*(summan+funkis(a)/2+funkis(b)/2)
end

 

Resultat:

Th =

3.9881


Th =

3.9841


Th =

3.9681

 

Men jag vill ju få det Th=  3.9881  3.9841  3.9681

Jag hat provat sätta Th=[]; före, funkar ej. Har Provat ny for sats som loopat 3ggr och försökt på det sättet, men kanske gjort fel.

Dr. G 9479
Postad: 22 nov 2019 16:56

Det finns flera varianter.

Du kan låta Th vara en vektor och byta raden

Th =h*(summan+funkis(a)/2+funkis(b)/2)

mot

Th(i) = h*(summan+funkis(a)/2+funkis(b)/2)

Annars kan du definiera en tom vektor före loopen:

v = [];

och sedan stoppa in Th i den i slutet av loopen:

v = [v;Th];

så finns dina Th-värden lagrade i v.

Louiger 470
Postad: 22 nov 2019 17:11
Dr. G skrev:

Det finns flera varianter.

Du kan låta Th vara en vektor och byta raden

Th =h*(summan+funkis(a)/2+funkis(b)/2)

mot

Th(i) = h*(summan+funkis(a)/2+funkis(b)/2)

Annars kan du definiera en tom vektor före loopen:

v = [];

och sedan stoppa in Th i den i slutet av loopen:

v = [v;Th];

så finns dina Th-värden lagrade i v.

Den med Th(i) provade jag innan men fick inte att funka. Ser att jag kanske inte gjort rätt när jag provade med tom vektor, provar den igen :-)

Dr. G 9479
Postad: 22 nov 2019 17:26

Här är kod som visat båda varianterna (med en annan funktion):

function y = f(x)
y = 200*sin(pi*x) + 10*x.^4 - exp(x.^2)/10;
end

B = [];
v = [0:.5:3]';
for j = 1:length(v)
A(j) = f(v(j));
B = [B;f(v(j))];
end

A'
B

Louiger 470
Postad: 22 nov 2019 17:56
Dr. G skrev:

Här är kod som visat båda varianterna (med en annan funktion):

function y = f(x)
y = 200*sin(pi*x) + 10*x.^4 - exp(x.^2)/10;
end

B = [];
v = [0:.5:3]';
for j = 1:length(v)
A(j) = f(v(j));
B = [B;f(v(j))];
end

A'
B

Tack igen Dr.G den det fungerade när jag satte v=[v;Th], jag hade försökt med varianter innan och med zeros och allt möjligt, men utan det resultat jag önskat. Försökt fatta böcker och googlingar, men utan att riktigt fatta tydligen. Super tack!!

Svara
Close