2010-12-11 4 views
1

MATLAB에서 괄호를 n의 자연수로 확장하는 함수를 만들려고합니다. 여기서 n은 자연수입니다. 배열의 2 변수

??? The following error occurred converting from sym to double: 
Error using ==> mupadmex 
Error in MuPAD command: DOUBLE cannot convert the input expression into a double 
array. 
If the input expression contains a symbolic variable, use the VPA function instead. 

Error in ==> expandb at 6 
    v(i)=z(i)*x.^(n-i+1)*y.^(i-1); 

그래서 내가 어떻게 배열이 개 변수를 저장합니까 : 나는 그것을 실행할 때

function expandb = expandb(x,y,n) 
z = my_bincoeff1(n);; 
syms v x y 
v=1:n+1 
for i=1:n+1 
    v(i)=z(i)*x.^(n-i+1)*y.^(i-1); 
end 
a=0 
for i=1+n+1 
    a=a+v(i) 
end 

expandb = a; 

이 오류를 얻을 : 이것은 내가 지금까지 가지고 무엇인가?

+0

은'수 expandb'해야하는 기능 :

이 솔루션은 아래 당신이 원하는 것을 달성해야합니까? – Jacob

+0

두 변수의 함수 여야합니다. expandb (2x, 3y, 4)라고 쓰면 대답은 (2x)^4 + 형식이 될 것입니다. – Mobix

+0

당신이하지 않는 이유가 있습니까? [EXPAND] (http://www.mathworks.com/help/toolbox/symbolic/expand.html) 함수를 사용하려면 expand ((2 * x + 3 * y)^4); – gnovice

답변

1

문제는 당신이 다음 줄에 두 값의 배열로를 재정의 먼저 SYMS을 사용하여 상징적 인 개체로 v를 정의에도 불구하고 있다는 사실이다. 그런 다음 루프의 첫 번째 반복에서 v의 첫 번째 요소를 인덱싱하고 해당 요소에 심볼릭 표현식을 배치합니다. 이 오류는 MATLAB이 심볼 표현식을 double 유형으로 변환하여 v 배열의 다른 요소 유형과 일치 시키려고 할 때 발생합니다 (표현식에 xy과 같은 지정되지 않은 기호 객체가 있기 때문에 수행 할 수 없음). 상징적 인 변수 나 숫자의

function v = expandb(x,y,n) 
    z = my_bincoeff1(n); 
    syms v x y 
    v = z(1)*x.^n; %# Initialize v 
    for i = 2:n+1 
    v = v+z(i)*x.^(n-i+1)*y.^(i-1); %# Add terms to v 
    end 
end 
+0

어제 나 자신을 알아 냈지만 노력에 감사드립니다. – Mobix

관련 문제