2021-09-04, 10:08
  #685
Medlem
Hej, undrar om någon eller några av er Matlab-geniuses kan hjälpa mig med ett par saker:

Jag har grafen G och har skapat matrisen A...

Citat:
  • Skriv en funktion, walksexact (A, k), som tar en matris A och en sträcka k och beräknar en matris som innehåller antalet promenader från vi till vj i exakt k -steg.
  • Använd walksexact för att skriva en funktion walkmax (A, k) som beräknar antalet promenader i högst k steg.
  • Skriv en funktion, eccentricities (A), som tar en matris och beräknar en lista med ecc (v) för alla hörn.

Matematiken förstår jag, men använda matlab och skapa funktioner för detta är jag inte riktigt med på hur jag gör...
Citera
2021-09-05, 23:39
  #686
Medlem
Citat:
Ursprungligen postat av mulpac
Matlab brukar väl inte ens rita några axlar genom origo, utan brukar ha skalan på en ram runt figuren som standard.
Ja, det verkar så.
Jag hittade hur som helst nyss ett sätt att "simulera" tjocka x- och y-axlar (tillsammans med ett rutnät);

xline(0,'LineWidth',2)
hold on
yline(0,'LineWidth',2)
axis([-10 10 -10 10])
grid on


Det finns säkert nån bättre lösning, men den här lösningen verkar fungera fint för det avsedda ändamålet i alla fall.
__________________
Senast redigerad av Peter_18 2021-09-06 kl. 00:12.
Citera
2021-09-09, 06:51
  #687
Medlem
Igni-ferroques avatar
Citat:
Ursprungligen postat av gloende
Hej, undrar om någon eller några av er Matlab-geniuses kan hjälpa mig med ett par saker:

Jag har grafen G och har skapat matrisen A...



Matematiken förstår jag, men använda matlab och skapa funktioner för detta är jag inte riktigt med på hur jag gör...

Sent svar, har inte Matlab på burken just nu, men tror du kan köra rekursivt typ:

Walkexact(nod,steg,sekvens)

Du lagrar noderna du besökt i sekvens och tillåter aldrig återbesök. Stegen lagras i steg, nuvarande nod = nod.

Som base case kan du köra med fallet att du kollar matrisen och ser att noden du står i kan nå slutnoden i ett steg samt att steg+1 blir k. då kan du bara printa sekvens +slutnoden.

Om ej base case så koll om steg är lika med k-1 --> gör inget om steg mindre än k-1 anropa walkexact med de angränsande noderna om de inte finns i sekvens(tillåter inga återbesök) med steg+1 samt nod=nynod och sekvens = sekvens + nynod.

Allt initieras med att man startar i just startnoden med sekvens=tom sträng.

Blev ju typ pseudokod av det där, men tror iaf att rekursion är rätt väg att gå.
Citera
2021-09-21, 21:19
  #688
Medlem
Nybörjare matlab...Testar här, har kört lite fast med en rekursiv formel. Se kommentar i nedersta while-loop. Jag får inte programmet att förstå att tilldela X_n till x så att värdet på x uppdateras till villkoret uppfylls. Någon som kan hjälpa?

</>
clear,clc
A=input('Give me a postive number')
x=randi([0,A,],1,1)
n=0;
y_n=(1./A).*x^2;
x_n=(x/8).*(15-y_n.*(10-3.*y_n));

epsilon=input('Give me a postive number larger than 1')


while abs(x_n-x)>epsilon
%vill hålla koll på antalet körningar.
n=n+1
%Vill att x_n används som x i former nedan och körs till villkoret ovan
%är uppfyllt.
x_n=x

y_n=(1/A).*x^2;

x_n=(x./8)*(15-y_n*(10-3*y_n));


end
x_n
x
sqrt(A)
n
</>
Citera
2021-09-21, 21:54
  #689
Medlem
Citat:
Ursprungligen postat av Heffas
Nybörjare matlab...Testar här, har kört lite fast med en rekursiv formel. Se kommentar i nedersta while-loop. Jag får inte programmet att förstå att tilldela X_n till x så att värdet på x uppdateras till villkoret uppfylls. Någon som kan hjälpa?

</>
clear,clc
A=input('Give me a postive number')
x=randi([0,A,],1,1)
n=0;
y_n=(1./A).*x^2;
x_n=(x/8).*(15-y_n.*(10-3.*y_n));

