2016-12-19 3 views
3

I ont un ensemble d'équations différentielles de la forme:intégré équation différentielle

x1dot = x3; 
x2dot = x2; 
x3dot = x1; 
x4dot = x2 + integral(x1,t,tend) 

I ont la condition limite pour x1, x2 à tstart et , x4 à tend. Sans le terme intégral, il s'agit d'une implémentation directe utilisant BVP4C.

Je me demande s'il est possible d'avoir la solution précédente pour les états à partir du solveur BVP qui peut être utilisé pour l'intégrale. Une possibilité est d'utiliser ode45 et fsolve en combinaison pour le problème de la valeur limite, où je peux avoir la solution précédente, mais cette approche n'est pas aussi rapide que la configuration BVP.

Je pense également qu'il peut y avoir des difficultés de convergence lorsque j'utilise la solution précédente, x1, pour l'intégrale.

Existe-t-il un moyen meilleur/plus rapide ou plus facile de résoudre ce problème?

+2

Bienvenue à SO (le côté demandant, de toute façon), et félicitations pour la question bien formée. –

Répondre

1

Set

x5 = integral(x1,t,tend) 

puis

x5dot = -x1 with x5(tend) = 0 

Depuis x5dot + x3dot = 0, il en résulte que x5 + x3 = C = const. Donc vous pouvez utiliser la substitution x5 → C - x3. La constante C est simplement C = x3(tend) + x5(tend) = x3(tend) (parce que x5(tend) = 0).

+0

+1: La plupart des imbéciles sont facilement aveuglés par une fausse complexité; il faut souvent un génie pour voir la simplicité inhérente. –

+0

... Je suis un imbécile apparemment, parce que j'ai du mal à voir pourquoi il y a un signe moins ('x5dot = -x1'), et pourquoi' x5 (tend) = 0' ... pouvez-vous élaborer sur cette? –

+0

En utilisant le théorème fondamental et 'X1' comme l'un des antidérivés de' x1', on a que 'x5 (t) = X1 (tendent) -X1 (t)'. En différenciant cela et en appliquant 'X1 '(t) = x1 (t)' donne l'équation différentielle 'dotx5 = -x1'. Trivialement pour 't = tend' le domaine d'intégration est un point et donc le zéro intégral,' x5 (tendent) = 0' – LutzL