0
votes

Calculer intégrale dans matlab

J'ai donné les données suivantes:

 Data

Et on me demande de calculer l'intégrale de CP / T DT de 113,7 à 264,4.

Je ne suis pas sûr de la façon dont je devrais résoudre ce problème. Si je veux utiliser la commande intégrale, j'ai besoin d'une fonction, mais je ne sais pas comment ma fonction devrait être dans ce cas.

J'ai essayé: xxx

mais cela n'a pas fonctionné.


1 commentaires

Bienvenue dans le débordement de la pile! Veuillez ajouter du code et des données sous forme de texte ( Utilisation du formatage de code ), pas d'images. Images: a) Ne vous permettez pas de copier - & - coller le code / des erreurs / des données pour les tests; B) Ne permettez pas de recherche en fonction du contenu de code / d'erreur / de données; et beaucoup plus de raisons . Les images ne doivent être utilisées que, en plus du texte au format de code, si l'image ajoute quelque chose de significatif qui n'est pas transmis par le code de texte / erreur / données.


3 Réponses :


2
votes

Utilisez la fonction CumTraPz em> forte> dans MATLAB.

T = [...]
Cp=[...]
CpdivT = Cp./T
I = cumtrapz(T, CpdivT)


3 commentaires

Une autre approche à laquelle je peux penser est d'adapter vos données à une fonction (disons polynôme ou linéaire ou exponentiel en fonction de la tendance des données). Cela peut être fait en utilisant la commande Fit . Intégrez ensuite cette fonction à l'aide de la commande intégrale.


Mais pour le code CumTraPZ, comment puis-je préciser que je veux que T soit de 113,7 à 264,4?


Vous pouvez interpoler entre les points d'intérêt et utiliser CumTrapz. J'ai fourni une solution différente.



1
votes

Une approche simple utilisant interpolle code> et intégrale code> à l'aide des paramètres de vanille ordinaire.
N'utiliserait que des techniques numériques plus sophistiquées si nécessaire pour l'application. Vous pouvez examiner le 'reltol' code> et 'abstol' code> des options de Documentation pour Integral code>.

Intégration numérique: strong> (avec interpolation linéaire) p> xxx pré>

ANS = 91.9954 P> blockQuote>

Méthodes alternatives d'interpolation: strong>

Vos résultats dépendront de votre méthode d'interpolation (voir code et graphique ci-dessous). p> xxx pré>

 graphique Voir l'impact du choix de la méthode d'interpolation p>

code pour graphique: p> xxx


Une mauvaise approximation: strong> (pour obtenir une estimation de l'ordre approximatif) p> xxx pré>

et vous pouvez voir nous " Re dans le ballon (me fait me sentir plus à l'aise au moins). P>


Autres fonctions malab viables: strong> Quadgk code> | Quad code> P>

% interpolation  method affects answer if using `interp1()`
quadgk(@(t) interp1(T,Cp./T,t,'linear'),t1,t2)    
quad(@(t) interp1(T,Cp./T,t,'linear'),t1,t2) 


0 commentaires

0
votes

Ceci est probablement mieux pour votre problème. Notez que j'ai supposé que la 2ème commande polynomial correspond à vos données bien. Vous voudrez peut-être obtenir une meilleure structure de modèle si l'ajustement est insatisfaisant.

% Data
T = [15 20 30 40 50 70 90 110 130 140 160 180 200 220 240 260 270 275 285 298];
Cp = [5.32 10.54 21.05 30.75 37.15 49.04 59.91 70.04 101.59 103.05 106.78 110.88 114.35 118.70 124.31 129.70 88.56 90.07 93.05 96.82];

% Fit function using 2nd order polynomial
f = fit(T',Cp'./T','poly2');

% Compare fit to actual data
plot(f,T,Cp./T)

% Create symbolic function
syms x
func = f.p1*x*x + f.p2*x + f.p3;

% Integrate function 
I = int(func,113.7,264.4);

% Convert solution from symbolic to numeric value
V = double(I);


5 commentaires

Y a-t-il une préoccupation sur la sortie de tracé (ajustement (t, cp. / T, 'poly2'), t, cp. / T) ?


La seule préoccupation que je puisse avoir est la valeur au carré de l'ajustement (environ 0,76). C'est cependant bon pour la tâche à accomplir. Avez-vous d'autres préoccupations?


Je ne connais pas la relation sous-jacente entre ces variables, donc s'il y a une sorte de physique impliquée, cela pourrait affecter cela, mais , tracé (t t, cp. / T, 'poly2 '), T, cp. / T) me fait préoccuper de cette approximation (bien que numériquement, il se rapproche de la chance). Je ne suis pas non plus un expert ici, alors je cherche toujours à apprendre.


J'ai aussi votre préoccupation. Si la physique sous-jacente est connue, vous pouvez utiliser les données pour estimer les paramètres. Cependant, l'utilisation de polynomial présente des avantages tels que la mise au point sur la tendance plutôt que sur les points de données. Dans un cas où les données sont corrompues avec du bruit ou plusieurs valeurs aberrantes sont présentes, elle donnera un meilleur résultat que l'interpolation (linéaire, etc.) qui se concentre sur deux ou trois points à la fois. Linéaire sera probablement le pire si les données sont bruyantes ou des valeurs aberrantes sont présentes. Pour les données expérimentales (dans la bonne plage de points de données), vous ne pouvez pas vous tromper avec le polynôme de 2e commande.


Merci pour votre note. Je suis tout à fait d'accord, en particulier sur la préoccupation concernant le survêtement au bruit.