epsilon=input('Give me a postive number larger than 1')


while abs(x_n-x)>epsilon
%vill hålla koll på antalet körningar.
n=n+1
%Vill att x_n används som x i former nedan och körs till villkoret ovan
%är uppfyllt.
x_n=x

y_n=(1/A).*x^2;

x_n=(x./8)*(15-y_n*(10-3*y_n));


end
x_n
x
sqrt(A)
n
</>


Snälla, använd kod-taggar och eventuellt indentering då detta underlättar läsning..
Kod:
% Vill att x_n används som x i former nedan och körs till villkoret ovan
% är uppfyllt.
x_n=x
y_n=(1/A).*x^2;
x_n=(x./8)*(15-y_n*(10-3*y_n));
Vad blir effekten av den rad som följer direkt efter kommentaren? Vilket värde används för "x" i raderna därefter efter..

Sedan, ett tips: verifiera alltid input från användaren! Testa att inlästa variabeln är vad du vill ha, ett positivt tal i detta fall. Om det inte är ok, skriv ett meddelande till användaren och avbryt med något liknande:
Kod:
error('Meddelande text');
Citera
2021-09-22, 07:04
  #690
Medlem
Citat:
Ursprungligen postat av NoHacks
Snälla, använd kod-taggar och eventuellt indentering då detta underlättar läsning..
Kod:
% Vill att x_n används som x i former nedan och körs till villkoret ovan
% är uppfyllt.
x_n=x
y_n=(1/A).*x^2;
x_n=(x./8)*(15-y_n*(10-3*y_n));
Vad blir effekten av den rad som följer direkt efter kommentaren? Vilket värde används för "x" i raderna därefter efter..

Sedan, ett tips: verifiera alltid input från användaren! Testa att inlästa variabeln är vad du vill ha, ett positivt tal i detta fall. Om det inte är ok, skriv ett meddelande till användaren och avbryt med något liknande:
Kod:
error('Meddelande text');

Tack så mycket för förslagen. Att använda kodtaggar är inget jag gjort. Menar du
Kod:
 Skriva kod
?

Insåg att jag vände på tilldelningen av variabeln av x efter din kommentar. Nu är koden som jag vill ha den, och gör vad jag vill att den ska göra. ...Kan snyggas till... Tyvärr ser jag inget samband mellan A och sista värdet på x som jag borde, så förmodligen har jag tolkat skoluppgiften fel. Tack för inputt.
Citera
2021-10-08, 16:43
  #691
Medlem
papperskulas avatar
om jag vill skapa en variabel som är ett slumpmässigt tal mellan 0 och 2*pi , hur gör jag då ?
Citera
2021-10-08, 22:53
  #692
Medlem
Igni-ferroques avatar
Citat:
Ursprungligen postat av papperskula
om jag vill skapa en variabel som är ett slumpmässigt tal mellan 0 och 2*pi , hur gör jag då ?

Kanske så här? : https://www.mathworks.com/help/matla...fic-range.html
Citera
2022-09-04, 20:55
  #693
Medlem
Jag skulle behöva lite hjälp med att förbättra ett enkelt program som jag skrev för en stund sen, som ser ut så här:

syms x;
Repeat = 1;

while Repeat == 1

Equation = input("Equation, with x as a variable: ");
fprintf("Result = %g\n", solve(Equation, x));

disp(' ');
Repeat = input("Do you want to calculate another equation? ");

end

Det här programmet tillåter mig alltså helt enkelt att på ett mer bekvämt sätt lösa okända variabler i en rad olika ekvationer, och upprepa det kommandot hur länge jag vill;
de saker som jag skulle vilja förbättra är dels att programmet tillåter mig att välja vilken variabel som jag vill ha som "syms"-symbol
(jag försökte att lägga ett input-kommando efter "syms", men detta gjorde bara att hela input-kommandot misstogs för en symbol),
och jag skulle också vilja använda ett ord som "while"-villkor, istället för en siffra - i det här fallet lämpligtvis "Yes".
Hur gör man de ändringarna?
__________________
Senast redigerad av Peter_18 2022-09-04 kl. 21:19.
Citera

Skapa ett konto eller logga in för att kommentera

Du måste vara medlem för att kunna kommentera

Skapa ett konto

Det är enkelt att registrera ett nytt konto

Bli medlem

Logga in

Har du redan ett konto? Logga in här

Logga in