Help with symbolic variables
    5 ビュー (過去 30 日間)
  
       古いコメントを表示
    
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
0 件のコメント
採用された回答
  Mischa Kim
    
      
 2014 年 3 月 7 日
        
      編集済み: Mischa Kim
    
      
 2014 年 3 月 7 日
  
      Tom, do you mean something like
 Plm_vec(i,:) = subs(Plm(i,:),{theta},{[pi/4, pi/5, pi/6]});
6 件のコメント
  Mischa Kim
    
      
 2014 年 3 月 7 日
				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])
その他の回答 (0 件)
参考
カテゴリ
				Help Center および File Exchange で Special Values についてさらに検索
			
	Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!