J'essaie de renvoyer une réponse de Matlab sous la forme d'une variable symbolique. J'ai créé le code suivant et la fonction pour illustrer l'erreur que je reçois:Comment retourner les réponses de la fonction Matlab sous la forme de symboles
clc
clear all
syms L real;
% L = 1 % The code works when I uncomment this line
k1 = [ L, -L;
-L, 2*L]
k2 = [4*L^2, -L;
0, L]
K = GlobalStiffnessMatrix(k1,k2)
Le fichier m GlobalStiffnessMatrix.m est indiqué ci-dessous:
function K = GlobalStiffnessMatrix(k12,k23)
K = zeros(2,2);
K(1,1) = k12(1,1);
K(1,2) = k12(1,2);
K(2,1) = K(1,2);
K(2,2) = k12(2,2) + k23(1,1);
end
Je reçois l'erreur suivante:
The following error occurred converting from sym to double: Error using symengine (line 59) DOUBLE cannot convert the input expression into a double array. If the input expression contains a symbolic variable, use VPA.
J'ai essayé d'utiliser VPA dans la fonction elle-même et le code de simulation mais je reçois toujours la même erreur. Bien sûr, lorsque je décommente le paramètre de ligne L = 1
la fonction fonctionne bien et comme prévu.
Comment faire pour que cette fonction renvoie K
comme variable symbolique?
Vous initialisez votre sortie 'K' en tant que matrice double en utilisant' zeros (2,2) '. Ensuite, vous essayez d'affecter une variable symbolique à l'un de ces éléments et d'obtenir une différence de type. Essayez plutôt d'initialiser votre sortie en utilisant 'sym' comme' K = sym ('K', [2,2]) ' – Wolfie
magnifique! merci qui l'a résolu! – PatStarks
Pas de soucis, j'ai ajouté mon commentaire en guise de réponse complète. Envisager de l'accepter pour que cette question soit close. Merci – Wolfie