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.
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.
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 :-)
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
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;
endB = [];
v = [0:.5:3]';
for j = 1:length(v)
A(j) = f(v(j));
B = [B;f(v(j))];
endA'
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!!