Permalänk
Medlem

Derivera i MatLab

Halloj,

Finns det någon funktion i MatLab som kan derivera funktioner med flera variabler? Tex: a^2+sin(b), där a och b är variabler?

Funktionen "diff()" verkar bara kunna räkna ut derivatan för ekvationer med en variabel.

Tack på förhand

Permalänk
Medlem

ja. Förslagsvis i en tvådimmensionell array för att ode45 ska förstå

Permalänk
Medlem

Jag förstår inte riktigt vad du menar. Vad jag vet så är Ode45 en datatyp!? Har du lust att ge ett exempel för tex denna funktion (som har tre variabler):

f = (sin(a) + cos(a) * tan(b)) / (cos(c) * tan(b))

Permalänk
Medlem

om du har symboliska toolboxen så kan du definiera symboler med kommandot syms...

Vad är det du vill åstadkomma?

Visa signatur

weeeee

Permalänk
Medlem
Citat:

Ursprungligen inskrivet av mounte
om du har symboliska toolboxen så kan du definiera symboler med kommandot syms...

Vad är det du vill åstadkomma?

visst kan jag definiera symboler med "syms", men matlab verkar inte fatta att det är två variabler när jag använder funktionen "diff( )".

Kör jag:

>> syms a b
>> diff(a^2 - b^3)

fås svaret:

ans = (-3*b^2)

variabeln "a" ses alltså som en konstant och försvinner i derivatan.

Det jag vill åstadkomma är att lösa en funktion likt den jag skrivit i ett inlägg över. dvs en ekv med flera variabler.

Permalänk
Glömsk

I exemplet ovan, finns det någon relation mellan a och b? Om exempelvis a = b/2 kan du skriva om:

diff((b/2)^2 - b^3)

Visa signatur

...man is not free unless government is limited. There's a clear cause and effect here that is as neat and predictable as a law of physics: As government expands, liberty contracts.

Permalänk
Medlem

Vad är det du vill ha ut? En gradient?

Permalänk
Medlem
Citat:

Ursprungligen inskrivet av Psionicist
I exemplet ovan, finns det någon relation mellan a och b? Om exempelvis a = b/2 kan du skriva om:

diff((b/2)^2 - b^3)

Ja, de beror visserligen alla på en variabel, men de går inte att lösa ut på något vettigt sätt.

Citat:

Ursprungligen inskrivet av roofa
Vad är det du vill ha ut? En gradient?

nej, en ekvation likt det som diff( ) ger, men eftersom jag har en grundekvation med flera variabler letar jag efter en funktion eller lösning till hur jag skall kunna derivera funktionen i MatLab. Den går att derivera manuellt, men då funktionen är ganska krånglig blir uttrycket kilometerlångt och det smyger in sig fel...

Permalänk

Utifrån vad jag förstått av derivering är väl att man alltid måste derivera med avseende på någon variabel, inte fler än en? Läser dock endast MaE på gymnasiet nu, kanske inte stämmer överhuvudtaget.

Permalänk
Citat:

Ursprungligen inskrivet av Madoor
Ja, de beror visserligen alla på en variabel, men de går inte att lösa ut på något vettigt sätt.

nej, en ekvation likt det som diff( ) ger, men eftersom jag har en grundekvation med flera variabler letar jag efter en funktion eller lösning till hur jag skall kunna derivera funktionen i MatLab. Den går att derivera manuellt, men då funktionen är ganska krånglig blir uttrycket kilometerlångt och det smyger in sig fel...

Visa då med ett kortare exempel på hur du går tillväga när du deriverar manuellt annars kommer vi nog inte kunna hjälpa dig.

Är det något sådant här du försöker göra:

A = [1 2 3]; B = [3 2 1]; y = A.^2 + 3*B.^2; diff(y) ans = -12 -4

Permalänk
Medlem

Madoor, enligt det exempel du drog ... så stämmer ju det ... vad vill du ha för resultat egentligen=
Den partiella derivatan map. variabeln a kommer hantera alla andra variabler som konstanter

glöm inte att du kan speca vilken variabel du vill derivera map som andra argument i diff

Visa signatur

weeeee

Permalänk
Citat:

Ursprungligen inskrivet av vigge89
Utifrån vad jag förstått av derivering är väl att man alltid måste derivera med avseende på någon variabel, inte fler än en? Läser dock endast MaE på gymnasiet nu, kanske inte stämmer överhuvudtaget.

Går utmärkt att derivera med avseende på flera variabler, blir bara lite krångligare/mer att göra

Se tex http://sv.wikipedia.org/wiki/Partiell_derivata

Permalänk
Medlem

Rent allmänt kan sägas att matlab inte är något vidare till derivering, dock är det himla bra på andra saker. Om trådskaparen har möjlighet att använda andra program som exempelvis maple ellet mathematica så gör det istället.

Visa signatur

| Errare humanum est |

Permalänk
Medlem

Men trådskaparen måste nog försöka förklara lite tydligare vad som förväntas som resultat. Är det differentialen?

Permalänk
Medlem
Citat:

Jag förstår inte riktigt vad du menar. Vad jag vet så är Ode45 en datatyp!? Har du lust att ge ett exempel för tex denna funktion (som har tre variabler):

f = (sin(a) + cos(a) * tan(b)) / (cos(c) * tan(b))

jag tror jag missförstog din fråga: jag trodde du hade deriverat funktionen och hade skrivit ner formeln. Om du har en funktion och deriverar den själv och sedan ger matlab den nya funktionen så klarar matlab att räkna din diffekvation.

Permalänk
Medlem

heande, matlab fungerar ypperligt att derivera med. Den symboliska toolboxen är Maple kort o gott ... så bara att definera symboler med kommandot syms sedan räknar matlab symboliskt mha Maple ...

Visa signatur

weeeee