Résoudre équation du type y=f(y)
Résolu/Fermé
A voir également:
- Résoudre équation du type y=f(y)
- Chkdsk /f - Guide
- F lux - Télécharger - Divers Utilitaires
- Clear type - Guide
- Sfc /scannow /f /r - Guide
- Indiquez l'unité pour la taille de ces fichiers. type document texte brut taille 8,1 ?? première réponse à trouver longueur 8085 caractères type image jpeg taille 3,0 ?? deuxième réponse à trouver dimension 3776 × 2124 px type vidéo mpeg-4 taille 1,1 ?? troisième réponse à trouver durée 02:01:15 - Forum Google Chrome
2 réponses
yg_be
Messages postés
23232
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
28 septembre 2024
Ambassadeur
1 538
5 févr. 2021 à 20:24
5 févr. 2021 à 20:24
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
yg_be
Messages postés
23232
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
28 septembre 2024
1 538
5 févr. 2021 à 22:27
5 févr. 2021 à 22:27
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?
Scott
>
yg_be
Messages postés
23232
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
28 septembre 2024
Modifié le 6 févr. 2021 à 04:23
Modifié le 6 févr. 2021 à 04:23
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 =)