2016-06-08 2 views
0

for 루프를 사용하여 방정식을 플롯하고자합니다. 여러 가지 방법을 시도했지만 분명히 일반적인 오류가 발생합니다. "아래 첨자 인덱스는 실제 양수 또는 논리 값이어야합니다." 작정하고 싶은 방정식은 입니다. y (x) = (x^4) - (4 * x^3) - (6 * x^2) +15입니다.for 루프를 사용하여 Matlab의 방정식 플로팅

y(0) = 15; 
for x = [-3 -2 -1 0 1 2 3 4 5 6]; 
    y(x) = (x^4)-(4*x^3)-(6*x^2)+15; 
end 
plot(x,y) 
+0

Matlab에 오신 것을 환영합니다. 오류는 계산 방법과 관련이 없지만 언어 구문 자체는 다릅니다. – Yvon

답변

3

처음부터 시작하려면

y(0) = 15; 

는 당신에게 다음과 같은 오류 줄 것이다 :

Subscript indices must either be real positive integers or logicals.

이 있기 때문입니다

해봤 마지막 코드는 다음을이었다 Matlab의 색인 생성은 1부터 시작합니다. C 및 Python과 같은 다른 언어는 0에서 시작합니다.


Matlab은 벡터로 직접 작업 할 수 있습니다. 따라서 코드에서 루프가 필요 없습니다.
당신은 이런 식으로 작업을 수행 할 수 있습니다 우리는 모든 요소에 대해 벡터화 된 값을 계산하는 .*.^ 같은 요소 현명한 연산자를 사용할 필요가

x = [-3 -2 -1 0 1 2 3 4 5 6]; 
y = (x.^4) - (4*x.^3) - (6*x.^2) + 15; 
plot(x, y); 

참고. 따라서 점 .이 운영자 앞에 쓰여집니다. 당신이 당신의 그래프의 미세한 세부 사항을 원하는 경우에,

x = -3:6; % produces the same as [-3 -2 -1 0 1 2 3 4 5 6] 
y = (x.^4) - (4*x.^3) - (6*x.^2) + 15; 
plot(x, y); 

을 @Yvon에 의해 제안 linspace을 사용합니다 :


또한, 우리는 x를 생성하는 colon operator를 사용하여 실질적으로 코드를 향상시킬 수

x = linspace(-3, 6, 100); % produces a vector with 100 points between -3 and 6. 
y = x.^4-4*x.^3-6*x.^2+15; 
plot(x,y) 
+1

오류가 발생한 이유와 OP가 다음에 그것을 피하기 위해해야 ​​할 일을 포함시키는 것이 좋습니다. 우리는 사용자가 잘못하고있는 것을 이해하도록해야합니다 *, 해결책을 제시 할뿐만 아니라. 예 : 왜'y (x)'가 작동하지 않는가? 아마도':'연산자를 도입하여'x = -3 : 6'으로 직접'x' 값을 생성하는 것도 도움이 될 것입니다. – Matt

+1

@Matt 위대한 의견! 답변을 업데이트했습니다. –

0
x = linspace(-3, 6, 100); 
y = x.^4-4*x.^3-6*x.^2+15; 
plot(x,y)