Avatar billede soreno Praktikant
05. marts 2003 - 00:09 Der er 6 kommentarer og
1 løsning

løs min ligning

Jeg har mistet overblikket og ønsker derfor denne ligning løst:
x = 8064a + 63b + c

Jeg har fundet frem til at:
a = (x - 63b - c) / 8064
b = (x - 8064a -c) / 63
c = x - 8064a - 63b

Men jeg har problemer når jeg skal sammensætte ligningerne (hedder vist noget med 3 ubekendte osv..). Derfor ønsker jeg at få isoleret samt forkortet a, b og c.

Alternativt ønsker jeg beskrevet en metode så jeg selv kan komme videre.
Avatar billede soreno Praktikant
05. marts 2003 - 00:15 #1
Altså:
Jeg har x og ønsker at beregne a, b og c.
Avatar billede erikjacobsen Ekspert
05. marts 2003 - 01:53 #2
1 ligning med 3 ubekendte kan du ikke løse bedre end du har gjort.

3 (uafhængige) ligninger med 3 ubekendte vil derimod kunne klares - typisk :)
Avatar billede arnvig Nybegynder
05. marts 2003 - 09:38 #3
Ligningen kan ikke løses yderligere.
For at løse ligninger med n ubekendte, skal du have n ligninger.
Du har 3 ubekendte , men kun 1 ligning, så du kan ikke substituere og
dermed finde en værdi til a, b og c.

Hvis du har X, kan du opstille en række tal grupper (a,b,c) som opfylder ligningen.

f.eks. kunne det være at a = 1, b = 1 og c = 1 (1,1,1) for x = 8128
eller  A = 1, B = 2 og c = 5 ( 1,2,5) for x = 8195

Som du kan se kan a, b og c beskrive en ret linie i et 3d koordinat system
med akserne a,b,c
Avatar billede soreno Praktikant
05. marts 2003 - 10:06 #4
Ok.

Problemet er:
Min harddisk har
621 cylindre, som hver har
128 tracks, som hver har
63 sektors.

Altså ialt 621 * 128 * 63 = 5007744 sektors

Hvis jeg vil have nummeret på den sektor der findes i
a = cylinder 300
b = track 100
c = sektor 50

så gør jeg sådan:
x = (a * 128 * 63) + (b * 63) + c
x = (300 * 128 * 63) + (100 * 63) + 50
x = 2419200 + 6300 + 50
x = 2425550

Det jeg gerne vil er regne baglæns.
Altså på hvilken cylinder, track og sector findes x.

Kan det gøres på andre måder ?
Avatar billede arnvig Nybegynder
05. marts 2003 - 10:31 #5
nåå, på den måde.

Det kommer jo an på hvordan de er nummereret, men hvis vi antager at de er nummereret forfra, så gør du sådan :

cylinder = INT( x / (128*63))
restsectors = x - (cylinder * 128 * 63)
track = INT( restsectors / 63 )
sector = restsectors - (track * 63)
Avatar billede arnvig Nybegynder
05. marts 2003 - 10:35 #6
Du kan få en afrundings fejl, på 10 ciffer efter kommaet
f.eks sector = 50,000000000189
Avatar billede soreno Praktikant
05. marts 2003 - 11:35 #7
Perfekt. Det var det jeg skulle bruge.
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Computerworld tilbyder specialiserede kurser i database-management

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester