2017-11-03 10 views
0

나는 미분 방정식이 dx/dt = a * x입니다. Matlab Simulink를 사용하여이 방정식을 풀고 Scope 블록을 사용하여 출력해야합니다.Simulink 적분기 루프의 초기 조건 t = 0 설정 방법

문제는 초기 조건 값 t = 0을 지정하는 방법을 모르겠다는 것입니다.

지금까지 나는이처럼 보이는 솔루션을 만들 처리했다 :

Model

내가 내부 통합이 설정 "초기 조건"하는 possiblity가 있다는 것을 알고을하지만 난 알아낼 수 없습니다 그것이 최종 결과에 어떻게 영향을 미치는지. x의 값을 간단히 t = 0에 설정하면됩니다. e.i. x(0) = 6?

+0

왜 값이 1 인 Gain 블록을 사용하고 있습니까? 이것은 아무것도하지 않습니다 ... 피드백 루프를 1 timestep 지연시키는 메모리 블록이 있어야합니다. 그리고 왜 블록 내부의 초기 조건을 설정하면 원하는 것을 얻을 수 없습니까? – Wolfie

+0

값 1의 게인 사용은 1을 1로 설정하는 것을 의미한다고 생각합니다. e.i. 이득 = 5 <=> = 5. 내가 틀렸어? 두 번째 질문 : 초기 조건을 5로 설정하면 x (0) = 5를 의미합니까? – Mark

+0

게인은 곱셈기이므로 적분기의 출력을 취하여 1을 곱한 다음이를 적분기로 다시 공급합니다. 메모리 블록을 사용하여 피드백을 방해하지 않기 때문에 순간 출력을 입력으로 사용하려고 시도하는데 이는 효과가 없습니다. 그리고 네, 초기 조건은 – Wolfie

답변

1

이 문제를 분석적으로 먼저 적용하여 모델이 정확한지 알아 봅시다.

dx/dt = a*x  % Seperable differential equation 
=> (1/x) dt = a dt % Now we can integrate 
=> ln(x) = a*t + c % We can determine c using the initial condition x(0) 
=> ln(x0) = a*0 + c 
=> ln(x0) = c 
=> x = exp(a*t + ln(x0)) % Subbing into 3rd line and taking exp of both sides 
=> x = x0 * exp(a*t) 

이제 아이디어를 얻었습니다. 이제, t = 0 .. 1, x0 = 6이에 a = 5을 살펴 보자 : figure


% Plot x vs t using plain MATLAB 
x0 = 6; a = 5; 
t = 0:1e-2:1; x = x0*exp(a*t); 
plot(t,x) 

지금의이 수치 통합 역할을하는 시뮬링크 모델을 만들어 보자. 이 응용 프로그램에 실제로 Integrator 블록이 필요하지는 않으며 각 시간 단계마다 변경 내용을 추가하기 만하면됩니다.

model

이를 실행하려면, 우리가 처음 일까지의 몇 가지를 설정해야합니다. 시뮬레이션> 모델 구성 매개 변수에서 우리는 dx/dtdx (두 번째 게인 블록) 사이를 전환하는 데 사용 된 시간 단계와 일치하도록 시간 단계를 설정해야합니다.

config

마지막으로, 우리는이 메모리 블록

initial

우리가 볼, 1 초에 종료 시간을 설정하고 모델을 실행에 수행 할 수 있습니다, x0의 초기 조건을 설정해야합니다 범위의 예상 결과 분석 솔루션과 일치하기 때문에 정확하다는 것을 알고 있습니다.


scope

이제 우리는 무슨 일이 일어나고 있는지 이해, 우리는 모델을보다 유연하게 통합 블록을 다시 도입 할 수 있습니다. 적분기를 사용한다는 것은 dt이 자동으로 계산된다는 것을 의미하며 실제로 Gain 블록을 마이크로 관리 할 필요가 없습니다. 실제로이를 제거 할 수 있습니다. 우리는 여전히 메모리 블록을 필요로합니다. 우리는 이제 적분기와 메모리 블록 모두에서 초기 조건을 필요로합니다. 다른 위치에 스코프를 넣고 처음 몇 단계 만 완료하면 이유를 알아낼 수 있습니다!적분기 블록을 사용할 때 초기 조건이 명확하지 것을

simple

참고.

+0

이 모델에는 메모리 블록이있을 이유가 없습니다. 그것도 불필요하게 다이나믹을 약간 변경시킵니다. –

+0

내 원래의 솔루션이 맞습니까? – Mark

+0

예, '초기 조건'과 'a'의 값을 설정해야합니다. –