How to solve 3 equations dependent each other?

조회 수: 5 (최근 30일)
hknatas
hknatas 2018년 11월 10일
편집: hknatas 2018년 11월 11일
Hello. How to code this situation?
In this situation i need to calculate all angular velocities from time 0s to time 5400s with increase by 0.1s and graph them.
I have all the initial values:
wxi = 0.0065
wyi = 0.0066
wzi = 0.0067
And constant values:
NT = 3.6 * 10^-10
Jx = 2.1 * 10^-3
Jy = 2.0 * 10^-3
Jz = 1.9 * 10^-3
Actually i thought it is going to be easy but when i write the code for wx, i realized that wx is increasing with time but wz and wy in the equation are constant values. Which kind of loop should i use? Thanks for the answers!
  댓글 수: 5
hknatas
hknatas 2018년 11월 10일
Thanks a lot, it really helps. However i guess i should use a few command which i don't know. As i understand it, i should create wx, wy and wz arrays first. My arrays should have 54000 data and all of them should be equal to their initial values at first. Then after equations are executed one time, second data in my array will change to the new wx value. Did i get the idea correctly? Also my initial conditions are not integer so i need to define an array with float numbers. How can i describe such an array then?
hknatas
hknatas 2018년 11월 10일
편집: Walter Roberson 2018년 11월 10일
In here delta_t = time_vals right? And when i tried to run program an error occurs : "Unable to perform assignment because the left and right sides have a different number of elements." What can be the problem?
This is my whole code:
clc;
clear;
clear all
n = 63
Wx(1) = 0.0002 + 0.0001 * n; % 0.0065
Wy(1) = 0.0003 + 0.0001 * n; %0.0066
Wz(1) = 0.0004 + 0.0001 * n; %0.0067
% The initial moments of inertia of the satellite ( m^4 ):
Jx = 2.1e-03;
Jy = 2e-03;
Jz = 1.9e-03;
% The disturbance torque acting on the satellite ( N.m ):
NT = 3.6e-10;
delta_t = 0:0.1:5400;
N_times = length(delta_t);
for i = 1 : N_times
Wx(i+1) = Wx(i) + delta_t / Jx * (Wz(i) * Wy(i) + NT)*(Jy - Jz);
Wy(i+1) = Wy(i) + delta_t / Jy * (Wx(i) * Wz(i) + NT)*(Jz - Jx);
Wz(i+1) = Wz(i) + delta_t / Jz * (Wx(i) * Wy(i) + NT)*(Jx - Jy);
end

댓글을 달려면 로그인하십시오.

채택된 답변

Bruno Luong
Bruno Luong 2018년 11월 10일
Actually i thought it is going to be easy but when i write the code for wx, i realized that wx is increasing with time but wz and wy in the equation are constant values.
Just copy the value in 3 different variables, then do the calculation.
  댓글 수: 7
Walter Roberson
Walter Roberson 2018년 11월 11일
delta_t = 0.1;
time_vals = 0 : delta_t : 5400;
N_times = length(time_vals);
n = 63;
Wx = zeros(1, N_times);
Wy = zeros(1, N_times);
Wz = zeros(1, N_times);
Wx(1) = 0.0002 + 0.0001 * n; % 0.0065
Wy(1) = 0.0003 + 0.0001 * n; %0.0066
Wz(1) = 0.0004 + 0.0001 * n; %0.0067
% The initial moments of inertia of the satellite ( m^4 ):
Jx = 2.1e-03;
Jy = 2e-03;
Jz = 1.9e-03;
% The disturbance torque acting on the satellite ( N.m ):
NT = 3.6e-10;
for i = 1 : N_times - 1
Wx(i+1) = Wx(i) + delta_t / Jx * (Wz(i) * Wy(i) + NT)*(Jy - Jz);
Wy(i+1) = Wy(i) + delta_t / Jy * (Wx(i) * Wz(i) + NT)*(Jz - Jx);
Wz(i+1) = Wz(i) + delta_t / Jz * (Wx(i) * Wy(i) + NT)*(Jx - Jy);
end
plot(time_vals, Wx);
hknatas
hknatas 2018년 11월 11일
편집: hknatas 2018년 11월 11일
Thanks for everything, especially for your patience. This really helps a lot.

댓글을 달려면 로그인하십시오.

추가 답변 (0개)

카테고리

Help CenterFile Exchange에서 Reference Applications에 대해 자세히 알아보기

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by