2012-06-24 5 views
0

J'essaie de résoudre une équation D et ne sais pas y[0], mais je connais y[x1]=y1.DSolve pour un intervalle spécifique

Je souhaite résoudre le DSolve uniquement dans la zone x pertinente x=[x1, infinitny].

Comment cela a-t-il fonctionné?

Ci-joint l'exemple qui ne fonctionne pas

dsolv2 = DSolve[{y'[x] == c*0.5*t12[x, l2]^2 - alpha*y[x], y[twhenrcomesin] == zwhenrcomesin, x >= twhenrcomesin}, y[x], x] 
dsolv2 = Flatten[dsolv2] 
zsecondphase[x_] = y[x] /. dsolv2[[1]] 

Je suis conscient que DSolve ne permet pas à la condition d'inégalité, mais je l'ai mis pour vous expliquer ce que je cherche (t12[x,l2] me donnera une valeur uniquement en fonction de x puisque l2 est connu).

EDIT

t12[j24_, lambda242_] := (cinv1 - cinv2)/(cop2 - cop1 + (h2*lambda242)*E^(p*j24)); 
cinv1 = 30; cinv2 = 4; cinv3 = 3; h2 = 1.4; h3 = 1.2; alpha = 0.04; z = 50; p = 0.06; cop1 = 0; cop2 = 1; cop3 = 1.3; teta2 = 0.19; teta3 =0.1; co2 = -0.6; z0 = 10;l2 = 0.1; 
+0

Si vous êtes l'équation est véritablement premier ordre et linéaire vous pouvez obtenir une solution très générale avec: 'DSolve [{y '[x] == f [x] - alpha y [x], y [x1] == y1}, y [x], x]'. Ensuite, vous pouvez substituer 'f [x], x1, y1' correspondant à votre cas particulier. –

+0

Merci, mais malheureusement ce n'est pas ... – user1426522

+0

Ensuite, vous devriez expliquer ce qu'est votre terme 't12'. –

Répondre

0

Quel est le problème avec cet exemple?

t12[x_] := Exp[-x .01] Sin[x]; 
dsolv2 = [email protected][{y'[x] == c*0.5*t12[x]^2 - alpha*y[x], y[1] == 1}, y[x], x]; 
Plot[y[x] /. dsolv2[[1]] /. {alpha -> 1, c -> 1}, {x, 1, 100}, PlotRange -> Full] 

enter image description here

Modifier

En ce qui concerne votre commentaire:

Essayez d'utiliser une fonction définie par de limiter le domaine:

t12[x_] := Piecewise[{{ Exp[-x .01] Sin[x], x >= 1}, {Indeterminate, True}}] ; 
dsolv2 = [email protected][{y'[x] == c*0.5*t12[x]^2 - alpha*y[x], y[1] == 1}, y[x], x]; 
Plot[y[x] /. dsolv2[[1]] /. {alpha -> 1, c -> 1}, {x, 1, 100}, PlotRange -> Full] 
+0

Merci belisarius, bonne idée. Mais malheureusement, t12 n'est pas si simple et une solution n'existe pas pour -transféré à votre exemple- x <1. J'ai vraiment besoin de Mathematica pour résoudre le différentiel uniquement dans la plage x correspondante. Je vais essayer de télécharger tout le problème afin que vous voyez ce que je veux dire. Btw. qu'est-ce qui fait exactement ça? Impossible de trouver l'information sur le Web. – user1426522

+0

@ user1426522 Dans ce cas, Chop [] est utilisé pour se débarrasser des composants imaginaires, finalement très petits, de la solution. Voir la modification dans ma réponse. –

+0

Nice. Ça marche. Beau. – user1426522

1

Votre équation est d'abord ord er et linéaire, de sorte que vous pouvez obtenir une solution très générale:

generic = DSolve[{y'[x] == f[x] - alpha*y[x], y[x0] == y0}, y[x], x] 

Ensuite, vous pouvez remplacer votre terme spécifique:

c = 1; 
x0 = 1; 
y0 = 1; 
solution[x_] = generic[[1, 1, 2]] /. {f[x_] -> c*0.5*t12[x, l2]^2} 


Plot[solution[x], {x, x0, 100}] 

Example

+0

Cela fonctionne. Très agréable. Mais j'ai reconnu une chose que je ne comprends toujours pas. Il m'a fallu beaucoup de temps pour reproduire votre exemple. Enfin, j'ai découvert que chaque fois que je définis l'alpha en amont, je n'ai pas de solution. Quand je déclare alpha après avoir fait la partie "générique" cela fonctionne. Est-ce l'ame avec vous et avez-vous une idée de ce qui pourrait être la raison derrière? – user1426522

+0

@ user1426522 C'est la même chose pour moi. Essayez une nouvelle session. –

Questions connexes