이 문제를 분석적으로 먼저 적용하여 모델이 정확한지 알아 봅시다.
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
을 살펴 보자 :
% 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 블록이 필요하지는 않으며 각 시간 단계마다 변경 내용을 추가하기 만하면됩니다.
이를 실행하려면, 우리가 처음 일까지의 몇 가지를 설정해야합니다. 시뮬레이션> 모델 구성 매개 변수에서 우리는 dx/dt
과 dx
(두 번째 게인 블록) 사이를 전환하는 데 사용 된 시간 단계와 일치하도록 시간 단계를 설정해야합니다.
마지막으로, 우리는이 메모리 블록
우리가 볼, 1 초에 종료 시간을 설정하고 모델을 실행에 수행 할 수 있습니다, x0
의 초기 조건을 설정해야합니다 범위의 예상 결과 분석 솔루션과 일치하기 때문에 정확하다는 것을 알고 있습니다.
이제 우리는 무슨 일이 일어나고 있는지 이해, 우리는 모델을보다 유연하게 통합 블록을 다시 도입 할 수 있습니다. 적분기를 사용한다는 것은
dt
이 자동으로 계산된다는 것을 의미하며 실제로 Gain 블록을 마이크로 관리 할 필요가 없습니다. 실제로이를 제거 할 수 있습니다. 우리는 여전히 메모리 블록을 필요로합니다. 우리는 이제 적분기와 메모리 블록 모두에서 초기 조건을 필요로합니다. 다른 위치에 스코프를 넣고 처음 몇 단계 만 완료하면 이유를 알아낼 수 있습니다!적분기 블록을 사용할 때 초기 조건이 명확하지 것을
는
참고.
왜 값이 1 인 Gain 블록을 사용하고 있습니까? 이것은 아무것도하지 않습니다 ... 피드백 루프를 1 timestep 지연시키는 메모리 블록이 있어야합니다. 그리고 왜 블록 내부의 초기 조건을 설정하면 원하는 것을 얻을 수 없습니까? – Wolfie
값 1의 게인 사용은 1을 1로 설정하는 것을 의미한다고 생각합니다. e.i. 이득 = 5 <=> = 5. 내가 틀렸어? 두 번째 질문 : 초기 조건을 5로 설정하면 x (0) = 5를 의미합니까? – Mark
게인은 곱셈기이므로 적분기의 출력을 취하여 1을 곱한 다음이를 적분기로 다시 공급합니다. 메모리 블록을 사용하여 피드백을 방해하지 않기 때문에 순간 출력을 입력으로 사용하려고 시도하는데 이는 효과가 없습니다. 그리고 네, 초기 조건은 – Wolfie