1

Have a set of data points (x,y,z), and trying to fit a generic quadratic to them using scipy optimize.curve_fit.

I have tried a couple different methods, but can't seem to make it work. Any guidance on why I would be getting this error, or a recommended different method?

Error is "ValueError: operands could not be broadcast together with shapes (2,) (12,)"

 import scipy.optimize as optimize XY = [(11, 70), (11, 75), (11, 80), (11, 85), (12, 70), (12, 75), (12, 80), (12, 85), (13, 70), (13, 75), (13, 80), (13, 85)] Z = [203.84, 208, 218.4, 235.872, 228.30080000000004, 232.96000000000004, 244.60800000000006, 264.1766400000001, 254.8, 260, 273, 294.84000000000003] guess = (1,1,1,1,1,1) def fit(X, a, b, c, d, f, g): return a + (b*X[0])+(c*X[1])+(d*X[0]**2)+(f*X[1]**2)+(g*X[0]*X[1]) params, cov = optimize.curve_fit(fit, XY, Z, guess) 

1 Answer 1

1

According to the docs you need XY to be size (k,M) where k is the dimension and M is the number of samples. In your case you've defined XY to be size (M,k).

Try the following

import numpy as np ... params, cov = optimize.curve_fit(fit, np.transpose(XY), Z, guess) 
Sign up to request clarification or add additional context in comments.

Comments

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.