Help with symbolic variables

3 visualizzazioni (ultimi 30 giorni)
Tom
Tom il 7 Mar 2014
Commentato: Tom il 7 Mar 2014
Sorry, reposting this question again to see if any of you kind folk can help.
Hello,
I have the following to calculate associated legendre polynomials (in terms of angles: http://en.wikipedia.org/wiki/Associated_legendre_polynomials#Reparameterization_in_terms_of_angles)
%Calculating associated legendre polynomials %Using Rodriguez formula
syms z theta
m = 0;
l = 0;
for i = 1:10
Pl(i,:) = (inv((2^l)*factorial(l)))*diff(((z^2 - 1)^l),l);
Plm(i,:) = ((-1)^m)*((sin(theta))^m)*diff(Pl(i,:),m);
Plm(i,:) = subs(Plm(i,:), z, cos(theta));
l = l + 1;
end
I am struggling to find the way to replace the symbolic variable theta with a vector containing numerical values.
Any help would be greatly appreciated.
Tom

Risposta accettata

Mischa Kim
Mischa Kim il 7 Mar 2014
Modificato: Mischa Kim il 7 Mar 2014
Tom, do you mean something like
Plm_vec(i,:) = subs(Plm(i,:),{theta},{[pi/4, pi/5, pi/6]});
  6 Commenti
Mischa Kim
Mischa Kim il 7 Mar 2014
Copy-paste-execute the code below in the MATLAB command window:
clear all
syms z theta
m = 0;
l = 0;
for i = 1:10
Pl(i,:) = (inv((2^l)*factorial(l)))*diff(((z^2 - 1)^l),l);
Plm(i,:) = ((-1)^m)*((sin(theta))^m)*diff(Pl(i,:),m);
Plm(i,:) = subs(Plm(i,:), z, cos(theta)); l = l + 1;
Plm_vec(i,:) = subs(Plm(i,:),{theta}, {[pi/4, pi/5, pi/6]});
end
disp(Plm_vec)
you should get a 10-by-3 array of values. And, yes, you can evaluate outside the loop. E.g., following the loop you could do
subs(Plm(3),{theta},[0:0.1:0.5])
Tom
Tom il 7 Mar 2014
Perfect, thanks a lot!
Sorry to keep bothering you with silly questions. But could you also explain why I am unable to use cosd and sind in the symbolic calculations?

Accedi per commentare.

Più risposte (0)

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by