2012-11-12 3 views
1

I이 오일러 - 방법을 통해 미분 방정식을 근사 다음 MATLAB 코드 :MATLAB 하나 플롯 상이한 수치 근사 플로팅

% Eulermethod 

a=0; 
b=0.6; 
Steps=6; 
dt=(b-a)/Steps; 
x=zeros(Steps+1,1); 

x(1,1)=1; 
y=zeros(Steps+1,1); 

for i=1:Steps 
    x(i+1,1)=x(i,1)+dt*(x(i,1)*x(i,1)+1); 
end 
plot(x) 

제가 여러 다른 값에 대한 솔루션 플롯을 플롯 할 수 있도록하려는 한 플롯에서 단계를 선택하고 x 축을 예를 들어 1에서 100 000 등 대신 0에서 0.6으로 변경하십시오.이 작업을 수행 할 수 있습니까?

답변

2

hold on 명령을 사용하면 동일한 그림에서 여러 개의 그림을 얻을 수 있습니다. 마찬가지로 데이터를 xy 벡터로 분리하는 경우 벡터 대신 두 개 벡터를 plot에 전달하여 서로 대입 할 수 있습니다. 예를 들면

figure 
hold on 
for i=1:m 
    x = []; 
    y = []; 
    %% code to populate your vectors 
    plot(x,y) 
end 

이제 모든 그림이 같은 그림에 나타납니다.

이 플롯을 구별하기 위해
x = linspace(0.0,0.6,n); 

, 당신은 예를 .FOR 함수에 추가 있었던 파라미터를 전달할 수 있습니다 : 당신이 x 0과 0.6 사이의 n 동일한 크기의 요소로 구성 될하려는 경우, 당신은 linspace 명령을 사용할 수 있습니다

plot(x,y,'r+') 

은 일련의 빨간색으로 일련의 그림을 그릴 것입니다. 기호는 +입니다.

+0

답장을 보내 주셔서 감사합니다. 나는 당신이 말한 것을 구현하려고 시도했지만 비참하게 실패했다. 문제는 벡터가 다른 차원을 얻는다는 것이다. ' 'B = 0.6; I 0.6 '% Eulermethod' '포맷 long' 'A = 0 0에서가는 X 축 한 차트로 둘 다 원하는' 'Steps1 = 6 ;' 'DT1 = (BA)/Steps1;' 'X가 제로 (Steps1 + 1,1)' 'Steps2 = 100000;' 'DT2 = (BA)/Steps2;' 'Y = 제로 (Steps2 + 1,1)'' 의 X (1,1) = 1,''가 는 Y는 (1,1) = 1,'' on' 유지 'I = 1 : Steps1' 'x (i + 1,1) = x (i, 1) + dt * (x (i, 1) * x (i, 1) +1); (i, 1) = y (i, 1) + dt * (y (i, 1) * y (i, 1) +1), ' ' 'end' '% plot? ' – L1meta

+0

나는 코멘트 섹션에서 서식을 처음 사용하기 때문에 끔찍한 일을 유감스럽게 생각합니다. – L1meta

0

플롯은 더 많은 인수를 사용할 수 있습니다. plot (x_axis, values, 수정 자); x 축이 M 요소의 벡터 인 경우 값은 MxN 요소의 행렬이 될 수 있으며 각 요소는 별도의 색으로 그려집니다.