Passer de h=(b-a) /n à n= ? dans un programme
Bonjour,
Je subdivise [a, b] avec le pas h=(b-a)/n . avec n un entier et a, b et h des réels
Supposons connaitre h par exemple 0.01. comment implémenter le n dans un programme c
Je subdivise [a, b] avec le pas h=(b-a)/n . avec n un entier et a, b et h des réels
Supposons connaitre h par exemple 0.01. comment implémenter le n dans un programme c
n = (int) ((b-a) / h) ;
ou
n = (int) ((b-a) / h)+1 ;
car on a le problème maths si h=(b-a)/n, on ne peut pas dire que n=(b-a)/h.
Le 😄 Farceur
Connectez-vous ou Inscrivez-vous pour répondre.
Réponses
J'affirme péremptoirement que toute affirmation péremptoire est fausse
int main(void) {
int n ;
int N ;
float h, a, b, h1, h2 ;
a = 3.3;
b = 8.9 ;
h = 0.01 ;
n = (b-a) / h ;
N = ((b-a) / h)+1;
h1= (b-a) / n;
h2= (b-a) / N;
printf("%d\n" "%d\n" "%lf\n" "%lf\n" , n, N , h1, h2 ) ;
560
0.010018
0.010000
#include <stdio.h>
J 'ai les résultats
Le but n'était pas de recalculer h après coup.
C'était écrit :
Supposons connaitre h par exemple 0.01. comment implémenter le n dans un programme c
À partir des données a=1, b=2 et h= 0.3, tu veux obtenir quelle valeur pour n ? 3 ou 4.
pour découper [0; 1.03] en intervalles de taille 0.1, c'est clairement impossible, on peut choisir :
- Ajuster la taille des subdivisions
- Accepter de ne pas aller au bout
- Accepter de dépasser
- Aller au bout, mais la dernière subdivision est plus petite que les autres
La 2) s'obtient par un floor, la 3) et la 4) par un ceil, la 1) s'obtient par petit calcul trivial : on calcule n par floor, ceil ou round, puis on pose h = (b-a)/nLe +1 systématique est toujours fautif
J'affirme péremptoirement que toute affirmation péremptoire est fausse
si a=1 et b=2 et h=0.3, on veut obtenir quelle valeur pour n par cet 'outil' .
J'insiste parce que cette question me paraît essentielle. D'ailleurs, Mediat-Supreme a résolu le truc, en disant : si on veut tel résultat, voici la recette, et si on veut tel autre résultat, voici l'autre recette.
Un problème bien posé est un problème à moitié résolu.
J'ai implémenté ce cast dans mon programme. Cependant, j'ai une question : comment faire un graphique sous C ? J'ai cherché sur le net et j'ai trouvé gnuplot. Est-ce une façon débile de représenter un ensemble de mesures ?
Ci-dessous, vous trouverez un programme qui modélise la cinétique d'une réaction d'ordre 2. La concentration obéit à l'équation différentielle $C'(t)=-kC(t)^2$ avec une condition initiale $C(0)$. j'ai programmé le problème $y'(t)=-y²(t),\quad y(0)=1$ sur [0,T] avec h=0.03mn(1.8s) et T =20mn
Je n'oblige personne que cela soit claire
je vais ajouter un x dans la fonction pour rendre la recherche d'une solution exacte impossible