7 svar
270 visningar
skrållan100 394
Postad: 13 aug 2022 16:55

prod, linspace och logspace

Hej, 

jag har följande kod som ska lösas:

c8=prod(linspace(0.1,10,3)+1e-31-logspace(-1,1,3)-1e-31)

 

Var del i parantesen för sig tänker jag blir:

A=linspace(0.1,10,3)
A=[0.1   5.5   10]

B=logspace(-1,1,3)
B=[0.1   1   10]

Där +1e-31-1e-31 = 0

Men hur sätts detta ihop i funktionen prod? Vilka värden multipliceras med varandra?

Vi använder matlab i kursen och detta är en uppgift där kod ges som ska lösas utan programmet. 

Matsmats 579
Postad: 13 aug 2022 17:57

prod av en vektor ger produkten av elementen i vektorn, ex. prod(1:3) = 1 * 2 * 3 = 6

skrållan100 394
Postad: 13 aug 2022 18:37

Så långt är jag med i funktionen. Men här har jag väl något i stil med:

c8 = prod( 0.1  5.05  10  -  0.1  1  10) 

Där första delen innan subtrationstecknet är från linspace och det andra från logspace. Hur multiplicerar jag elementen här?

Hondel 1565
Postad: 13 aug 2022 22:37

Jag skulle gissa att det först blir elementvis subtraktion, och sedan multipliceras resultat. Vilket då blir 0, eftersom både första och sista elementet första elementet ska bli 0.

Matsmats 579
Postad: 14 aug 2022 00:14

Precis. Förutom eventuella konstigheter beroende på avrundningar.

skrållan100 394
Postad: 14 aug 2022 08:47

Tack! Hittar dock bara hur funktionen prod används för matriser med flera rader. Där multiplicerar de elementen i kolonnerna med varandra. Nu får jag väl dock: c8 = prod(0  4.05  0) och multiplicerar jag detta blir c8=0? Svaret ska ju bli c8 = 4.0500e-62

Hondel 1565
Postad: 14 aug 2022 09:11

Jag misstänker att det är som Matsmats säger, att det blir inte 0 pga numeriska problem

Matsmats 579
Postad: 15 aug 2022 07:57

Lurigt. Jag gissar att MATLAB räknar från vänster till höger och då blir element 1 och 3 i vektorn 0 eftersom MATLAB har en precision på ungefär 15 decimaler. Då blir resultatet av element 1 och 3 först noll, sedan drar man bort 1e-31 igen.

Element 2 påverkas inte eftersom 4.05 + 1e-31 blir samma sak som 4.05 pga den begränsade precisionen.

Svara
Close