Comment obtenir la dérivée d'une fonction dans MATLAB?
Dans la vraie vie, c'est le morceau de gâteau, mais comment vous obtenez un dérivé d'un carré ou au cube de la fonction dans matlab?
Par exemple, A*x^3 + B*x^2 + C*x + D
sera 3*Ax^2 + 2*b*x + C
Je veux obtenir ce dans matlab, mais je ne peux pas comprendre comment 🙁
pour exemple, j'ai essayé ce code mais je reçois stupide résultat (peut-être que je suis le seul qui devrait être blâmé!):
>> x = [6 3 2 1]
x =
6 3 2 1
>> xPrime = diff(x)
xPrime =
-3 -1 -1
Normalement, il devrait donner [18 6 2] ??
Aussi, je voudrais savoir comment yo le faire pour une série de numéros. Par exemple je veux dérivés de chaque point de l'exemple ci-dessus pour n = linspace(0,10,1000)
mise à jour
bien sûr, je peux le faire manuellement, mais j'aimerais savoir comment le faire avec matlab.
Ce que je suis en train de faire maintenant est d'obtenir la tangente de l'exemple ci-dessus et que je fais comme ça et ça fonctionne:
x = linspace(0,10,1000);
y=A*x.^3+B*x.^2+C*x + D;
plot(x,y);
hold on;
slop=3*A.*(Location^2)+2*B.*Location+C;
b=(A.*Location.^3)+(B.*Location.^2)+(C.*Location)+D;
y2=slop*(x-Location)+b;
plot(x,y2,'--r');
legend('Graph of the function','Tangent Line');
hold off;
Ce que je veux dire est ce que je devrait utiliser à la place de la main calculé dérivés de cette ligne:
slop=3*A.*(Location^2)+2*B.*Location+C;
Merci!
polyder(p)
n'avez pas utilisé matlab en temps ne me souviens pas exactement mais je pense que cela fonctionne.Avez-vous pris un coup d'oeil à la documentation de
diff()
? Les docs disent: "Y = diff(X)
calcule les différences entre les éléments adjacents de X
." Qui ne semble pas être ce que vous voulez qu'il fasse.OriginalL'auteur Saeid Yazdani | 2012-03-20
Vous devez vous connecter pour publier un commentaire.
Pour obtenir la dérivée d'un polynôme, qui est lui-même un polynôme, utiliser Matlab
polyder()
fonction. Cela prend la représentation standard des coefficients du polynôme comme vecteur et renvoie sa dérivée seconde coefiicient de vecteur. Vous pouvez évaluer la dérivée d'un polynômep
à une certaine valeurx
comme ceci:0:1000:10
et le point que je veux la tangente de la pente est nommé emplacement. J'ai essayé d'utiliser la ligne que vous avez fournie, mais il ne se soucie pas de cela. une idée de comment puis-je l'utiliser dans mon code?!Voulez-vous dire que vous souhaitez tracer une ligne droite, étant la tangente à la cubique au point
location
, sur la plagex
? Si oui, alors vous voulezslop = polyval(polyder(p), location); tangent = [slop polyval(p3, location) - location*slop]; plot(x, polval(tangent, x);
Oui exactement... mais qu'est-ce que d'une chose:
p
danspolyder(p)
? et aussip3
?Oups my bad! Je devrais avoir utilisé
p
dans les deux endroits: le vecteur des coefficients du polynôme cubique que vous souhaitez que la ligne tangente, dans l'ordre décroissant (de la normale Matlab convention)OriginalL'auteur Max
Vous voulez vérifier Matlab symbolique de la bibliothèque (basé sur l'Érable à moteur). L'idée de base est que vous aurez envie de créer des variables symboliques ('syms'), et ensuite de différencier ces expressions symboliquement. Ensuite, vous pouvez convertir entre votre expression symbolique et une fonction de poignée qui permettra d'évaluer votre expression symbolique à certaines valeurs de coordonnées. Voir ici pour obtenir des instructions sur la syntaxe, la " syms de la bibliothèque, etc.
Dans les applications réelles, bien que, normalement, vous devez écrire votre propre logiciel de fonction pour les mathématiques différentes fonctions que vous avez à faire. Alors, seulement dans des cas particuliers, vous serez en mesure de calculer analytiquement les produits dérivés, et dans ces cas, vous aurez envie d'écrire un autre, distinct de logiciel en fonction de la mathématique-fonction qui est la dérivée. Symbolique des bibliothèques sont généralement très lente et qu'ils (au moins actuellement) sont un moyen inefficace pour générer des fonctions réelles à travers les poignées.
Si tout ce que vous aurez à travailler avec sont des polynômes, cependant, c'est un cas assez spécial que vous devriez être en mesure d'écrire un général de la fonction Matlab qui prend la forme d'un coefficient de liste et une gamme de valeurs d'entrée et de sorties de la dérivée du coefficient de liste plus la dérivée de la fonction évaluée à ces valeurs. Voici un exemple:
OriginalL'auteur ely
Vous pouvez le faire numériquement à l'aide de différences finies. MATLAB possède une fonction
gradient
qui intègre une 2ème ordre précis régime - voir ici.Si vous avez été à la recherche pour plus de précision vous pourrait potentiellement mettre en place votre propre ordre supérieur régime.
Espère que cette aide.
OriginalL'auteur Darren Engwirda
diff
donne la différence entre les éléments successifs de la liste: 3 - 6 -3, 2 - 3 -1, etc.Vous pouvez utiliser le symbolique boîte à outils si vous l'avez. Ou si vous avez uniquement besoin de polynômes, il n'est pas difficile d'écrire vous-même:
Ce juste multiplie chaque coefficient par son exposant (
fliplr
renverse une liste), puis il passe les exposants par un (en déplaçant les éléments de la liste à droite).Cela vous donne une nouvelle représentation d'un polynôme. Pour évaluer un de ces, à un moment donné
x
, essayezMerci, j'ai essayé de faire un lien entre le code écrit et le code que j'ai fait, mais je suis un peu confus où pour remplacer votre code dans la mienne?
OriginalL'auteur Dougal