Symsxtk q; khai báo các biến sử dụng symbolic math toolbox



tải về 18.41 Kb.
Chuyển đổi dữ liệu04.10.2022
Kích18.41 Kb.
#53411
giải thích code


clc; clear all; close all; % clc xóa tất cả các giá trị ở command window; clear all xóa tất cả các biến o Workspace; close all tắt các figure có trước đó
syms x t k q; % khai báo các biến sử dụng symbolic math toolbox
k = input('Nhap thong so kapppa k, k = '); % cho phép người dùng nhập giá trị k trên Command window
q = input('Nhap thong so q, q = ');
m = input('Nhap khoi luong cua chat diem (kg), m =');
v0 = input('Nhap van toc ban dau cua chat diem (m/s), v0 = ');
delta_t = input('Nhap buoc thoi gian tinh toan (s), delta_t = '););
x0 = input('Nhap vi tri ban dau cua chat diem (m), x0 = ');
n = input('Nhap so buoc nhay, n = ');
F_x = k*x - 4*q*x.^3; % khai báo hàm F
T = zeros(1,n+1); % tạo ma trận T có kích thước 1 hàng và n+1 cột trong đó các phần tử ma trận đều bằng 0
a = zeros(1,n+1);
X = zeros(1,n+1);
V = zeros(1,n+1);
Wd = zeros(1,n+1);
Wt = zeros(1,n+1);
T(1) = 0; % gán giá trị thứ nhất của ma trận T bằng 0
X(1) = x0; % gán giá trị thứ nhất của X bằng x0
V(1) = v0;
a(1) = subs(F_x,x,X(1))/m; % tính giá trị thứ nhất của a theo công thức F = m*a
Wd(1) = (1/2)*m*V(1).^2; % tính gía trị thứ nhất của Wd bằng công thức (1/2)*m*V^2
Wt(1) = -int(F_x,x,0,X(1)); % tính giá trị thứ nhất của Wt theo công thức
for i = 1:n % thực hiện vòng lặp for loop để tính các giá trị T,X,V,a,Wd,Wt từ giá trị có chỉ số từ 1 đến n
T(i+1) = T(i) + delta_t; % tính lần lượt các giá trị T với bước nhảy delta_t
X(i+1) = (1/2)*a(i)*T(i+1).^2 + V(i)*T(i+1) + X(i); % tính giá trị X theo công thức X2 = X1 + (1/2)*a*T^2 + V*T
V(i+1) = V(i) + T(i+1)*a(i); % tính giá trị V theo công thức V2 = V1 + T*a
a(i+1) = subs(F_x,x,X(i+1))/m; % tính giá trị a
Wd(i+1) = (1/2)*m*V(i+1)^2; % tính giá trị Wd
Wt(i+1) = -int(F_x,x,0,X(i+1)); % tính giá trị Wt
end % kết thúc vòng lăp
figure % tạo khung ảnh figure
plot(T,Wd,'b*',T, Wt,'ro');% vẽ đồ thị Wd phụ thuộc vào T, đường đồ thị màu xanh và dấu *
hold on; % lệnh sử dụng để vẽ nhiều đường lên cùng một figure
grid on; % vẽ lưới cho đồ thị
xlabel('t (s)'); % kí hiệu trục x
ylabel('Nang luong (J)'); % kí hiệu trục y
title('Dong nang va the nag cua chat diem'); % biểu diễn kiểu đồ thị
for j = 1:(n+1) % thực hiện vòng lặp for loop
disp(['Dong nang tai thoi diem t = ',num2str(T(j)),': Wd = ', num2str(Wd(j)),' J']); % in ra cac gia trị Wd theo T
disp(['The nang tai thoi diem t = ',num2str(T(j)),': Wt = ', num2str(Wt(j)),' J']); % in ra cac gia trị Wt theo T
end
tải về 18.41 Kb.

Chia sẻ với bạn bè của bạn:




Cơ sở dữ liệu được bảo vệ bởi bản quyền ©hocday.com 2024
được sử dụng cho việc quản lý

    Quê hương