0% ont trouvé ce document utile (0 vote)
20 vues4 pages

Code MATLAB Excel 6

Transféré par

Luciano RAKOTOARISON
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats DOC, PDF, TXT ou lisez en ligne sur Scribd
0% ont trouvé ce document utile (0 vote)
20 vues4 pages

Code MATLAB Excel 6

Transféré par

Luciano RAKOTOARISON
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats DOC, PDF, TXT ou lisez en ligne sur Scribd

clear all; clc; close all;

%% === Paramètres du système ===

m = 2; % Masse (kg)

c = 25; % Amortissement (N.s/m)

k = 7000; % Raideur (N/m)

h = 0.01; % Pas de temps (s)

t_total = 2; % Durée de simulation (s)

t = 0:h:t_total;

n = length(t);

%% === Définition de la force F(t) ===

F = @(t_i) (-500*t_i + 100).*(t_i < 0.1) + ...

50.*(t_i >= 0.1 & t_i < 0.2) + ...

0.*(t_i >= 0.2);

%% === Initialisation ===

x = zeros(1, n); % Déplacement

v0 = 0.2; % Vitesse initiale (dx/dt à t=0)

% Conditions initiales

x(1) = 0;

% Utilisation de l'approximation x(2) = x(1) + h*v0 + (h^2/2)*acc(0)

acc0 = (F(t(1)) - c*v0 - k*x(1)) / m;

x(2) = x(1) + h*v0 + 0.5*h^2*acc0;


%% === Algorithme des différences finies ===

for i = 2:n-1

Fi = F(t(i));

x(i+1) = (1/(m + c*h/2)) * ...

(2*m*x(i) - (m - c*h/2)*x(i-1) - h^2*k*x(i) + h^2*Fi);

end

%% === Exportation vers Excel (Corrigé) ===

% Création d'un dossier sécurisé

output_folder = fullfile(userpath, 'Simulation_Results'); % Dossier utilisateur

if ~exist(output_folder, 'dir')

mkdir(output_folder); % Crée le dossier si nécessaire

end

% Chemin complet du fichier

filename = fullfile(output_folder, 'resultats_simulation.xlsx');

% Gestion des conflits de fichiers

if exist(filename, 'file')

try

delete(filename); % Tente de supprimer le fichier existant

catch

error('Fermez le fichier Excel avant de relancer le script.');

end
end

% Création du tableau et export

results_table = array2table([t', x'], ...

'VariableNames', {'Temps_s', 'Deplacement_m'});

writetable(results_table, filename, 'Sheet', 'Donnees');

disp(['Données exportées vers : ' filename]);

%% === Affichage de quelques résultats ===

disp('==== Résultats Différences Finies (premiers instants) ====');

disp(results_table(1:5, :));

%% === Tracé des courbes ===

figure;

% 1. Force F(t)

subplot(2,1,1);

F_vals = arrayfun(F, t);

plot(t, F_vals, 'LineWidth', 1.5);

title('Profil de la force F(t)');

xlabel('Temps (s)');

ylabel('F(t) [N]');

grid on; xlim([0 t_total]);

% 2. Déplacement x(t)
subplot(2,1,2);

plot(t, x, 'b', 'LineWidth', 1.5);

title('Déplacement x(t) par différences finies');

xlabel('Temps (s)');

ylabel('x(t) [m]');

grid on; xlim([0 t_total]);

Vous aimerez peut-être aussi