Fit data with a curve in MATLAB

Click For Summary

Discussion Overview

The discussion revolves around fitting a set of x and y data points with a suitable mathematical function using MATLAB. Participants explore various methods for curve fitting, including polynomial fitting and non-linear regression, while addressing the challenges of model selection and extrapolation.

Discussion Character

  • Exploratory
  • Technical explanation
  • Debate/contested

Main Points Raised

  • One participant suggests that any finite number of data points can be exactly fitted using a polynomial of degree N-1, but emphasizes the need for a mathematical model for meaningful extrapolation.
  • Another participant expresses a desire to predict future points for program initialization, seeking a specific formula for the data plot.
  • Concerns are raised about the ill-posed nature of the problem due to the lack of constraints on the function, with a suggestion to specify a polynomial order to guide the fitting process.
  • A participant mentions testing polynomials of various orders but finds them inadequate for predicting the continuation of the function.
  • One suggestion includes plotting the data on logarithmic coordinates to gain insights into the potential form of the function.

Areas of Agreement / Disagreement

Participants do not reach a consensus on the best approach for fitting the data, with multiple competing views on the necessity of constraints and the effectiveness of different fitting methods.

Contextual Notes

The discussion highlights limitations related to the ill-posed nature of the fitting problem and the dependence on model selection, which remains unresolved.

quin
Messages
50
Reaction score
0
Hi friends.
I want to fit my x datas and y datas with a function in the most exact way.my data is:

Code:
x=[0.3 0.5 0.7 0.9 1 1.3 1.4 1.5 2  3 5 7 9 10 30 50 70 90 100];
y=[13.4347 8.3372 6.3107 5.27 4.93 4.28 4.14 4.0199 3.6349 3.3178 3.1282 3.0691 3.0432 3.0354 3.0043 3.0016 3.0008 3.0005 3.0004];
and I ploted y vs x

can you give me the most suitable formula for the curve of these data?

thank you so much
 
Physics news on Phys.org
It is possible to EXACTLY fit any finite number of [x,y] data pairs using the method of divided differences. N data points can be fitted exactly by a polynomial of degree N-1.
If you want something else out of the data, such as the ability to interpolate or parameters that have an actual meaning according to some model, then you will have to construct a mathematical model from a priori principles.
Your best bet then would be to use a non-linear least-square regression (weighted, if you can weigh the data) that will find the best fit of the data to the mathematical model. I recommend the Simplex method as being very robust and not too dependent on the initial estimates of the parameters (coefficients, constants, etc) in the model.
In the long run, the method you choose should be driven by what you already know about the source of the data, and by what you expect to get out of the data.
One caveat I feel must be made: don't expect extrapolations to mean much. Extrapolations are toys by which engineers, economists, and other non-scientists delude themselves.
 
you are right but I just want to predict a few next points for taking them as my initial numbers for my program

so is there anybody who knows a way in MATLAB for finding the formula of plot of my points?
 
The problem is you haven't given any constraints for your function. There are an infinite number of functions which fit your data exactly. You need to constrain the model by saying, for example, it should be a polynomial of order 18 (as tadchem suggested). This continuous model would at least make any extrapolation attempt somewhat dependent on the data.

MATLAB can solve the problem (in many different ways) once you do this. Until you do this, the problem is hugely ill-posed.
 
MikeyW said:
The problem is you haven't given any constraints for your function. There are an infinite number of functions which fit your data exactly. You need to constrain the model by saying, for example, it should be a polynomial of order 18 (as tadchem suggested). This continuous model would at least make any extrapolation attempt somewhat dependent on the data.

MATLAB can solve the problem (in many different ways) once you do this. Until you do this, the problem is hugely ill-posed.

you are right but I tested a polynomial of order -6 to 6 . But it won't predict the continuation of my real function in a good way!
So what formula do you suggest for fitthing these datas?

thank you so much
 
Just for starters, try plotting your [x,y] pairs on logarithmic coordinates. That may at least give you a hint of what the function may look like.
 

Similar threads

  • · Replies 9 ·
Replies
9
Views
4K
  • · Replies 14 ·
Replies
14
Views
4K
  • · Replies 6 ·
Replies
6
Views
6K
  • · Replies 12 ·
Replies
12
Views
4K
  • · Replies 5 ·
Replies
5
Views
3K
  • · Replies 1 ·
Replies
1
Views
1K
  • · Replies 1 ·
Replies
1
Views
4K
  • · Replies 2 ·
Replies
2
Views
8K
  • · Replies 3 ·
Replies
3
Views
2K
  • · Replies 5 ·
Replies
5
Views
44K