Springen naar inhoud

[wiskunde] taylor benadering tanh(x) in matlab


  • Log in om te kunnen reageren

#1

LiesbethDN

    LiesbethDN


  • >25 berichten
  • 96 berichten
  • Ervaren gebruiker

Geplaatst op 06 augustus 2009 - 20:04

Hoi iedereen !

Voor een practicum-taak moet ik een taylorreeks ontwikkeling rond 0 van tanh(x) opstellen in het interval [-10,10]. Daarna moet ik voor iedere partieelsom ook de relatieve fout berekenen. Dit alles moet ge´mplementeerd worden in Matlab.

Echter, bij het eerste deel loopt het al fout. Ik heb het volgende geprogrammeerd om een partieelsom van graad n te construeren en te plotten :
syms x
x = -10 : 10;
f(x) = tanh(x);
p = vectorize(taylor(f(x),n,0));
f=f(x);
p=eval(p);
plot(x,f,x,p,'r')

Bij de stap p = ... loopt mijn programma vast, en ik begrijp niet zo goed waarom. Kan iemand mij even helpen ?
Ik heb ook al geprobeerd om het commando "maple('taylor(tanh(x),x=0,n)')" te gebruiken, maar dat werktte evenmin.
Bedankt !

Veranderd door LiesbethDN, 06 augustus 2009 - 20:05


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

#2

LiesbethDN

    LiesbethDN


  • >25 berichten
  • 96 berichten
  • Ervaren gebruiker

Geplaatst op 09 augustus 2009 - 09:26

Na dagenlang knoeiwerk heb ik eindelijk iets gevonden dat werkt.
Wanneer ik het verschil bereken tussen mijn taylorbenadering en de oorspronkelijke functie krijg ik verschillen van orde 10^8, is dit normaal?
Mijn fouten worden ook alleen maar groter naargelang ik de graad van de benadering verhoog.
Ik heb het gevoel dat hierbij iets niet klopt, maar wil toch zeker zijn voor ik verder ga knoeien met mijn code.

#3

Xenion

    Xenion


  • >1k berichten
  • 2606 berichten
  • Moderator

Geplaatst op 09 augustus 2009 - 09:44

De taylorbenadering zou exact dezelfde waarden moeten hebben binnen een bepaald interval rond het punt waarin je die uitwerkt. Hoe hoger de graad van je benadering, hoe groter dat interval waarin ze klopt.

Als je erg dicht rond 0 al verschillen van 10^8 hebt dan heb je waarschijnlijk inderdaad iets fout gedaan. Ik heb dit jaar kennis gemaakt met Matlab, maar we hebben er niet genoeg van gezien opdat ik je qua code verder zou kunnen helpen.

Plot anders eerst je originele functie en dan je benadering eens zodat je ziet of dat Řberhaupt al realistisch is voor je aan de foutenrekening begint?

#4

LiesbethDN

    LiesbethDN


  • >25 berichten
  • 96 berichten
  • Ervaren gebruiker

Geplaatst op 09 augustus 2009 - 10:25

Ondertussen heb ik een klein foutje in mijn code ontdekt en ik denk dat het ondertussen min of meer klopt. Mijn plots zien er als volgt uit, ziet dit er een beetje realistisch uit ? Links heb ik de oorspronkelijke functie in het blauw geplot, de benadering in het rood en rechts staat de fout.

Bijlage  taylortanh.pdf   17,48K   75 maal gedownload

Edit : In de opgave staat ook dat we moeten beschrijven wat er speciaal moet gebeuren om de fout rondom nul te berekenen, maar ik heb niet het gevoel dat er hier iets speciaals voor moet gebeuren.

Veranderd door LiesbethDN, 09 augustus 2009 - 10:29


#5

Xenion

    Xenion


  • >1k berichten
  • 2606 berichten
  • Moderator

Geplaatst op 09 augustus 2009 - 10:51

Je blauwe plot in de linkse kolom lijkt me niet correct. In de eerste 2 is de schaal te groot om het echt te kunnen vaststellen, maar bij die waar je y-as van -2 tot +2 gaat zou je toch duidelijker de vorm van de tanh moeten zien.

