2014-10-20 3 views
0

많은 변수가 있으므로 나와 함께 감내하십시오. 디버깅 후 Tinf를 제외하고 모든 변수가 올바르게 작동하므로 다른 모든 변수가 일정하다고 가정합니다. Tinf은 t 내가함수의 행렬, fzero가 작동하지 않습니다.

[email protected](x) ((I(1).^2).*Rprime(1))+(Alpha.*D(1).*Gs)-(o*E*pi.*D(1).*(x.^4-Tinf.^4))-(h*pi.*D(1).*(x-Tinf)) 

(기억 경우

T(1)=fzero(fun_Partridge,0) 

을 계산하기 위해 노력하고

t=linspace(0,50,600) 

입니다 t의 함수이다

Tinf=34.5*cos((2*pi).*(t-5))+275.5 

으로 정의된다 다른 모든 변수들이 작동하고있다. "

: 또한 기본적으로 상수, 행렬은 하나 개의 값 각각)의 두 개의 열이 있습니다있는 변수 광석

모든 것이 잘 실행

T(1)=fzero(fun_Partridge,0) 

때까지 나는 오류 메시지가 || 피연산자 & & 연산자는 논리 스칼라 값으로 변환 할 수 있어야합니다.

fzero (줄 308)의 오류 elseif ~ isfinite (fx) || ~ isreal (fx)

MaxSag_Take_2 (줄 102)의 오류 T (1) = fzero (fun_Partridge, 0); "

나는 매트랩에 관해서 크기, 모양을 모른 채

+0

'options = optimset ('Display', 'iter');'시도해도 iterate가 시작되는지 여부를 확인할 수 있습니다. '[x fval exitflag output] = fzero (fun, x0, options) '에 따른다. – NKN

+0

나는 MatLab에 익숙하지 않아서 코드의 모든 마침표를 알지 못한다. 어떤 부서라도, 나는 당신이 어느 시점에서라도 0으로 나눈 것을 확인하지 않을 것입니다. – TheBlindSpring

답변

0

! 사전에. 그래서 약간 바보 같은 것들을 아래에 주저하지 말아 주시기 바랍니다 감사를 매우 초보자입니다, 그리고 다른 변수를 입력하기는 어렵지만 그 오류 메시지를 기반으로 fx은 스칼라이어야하며 벡터로 나오므로 fzero에 무언가를 전달하는 것이 바람직하지 않습니다.

지금 당장 MATLAB이 없지만보고 있습니다. fun_Partridge 함수를 사용하면 일부 변수의 행렬 곱셈과 다른 요소의 요소 곱셈이 수행됩니다. o 및/또는 E이 벡터 인 경우 이 sum과 같은 함수를 사용하여 fx을 구성하면 벡터 함수 대신 행렬로 끝날 수 있습니다.이 경우 스칼라 대신 벡터가 생성되어 단락이 발생합니다및 ||의 동작이 중단됩니다.

위의 @ NKN의 덧글 외에도 size(fun_Partridge(1))을 실행하고 벡터 또는 매트릭스가 없는지 확인하십시오.

+0

나는 카운터를 가지고 for-loop를하는 것을 끝내었고, 어쨌든 단기간에 고정 된 것으로 보인다. –

관련 문제