아마도 프로그래밍 문제가 아니라 수학 문제 일 것입니다. 그러나 여기에 간다.Kinematics 방정식을 Matlab으로 변환
차량의 모터로 롤러 코스터를 작동한다고 가정 해보십시오. 차량에는이 모터를 사용하여 얻을 수있는 고정 된 힘 값이 있습니다. 롤러 코스터의 한 부분에서 내가 가장 좋아하는 비디오 게임 중 하나 인 하프 루프를 훑고 싶습니다 : Rollercoaster Tycoon!
당신이 반 루프 주위에 이동으로, 당신은 당신의 속도가 일 또는 시간이 주위에 가서 당신을 데려 갈 것이다 될지 모른다. 그러나 중력으로 인한 엔진 가속, 질량 및 가속도에 따라 하프 루프의 어느 시점에서든 가능한 최대 가속도를 파악할 수 있습니다. 이 논의를 수치와 혼동하지 말고 가속도 대 위치 곡선을 사용할 수 있다고 가정하십시오. 그것은 다음과 같은 :
내가 성공적으로 위치 곡선과 초기 속도 대 가속도의 함수로 속도의 공식을 도출했다. 운동 학적 방정식에서
v^2 = 2*a*p
나는 위치의 함수로 속도를 유도 할 수 있습니다. V =의 SQRT (2 * [A = F (P) WRT 위치의 필수]) MATLAB에서 내가 수행하여 얻을 수
:v = sqrt(2.*abs(trapz(pos, acc)));
을 실제로 따라 모든 지점의 속도를 얻고있다 다음 코드의 트랙 (acc 및 pos은 위의 플로트 된 가속도 대 배열입니다.) :
vel = 1;
newAcc = 0;
while ix <= length(acc)
pa = acc(ix-1) + (acc(ix)-acc(ix-1))./2;
newAP = (pos(ix)-pos(ix-1)).*pa; % This is more time efficient than trapz
newAcc = newAcc + abs(2.*newAP);
vel(ix) = sqrt(newAcc);
ix = ix + 1;
end
이제 딜레마에 이릅니다. 나는 가속도, 속도 및 위치를 가지고 있으며, 이제는 시간이 필요합니다. 제 계산이 맞다고 생각합니다. 내가/v/p를 가졌기 때문에 그것은 시간을 포함하는 운동 방정식을 선택하고 시간을 재 배열하는 것만 큼 간단해야합니다 (트랙을 따라 모든 위치에서 시간을 얻고 싶기 때문에/v/시간의 함수로서의 p).
이 나는 이들의에서 선택할 수 있습니다 의미한다 :
1. p_f = p_i + v_i*t + 1/2*a*t^2
2. v_f = v_i + a*t
3. p = (v_i + v_f)*t/2
식 (1)은 이차이다. 다른 두 개는 훨씬 단순 해 보입니다. 방정식 2는 유망 해 보인다. 해보자. matlab에이 변환
는t = (v_f - v_i)/a
, 나는이해야한다고 생각 :
이time = 0;
while ix <= length(acc)
pa = acc(ix-1) + (acc(ix)-acc(ix-1))./2;
newAP = (pos(ix)-pos(ix-1)).*pa; % This is more time efficient than trapz
newAcc = newAcc + abs(2.*newAP);
vel(ix) = sqrt(newAcc);
dt = (vel(ix)-vel(ix-1))./acc(ix);
time(ix) = time(ix-1) + dt;
ix = ix + 1;
end
그러나 지금까지 내 시험에서,이 잘못된 결과를 생성합니다! 저는 수학과 알고리즘 모두에 난처한 상황입니다. 그러나이 장소는 간단히 알고리즘에 관한 질문에 대답하는 것이라고 생각합니다. 내 공식이 어떻게 잘못 될지 알 수 없습니다. Matlab으로 잘못 변환 되었습니까?
저는 이것이 실제로 프로그래밍 문제가 아니라고 확신합니다. 나는 당신의 질문이 Stack Exchange의 Physics 섹션에서 더 적합하다고 생각합니다. 방법으로 결과를 어떻게 확인 했습니까? 그것이 틀렸다는 것을 어떻게 알 수 있습니까? – tvo
저는 물리학이나 프로그래밍이 정확하다고 생각하지 않습니다. 커브를 따라 운동 방정식에 대한 Seret-Frenet 공식을 볼 것으로 기대합니다. 변위, 속도 및 가속도는 모두 벡터이므로 벡터량이 있어야합니다. 이것은 처음부터 끝까지 잘못되었습니다. – duffymo
이것은 처음부터 끝까지 잘못이 아닙니다. 일정한 시간 간격과 가속도 대 위치 곡선을 사용하여 곡선을 만듭니다. 나는이 곡선을 내가 여기에있는 것과 매치시킨다. 위치와 속도가 정확합니다. – toshiomagic