what is the best method to fit a curve to strain-stress data?
18 visualizzazioni (ultimi 30 giorni)
Mostra commenti meno recenti
Abdulaziz Abutunis
il 21 Lug 2019
Commentato: Abdulaziz Abutunis
il 22 Lug 2019
Dear Matlab experits,
Is there any preference towards any method (Matlab function) to fit a curve into strain-stress data? Is polyfit is reliable enough?
Thank you..
Aziz
0 Commenti
Risposta accettata
John D'Errico
il 21 Lug 2019
Modificato: John D'Errico
il 21 Lug 2019
NO polynomial will ever fit that curve (at least, not fit it well.) NONE. PERIOD.
x = data_mathwork(:,1);
>> y = data_mathwork(:,2);
>> plot(x,y,'.')
Think about it. The function is clearly asymptotically linear above a certain point, but highly nonlinear below that point. Below that point, it appears to have a singularity.
How many polynomials can you think of that have those properties? (None.)
If you want to fit a model to that data, then you will need to choose one that has reasonable properties. It ain't gonna be a polynomial.
Were I to try to find a model, I would first exchange x and y, fitting the first variable as a function of the second. That eliminates the singularity. All curve fitting tools have problems with that.
If I do so, and then fit the result with a spline, I get this:
Which suggests the upper part is not truly asymptotically linear, but close. If I look at the first derivative, it is indeed trailing off.
I'd just use an intelligently fit least squares spline as the simplest thing you could do.
3 Commenti
John D'Errico
il 22 Lug 2019
Modificato: John D'Errico
il 22 Lug 2019
As I was thinking about it, I was wondering if there were some model forms established for stress-strain behavior. I assume this is elastic-plastic behavior of a material. Even though one of my graduate degrees is in mechanical engineering, that was many years ago, and I never concentrated on that side of things even then. But some reading might turn up some ideas.
Lacking that, if all you want is a plot and a smooth fit, you can use my SLM toolbox (on the file exchange). The fit that I showed was achieved with the one line:
slm = slmengine(y,x,'knots',8,'increasing','on');
Più risposte (0)
Vedere anche
Categorie
Scopri di più su Get Started with Curve Fitting Toolbox in Help Center e File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!