Avatar billede erve Nybegynder
25. oktober 2004 - 20:27 Der er 6 kommentarer og
1 løsning

Simplex - til Arne V

Hej Arne
For lang tid siden gav du mig en simplexmetode, som vi har benyttet med ret godt resultat (se http://www.eksperten.dk/spm/430144). Vi har imidlertid mistanke om at der er en lille fejl i den. Kan du evt. checke din oprindelige C++ kode, og se om der er smuttet en linie ud i konverteringen til C#.
Det drejer sig om det nederste loop. Skal der ikke være et break i betingelsen hvor man tester om man er nået op på 1. Ellers risikerer man at et evt. senere resultat sætter x[i]=0?

  for(int j=0; j<=lastrow; j++)
  {
    if(d[j,i] != 0 && d[j,i] != 1)
    {
      x[i] = 0;
      break;
    }
    if(d[j,i] == 1)
      x[i] = d[j,lastcol];
    /* Skal der ikke være et break her */
  }
Avatar billede erve Nybegynder
25. oktober 2004 - 20:30 #1
Jeg mener sådan

  if(d[j,i] == 1)
  {
    x[i] = d[j,lastcol];
    /* Skal der ikke være et break her */
  }
Avatar billede arne_v Ekspert
25. oktober 2004 - 20:31 #2
Der er ikke et sådant break i min C++ kode.

Men der er jo ingen garanti for at den C++ kode er korrekt.

Jeg prøver lige at finde noget i mine bøger.
Avatar billede arne_v Ekspert
25. oktober 2004 - 21:46 #3
Jeg har læst lidt.

Men ikke nok til at sætte mig ind i Simplex fra scratch.

Mit gæt er at:

1)  der må godt vær ebreak der men behøver det ikke

2)  problemerne opstår fordi tests som

d[j,i] != 0
d[j,i] != 1
d[j,i] == 1

ikke er særligt gode og burde laves som:

Math.Abs(d[j,i]) > 0.00000001
Math.Abs(d[j,i]-1) > 0.00000001
Math.Abs(d[j,i]-1) < 0.00000001
Avatar billede erve Nybegynder
26. oktober 2004 - 10:23 #4
Ok, tak for hjælpen
Avatar billede erve Nybegynder
26. oktober 2004 - 10:24 #5
smider du lige et svar
Avatar billede arne_v Ekspert
26. oktober 2004 - 10:36 #6
svar
Avatar billede arne_v Ekspert
26. oktober 2004 - 10:36 #7
Virkede det med det andet test ?
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
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.

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