http://www.wolframal...nput/?i=tanh(x) voor een grafiek. Ik vind niet zo direct hoe je grafieken plot met het forum.

#6

LiesbethDN

    LiesbethDN


  • >25 berichten
  • 96 berichten
  • Ervaren gebruiker

Geplaatst op 09 augustus 2009 - 11:06

Op de plot die ik gepost heb is het niet zo duidelijk te zien, maar wanneer ik inzoom heeft de blauwe plot wel degelijk de vorm van een tanh(x). De grenzen zijn niet -2 en 2 maar -2*10^4 en 2*10^4, ik veronderstel dat de schaal veel te klein is om dit duidelijk te kunnen zien op deze plot. En ik veronderstelde omdat mijn fouten telkens verder en verder in mijn interval nul werden, dat alles ok was. Wanneer ik de matrix van mijn fout even laat afdrukken krijg ik ook voor drie vierde van mijn matrix als waarde 0.

#7

Xenion

    Xenion


  • >1k berichten
  • 2606 berichten
  • Moderator

Geplaatst op 09 augustus 2009 - 16:14

Ik denk wel dat het zo kan kloppen. Het groter wordende nulgebied in je foutengrafieken naarmate de graad van de benadering stijgt is al zeker positief ;)

#8

LiesbethDN

    LiesbethDN


  • >25 berichten
  • 96 berichten
  • Ervaren gebruiker

Geplaatst op 18 augustus 2009 - 19:06

Heb net een "subtiliteit" ontdekt in de opgave van mijn opdracht. Blijkbaar moest niet de absolute maar de relatieve fout weergegeven worden. De formule is dus de absolute fout gedeeld door de exacte waarde. Maar in het punt 0 is de exacte waarde van tanh(0) 0. Hoe los ik dit op?

#9

Xenion

    Xenion


  • >1k berichten
  • 2606 berichten
  • Moderator

Geplaatst op 18 augustus 2009 - 21:06

Heb net een "subtiliteit" ontdekt in de opgave van mijn opdracht. Blijkbaar moest niet de absolute maar de relatieve fout weergegeven worden. De formule is dus de absolute fout gedeeld door de exacte waarde. Maar in het punt 0 is de exacte waarde van tanh(0) 0. Hoe los ik dit op?


Volgens mij mag je wel gewoon zeggen, "if x = 0 then rel_error = 0", omdat je de taylorveelterm rond 0 neemt gaat zelfs de eerstegraadsbenadering in het punt waar je de benadering geeft de exacte waarde geven.

Kan iemand dit misschien bevestigen?

#10

Phys

    Phys


  • >5k berichten
  • 7556 berichten
  • VIP

Geplaatst op 18 augustus 2009 - 21:44

Heb net een "subtiliteit" ontdekt in de opgave van mijn opdracht.

Edit : In de opgave staat ook dat we moeten beschrijven wat er speciaal moet gebeuren om de fout rondom nul te berekenen, maar ik heb niet het gevoel dat er hier iets speciaals voor moet gebeuren.

;)

De exacte waarde is 0. De benaderde waarde is 0. Dus de absolute fout is |0-0|=0. De relatieve fout is in dit geval volgens mij gewoon niet gedefinieerd. Wellicht willen ze dat je in woorden omschrijft wat dit betekent o.i.d.? Ik weet niet of ze met 'iets speciaals' doelen op een of andere magische truc...
Never express yourself more clearly than you think.
- Niels Bohr -

#11

LiesbethDN

    LiesbethDN


  • >25 berichten
  • 96 berichten
  • Ervaren gebruiker

Geplaatst op 19 augustus 2009 - 07:50

De exacte opgave luidt "leg uit hoe je de relatieve fout berekent in de omgeving van de oorsprong".

Misschien los ik het dan wel zo op, gewoon uitleggen dat omdat je door 0 deelt er een onbepaaldheid ontstaat en de fout niet gedefinieerd is.

Bedankt voor het snelle antwoord!





0 gebruiker(s) lezen dit onderwerp

0 leden, 0 bezoekers, 0 anonieme gebruikers

Ook adverteren op onze website? Lees hier meer!

Gesponsorde vacatures

Vacatures