Matematik

Deklaration af taylorpolynomium i maple

24. oktober 2016 af emilmuller (Slettet) - Niveau: Universitet/Videregående

Jeg har et par problemer med at få deklareret et taylorpolynomium som en funktion i Maple18.

Min kode er:

Jeg kan plotte grafen for dette polynomium, men når jeg prøver at angive en x-værdi(eg. T100(1/2)) returnerer funktionen bare polynomiet (som hvis jeg havde tastet T100(x)).

På forhånd tak for hjælpen.


Brugbart svar (0)

Svar #1
24. oktober 2016 af Therk

assign fungerer ligesom := operatoren.

mtaylor er en funktion, der tillader dig at ignorere restleddet direkte, så du slipper for at konvertere (originalt til det multidimensionale tilfælde). Dvs. mtaylor(arcsin(x),x = 0, 101); er ækvivalent med convert(taylor(arcsin(x),x = 0,101),polynom);

Det du gør i din tredje linje, T100 := x -> f er at du lader (rigtigt nok) T100 være en funktion af x, men af det konstante udtryk f. For hvert kald af T100(a) kalder du f som en konstant, som den var defineret i første linje. Du skal have trukket x ud af f som en variabel. Det kan du gøre med funktionen unapply. Dvs.

T100 := unapply(f,x);

gør det du ønsker.

\rule{7cm}{0.4pt}

Alternativt, for at også få f til at fungere som forventet:

f := unapply(mtaylor(arcsin(x),x=0,101),x);

T100 := x -> f(x);

T100 := unapply(f(x),x); # Fungerer på samme måde som forrige linje.


Svar #2
24. oktober 2016 af emilmuller (Slettet)

Det fungerer nu.

Tusinde tak for det grundige svar!

Hvis du har tid kan du så forklare mig hvorfor f bliver betragtet som et konstant udtryk i denne sammenhæng?


Brugbart svar (0)

Svar #3
24. oktober 2016 af Therk

Velbekomme.

Det er måske nemmere at forklare i et lignende, men simplificeret udtryk. Dit f bliver defineret på samme måde som g herunder:

g := 2*x;

Da vi har tildelt g værdien 2x, vil Maple alle steder substituere g med 2*x. Når du så laver T100 som en funktion med variabel x, tildeler du i #0 værdien f til hver værdi af x. Det betyder at når du kalder din funktion T100 med en (vilkårlig) variabelværdi, kalder funktionen f - som er konstant.

T100 := x -> g;
T100(a) # sæt variablen lig a og indsæt udtrykket g.

Men Maple skal vide at x er vores variabel - også for g! unapply(g,x), derimod, trækker alle x'er ud af udtrykket g og lader dem være variable; nøjagtig som vi gerne vil have.

Det er derfor du får samme problem, hvis du benytter genkaldsoperatoren %. Da kan du heller ikke bruge den almindelige ":= x ->" funktionstildeling, men er nødt til at bruge unapply, da udtrykket ellers ikke vil variere med funktionsargumentet.

\rule{7cm}{0.4pt}

Du kan, for sjov, også benytte substitutionsfunktionen, som, for de simple tilfælde her, fungerer på samme måde som unapply, men har den fordel at have et intuitivt navn.

T100 := y -> subs(x = y, f); ## I udtrykket f, erstat alle x'er med y'er - y er funktionsargument.
T100 := unapply(f,x);  ## I udtrykket f, lad x være et funktionsargument.

Det blev også lidt langt, men jeg håber det gav dig svar på dit spørgsmål!


Svar #4
24. oktober 2016 af emilmuller (Slettet)

Mange tak, det er dejligt at få lidt større indsigt i hvordan Maple evaluerer udtrykkende.


Skriv et svar til: Deklaration af taylorpolynomium i maple

Du skal være logget ind, for at skrive et svar til dette spørgsmål. Klik her for at logge ind.
Har du ikke en bruger på Studieportalen.dk? Klik her for at oprette en bruger.