2013-01-16 1 views
3

fplot을 사용하여 함수와 그 미분을 플로팅하려고합니다.Matlab에서 fplot 사용

fplot('3*x*sin(x) - 2*x', [-2*pi 2*pi], 'r') 

이 방법이 효과적이지만 아래 명령에서 오류가 표시됩니다.

fplot('diff(3*x*sin(x) - 2*x)', [-2*pi 2*pi], 'g') 

오류가

??? Subscripted assignment dimension mismatch. 

Error in ==> fplot at 105 
x = xmin+minstep; y(2,:) = feval(fun,x,args{4:end}); 

나에게 몇 가지 제안을주십시오

보여?

+0

어떤 에러가 표시됩니까? –

+0

@Pavan 업데이트 된 질문보기 – noufal

+0

두 번째 플롯을 새 플롯에 플롯하여 작동하는지보십시오. –

답변

1

먼저, 미분 계산 문자열의 결과를 변환 한 후 얻은 기능 플롯 수 :

syms x; 
di = char(diff(3*x*sin(x)-2*x)); 
fplot(di, [-2*pi 2*pi], 'g'); 

편집 : @shoelzer 당신이받은 오류에 대한 정확한 설명을 제공합니다.

+1

'@ zplesivcak', 답장을 보내 주셔서 감사합니다 – noufal

4

문제는 을 함수 문자열에 포함하고 있습니다. 귀하의 기능은 N 개의 입력에 대해 N 개의 출력을 생성해야하지만, diff은 N-1 개의 출력을 제공해야합니다. fplot의 문서에서 (강조 추가)

함수의 형식은 Y = F이어야 (X), x는 그 범위의 한계를 지정하는 벡터이며, Y는 같은 크기 벡터이고 x으로 표시하고 x의 지점에 함수의 값을 포함합니다 (첫 번째 예제 참조).

zplesivcak's answer은이 제한을 해결하는 한 가지 방법을 보여줍니다. 당신은 또한 비 상징적으로 기능을 평가할 수 있습니다 :

x = linspace(-2*pi, 2*pi, 1000); 
y = diff(3*x.*sin(x) - 2*x); 
figure 
plot(y) 
+0

'@shoelzer'고맙습니다. ''fplot' 기능. – noufal