Vinnaren i pepparkakshustävlingen!
2012-10-23, 10:42
  #1
Medlem
Hejsan,

Hur kan man omvandla funktioner till ekvationer inom ett program såsom matlab?
Till exempel följande:


function q = gauss(n)
q = [];
for i = 1:10
A = rand((i*1/10)*n,(i*1/10)*n);
b = rand((i*1/10)*n,1);
tic;
A\b;
q(end+1) = toc;
end
end




function w = invers(n)
w = [];
for i = 1:10
A = rand((i*1/10)*n,(i*1/10)*n);
b = rand((i*1/10)*n,1);
tic;
inv(A)*b;
x(end+1) = toc;
end
end



n = input('vilket värde som helst');

y = [];

for j=1:10
y(end+1) = (n*(j/10));
end

x = inver(n);
z = gauss(n);

plot(y,w,y,q);



Är det bara att sätta resultatet (A\b eller inv(A)) likamed x eller är det något mer man måste tänka på?
Kom gärna med ett svar, helst ett utförligt men uppskattar vilket som.
Dessutom lösningen till ett ekvationssystem som beräknas med Gausselimination och inversmultiplikation, så man inte har lösningen ståendes som en funktion.
Citera
2012-10-23, 11:06
  #2
Medlem
förstår inte ens vad du vill göra, jämföra tiden det tar för två olika LES-lösare ?
Citera
2012-10-23, 11:55
  #3
Medlem
Det som vill göras är att ta och jämföra hur lång tid det tar för ett ekvationssystem att hitta lösningen genom gausselimination vs gånger inversen.

Fick en kommentar som antydde att det jag skrivit bara var funktioner och inget ekvationssystem.
Citera
2012-10-23, 13:19
  #4
Medlem
hade jag varit du hade jag jämfört med att lösa samma matris dvs

function tidTester

for i = 1 :n
A = rand(N(i))
b = rand(N(i),1)
tGauss(i) = gaussLosare(A,b)
tInv(i) = invLosare(A,b)
end

plot(...)

end

function t = gaussLosare(A,b)
....
end

function t = invLosare(A,b)
....
end

så typ hade jag gjort

edit högerled skall vara med också
__________________
Senast redigerad av Stork123 2012-10-23 kl. 13:23.
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