Résoudre équation du type y=f(y)
Résolu
Scott
-
Scott -
Scott -
A voir également:
- Résoudre équation du type y=f(y)
- Sfc /scannow /f /r - Guide
- Clear type - Guide
- Editeur d'équation - Télécharger - Vie quotidienne
- Chkdsk c /f /r - Guide
- Type de ram - Guide
2 réponses
yg_be
Messages postés
23541
Date d'inscription
Statut
Contributeur
Dernière intervention
Ambassadeur
1 584
bonjour,
avais-tu programmé cela dans Excel?
as-tu déjà utilisé des boucles for dans l'un ou l'autre langage?
qu'as-tu fait pour comprendre ce que faisait ton programme?
avais-tu programmé cela dans Excel?
as-tu déjà utilisé des boucles for dans l'un ou l'autre langage?
qu'as-tu fait pour comprendre ce que faisait ton programme?
Salut, merci de prendre le temps de me répondre.
Déjà je voudrais m'excuser car je me suis trompé dans ma formule de L de départ donc c'est sur qu'il était impossible de trouver les mêmes résultats entre mon tableau Excel et Matlab.
Sur Excel j'ai fait un simple tableau que j'incrémente manuellement.
J'ai rechangé mon code et j'avais beaucoup d'erreurs (rien d'étonnant ahah). J'avais une boucle FOR qui ne servait à rien et ma seconde condition de ma boucle IF tournait en rond.
J'espère au moins que mes erreurs seront utiles pour que d'autres ne les fasse pas.
Voici le nouveau code qui fonctionne :
close all %Ferme les figures
clear %Efface les variables en mémoire
clc %Efface le contenu de la fenêtre de commande
%Input
h = 66; %[m] water depth
H = 1; %[m] wave height
T = 5; %[s] period
%longueur d'onde. On prend la forme complète
tol=1E-1;
L_2=0.1;%Le garder petit
L_1=((9.81*T^2)/(2*pi))*tanh(h*(2*pi/L_2));
if abs(L_1-L_2)<tol
L=L_2;
else
L_2=L_1+tol;
L_1=((9.81*T^2)/(2*pi))*tanh(h*(2*pi/L_2));
end
L=L_2;
C = ((9.81*T)/(2*pi))*tanh((2*pi)/L);
k = 2*pi/L; %[m^-1] Nombre d'onde
w = 2*pi/T; %[Hz] Fréquence
%Créaction vecteurs temps t et position x
t = 0:0.1:2*T;
x =0:0.1:2*L;
Merci encore
Déjà je voudrais m'excuser car je me suis trompé dans ma formule de L de départ donc c'est sur qu'il était impossible de trouver les mêmes résultats entre mon tableau Excel et Matlab.
Sur Excel j'ai fait un simple tableau que j'incrémente manuellement.
J'ai rechangé mon code et j'avais beaucoup d'erreurs (rien d'étonnant ahah). J'avais une boucle FOR qui ne servait à rien et ma seconde condition de ma boucle IF tournait en rond.
J'espère au moins que mes erreurs seront utiles pour que d'autres ne les fasse pas.
Voici le nouveau code qui fonctionne :
close all %Ferme les figures
clear %Efface les variables en mémoire
clc %Efface le contenu de la fenêtre de commande
%Input
h = 66; %[m] water depth
H = 1; %[m] wave height
T = 5; %[s] period
%longueur d'onde. On prend la forme complète
tol=1E-1;
L_2=0.1;%Le garder petit
L_1=((9.81*T^2)/(2*pi))*tanh(h*(2*pi/L_2));
if abs(L_1-L_2)<tol
L=L_2;
else
L_2=L_1+tol;
L_1=((9.81*T^2)/(2*pi))*tanh(h*(2*pi/L_2));
end
L=L_2;
C = ((9.81*T)/(2*pi))*tanh((2*pi)/L);
k = 2*pi/L; %[m^-1] Nombre d'onde
w = 2*pi/T; %[Hz] Fréquence
%Créaction vecteurs temps t et position x
t = 0:0.1:2*T;
x =0:0.1:2*L;
Merci encore
ton code est illisible si tu n'utilises pas les balises de code: https://codes-sources.commentcamarche.net/faq/11288-les-balises-de-code
je ne vois pas de boucle dans ton code, je me demande ce qu'il fait.
pourras-tu, le moment venu, marquer la discussion comme résolue?
je ne vois pas de boucle dans ton code, je me demande ce qu'il fait.
pourras-tu, le moment venu, marquer la discussion comme résolue?
Salut,
Ok effectivement c'est illisible, désolé c'est mon premier post sur un forum.
Effectivement comme tu l'a vues mon code n'a pas de boucle.
En fait je souhaiterai que tant que L_2 ne soit pas égal à L_1 (avec une tolérance = tol)
L_2 prenne la valeur de L_1
et que L_1 soit re-calculé avec cette nouvelle de L_2
Ensuite on vient interroger de nouveau si L_2 est égal à L_1 (avec une tolérance = tol)
et si non, on reboucle.
Le code illisible que j'ai écrit plus haut fait ce que je viens de dire mais que une fois, il ne boucle pas.
Cela fonctionne avec une boucle while :
Merci de ton aide, ça m'a permis de réfléchir à ce que je faisais =)
Ok effectivement c'est illisible, désolé c'est mon premier post sur un forum.
Effectivement comme tu l'a vues mon code n'a pas de boucle.
En fait je souhaiterai que tant que L_2 ne soit pas égal à L_1 (avec une tolérance = tol)
L_2 prenne la valeur de L_1
et que L_1 soit re-calculé avec cette nouvelle de L_2
Ensuite on vient interroger de nouveau si L_2 est égal à L_1 (avec une tolérance = tol)
et si non, on reboucle.
Le code illisible que j'ai écrit plus haut fait ce que je viens de dire mais que une fois, il ne boucle pas.
Cela fonctionne avec une boucle while :
while abs(L_1-L_2)>tol
L_2=L_1;
L_1=((9.81*T^2)/(2*pi))*tanh(h*2*pi/L_2); %Permet de recalculer L_1 avec la nouvelle valeur de L_2 nouvellement calculée
end
Merci de ton aide, ça m'a permis de réfléchir à ce que je faisais =)