Springen naar inhoud

Resultaat symbolische integraal uitgevoerd met matlab wijkt af van handberekende


  • Log in om te kunnen reageren

#1

Stefan13_13

    Stefan13_13


  • 0 - 25 berichten
  • 14 berichten
  • Gebruiker

Geplaatst op 29 september 2010 - 17:38

Hallo,

Een paar dagen geleden liep ik tegen iets raars aan en ik kan er maar niet over uit. :)

integraal( b / (a-b*t) )*dt

met de 'substitutie regel' kan deze gemakkelijk met de hand worden opgelost.
Ik kieste u = a-b*t en hieruit volgt dat dt = -du/b

Invullen levert:
integraal( b / (a-b*t) )*dt = integraal( -1 / u )*du = -ln(u) = -ln(a-b*t)
en klaar.

Ik mijn antwoord controleren met Matlab:
% de gebruikte code:
syms a b t
int(b / (a-b*t), t)

Resulteerd in:
-ln(b*t - a)

Wat wel op mijn antwoord lijkt maar Matlab draait het teken van a-b*t om. :)
Ik snap niet waarom Matlab dat doet!

1) Kan iemand mij uitleggen waarom Matlab dat doet en waarom dat antwoord (ook) goed is? (want Matlab maakt neem ik aan geen fouten ;) ).
2) Eventueel wat ik fout doe in mijn hand berekening. ;)
3) En hoe ik uit het antwoord van Matlab mijn antwoord zou kunnen vinden. (want mijn eigen antwoord had ik uiteindelijk nodig, want ik gebruikte het om een formule af te leiden en anders kwam het gewoon niet goed uit.)

Alvast bedankt! :)

Dit forum kan gratis blijven vanwege banners als deze. Door te registeren zal de onderstaande banner overigens verdwijnen.

#2

ZVdP

    ZVdP


  • >1k berichten
  • 2097 berichten
  • VIP

Geplaatst op 29 september 2010 - 19:22

Zeker dat je alles goed ingegeven/afgelezen hebt, want ik krijg het niet gereproduceerd in matlab.
"Why must you speak when you have nothing to say?" -Hornblower
Conserve energy: Commute with a Hamiltonian

#3

Stefan13_13

    Stefan13_13


  • 0 - 25 berichten
  • 14 berichten
  • Gebruiker

Geplaatst op 29 september 2010 - 20:07

Als ik het onder staande copy past in Matlab (R2009b of R2010b)

syms a b t
int(b / (a-b*t), t)


Dan volgt het onderstaande antwoord (ook een copy past van Matlab naar hier)

Resulteerd in:
-ln(b*t - a)


Ik heb alleen log veranderd in ln omdat Matlab log gebruikt i.p.v. ln

Veranderd door Stefan13_13, 29 september 2010 - 20:08


#4

dirkwb

    dirkwb


  • >1k berichten
  • 4173 berichten
  • Moderator

Geplaatst op 29 september 2010 - 21:40

1) Kan iemand mij uitleggen waarom Matlab dat doet en waarom dat antwoord (ook) goed is? (want Matlab maakt neem ik aan geen fouten ;) ).

Omdat de integraal de absolute waarde is van 1/x.

2) Eventueel wat ik fout doe in mijn hand berekening. ;)

De integratieconstante weglaten.
Quitters never win and winners never quit.

#5

Stefan13_13

    Stefan13_13


  • 0 - 25 berichten
  • 14 berichten
  • Gebruiker

Geplaatst op 30 september 2010 - 08:42

Omdat de integraal de absolute waarde is van 1/x.


Aaah natuurlijk helemaal vergeten! int(1/x) = ln|x|+c
het is ln|x| en dan maakt het teken niet daar binnen meer uit. Tnx! :)
De integratie constante was ik hier idd even vergeten maar in mijn geval was die even niet belangrijk.


Maar dan een vervolg vraag, waarom laat Matlab dan de absoluut strepen weg? ](*,)
(want om dit soort fouten van mijn kant te voorkomen controleer ik het normaal gesproken met Matlab, maar vertrouw ik hem niet helemaal meer... ;) )

#6

Stefan13_13

    Stefan13_13


  • 0 - 25 berichten
  • 14 berichten
  • Gebruiker

Geplaatst op 04 oktober 2010 - 17:01

Weet niemand waarom Matlab de absoluut strepen weglaat? ;)

#7

317070

    317070


  • >5k berichten
  • 5567 berichten
  • Moderator

Geplaatst op 09 oktober 2010 - 19:02

Weet niemand waarom Matlab de absoluut strepen weglaat? ](*,)

De meeste software is slechts in staat om 1 continu gedeelte van een primitieve te berekenen (ze doen het namelijk niet zoals wij dat doen). Je kunt namelijk voor ieder continu deel van een functie een andere constante kiezen, en je functie zal nog steeds een goede primitieve zijn. Op zich klopt de oplossing int(1/x) = ln|x|+c dus wel, maar je hebt niet alle oplossingen mee! De correcte oplossing (die alle mogelijkheden bevat) is:

LaTeX

Met C1 en C2 niet noodzakelijk dezelfde constanten.

De meeste wiskundige programma's gaan er dan 'correct' van uit dat enkel 1 continu deel er toe doet.

Aangezien ln() discontinu is in 0, maakt voor matlab die absolute-waarde tekens niet uit, alles buiten dat continue deel houdt ze ofwel geen rekening mee. Moest het toch nodig zijn, herberekent ze de primitieve die werkt in het deel dat ze nodig heeft.

Overigens: software maakt fouten als ze integralen uitrekent! Ze hebben dus niet altijd gelijk. Wees dus altijd kritisch als er een programma een integraal voor je uitrekent.
What it all comes down to, is that I haven't got it all figured out just yet
And I've got one hand in my pocket and the other one is giving the peace sign
-Alanis Morisette-





0 gebruiker(s) lezen dit onderwerp

0 leden, 0 bezoekers, 0 anonieme gebruikers

Ook adverteren op onze website? Lees hier meer!

Gesponsorde vacatures

Vacatures