2017-10-13 10 views
0

내가 네 다항식 기능 만들기 배열은 다항식의 벡터를 반환하는 함수의 처리

[x; x^2; x^3; x^4] 

의 함수를 만들어

가 지금은 통합하려는 '통합'수치 통합 기능을 사용하는 것을 시도하고있다 적분 함수를 사용하여 행별로이 벡터 행. documentation of integral에 따르면

[email protected] 
integral(test_var,0,1) 
Error using^
One argument must be a square matrix and the other must be a scalar. 
Use POWER (.^) for elementwise power. 

Error in test (line 2) 
    f = [x,x^2,x^3,x^4]; 

Error in integralCalc/iterateScalarValued (line 314) 
      fx = FUN(t); 

Error in integralCalc/vadapt (line 132) 
     [q,errbnd] = iterateScalarValued(u,tinterval,pathlen); 

Error in integralCalc (line 75) 
    [q,errbnd] = vadapt(@AtoBInvTransform,interval); 

Error in integral (line 88) 
Q = integralCalc(fun,a,b,opstruct); 

답변

0

: 나는 그것을 명령 줄을 호출 할 때 나는 다음과 같은 오류가 함수에 대한 함수 핸들을 시도하고

function f = test(x) 
    f = [x,x^2,x^3,x^4]; 
end 

그러나 '통합'함수에 전달 :

q = integral(fun, xmin, xmax)

대한
  1. 스칼라 반환 함수fun 당신이 벡터의 입력을 받아 및 벡터 출력을 생성하도록 함수를 정의 할 필요가있다. 스칼라 반환 문제에 대한

    는 기능 y = fun(x)는 벡터 인수, x에 동의해야하고, y을 벡터 결과를 반환합니다. 이것은 일반적으로 fun가 행렬 연산자 대신 배열 연산자를 사용해야한다는 것을 의미합니다. 예를 들어 * (mtimes) 대신 .* (times)을 사용하십시오.

  2. 당신은 할 경우 벡터 함수은 입력 플래그 'ArrayValued' 사용할 필요가 fun : true이 플래그가 fun 스칼라 입력을 허용하는 기능을 나타 내기 위해

    세트 벡터, 행렬 또는 ND 배열 출력을 반환합니다.

    그 경우 위의 항목 1의 요구 사항에

    은 필요하지 않습니다 :

    true로 'ArrayValued' 옵션을 설정하면

    , 다음 fun 스칼라을 받아 고정 된 크기의 배열을 반환해야합니다.

    f = @(x) [x; x^2; x^3; x^4]; % or [x; x.^2; x.^3; x.^4]; 
    integral(f, 0, 1, 'ArrayValued', true) % or integral(@f, 0, 1, 'ArrayValued', true) 
                 % if f is defined in a file 
    

    ans = 
        0.500000000000000 
        0.333333333333333 
        0.250000000000000 
        0.200000000000000 
    
    을 제공합니다


그래서, 당신은 당신이 벡터 함수를 가지고 'ArrayValued'가 나타내는 입력 플래그를 추가 필요