matlab四维拟合问题

四维方程y=ax1+x2(πbx3^2-2/3πcx3^3),a,b,c为未知参数待拟合,x1,x2,x3为变量,求拟合方程怎么编程。

有人给出执行代码:
x1=[1.3311, 3.8836, 6.1042, 7.9581, 12.1415, 17.6534, 22.1343, 26.0562, 27.9412];
x2=[15.46, 42.1, 66.05, 79.01, 119.99, 149.22, 320.23, 390.85, 416.5];
x3=[0.12, 0.05, 0.038, 0.03, 0.026, 0.014, 0.01, 0.007, 0.004];
y=[9.45, 11.1, 13.3, 14.7, 19.85, 27, 31, 37, 38.3];
x=[x1 x2 x3];
func=inline('a(1).*x(:,1)+x(:,2).*(pi*a(2)*x(:,3).^2-2/3*pi*a(3)*x(:,3)^3)');
x0=[rand() rand() rand()];
[a,r,J]=nlinfit(x,y,func,x0);
错误使用 nlinfit (line 199)
Error evaluating inline model function.

原因:
错误使用 inline/subsref (line 14)
内联函数的输入数目太多。
vpa(a,10);y1=func(a,x);
str1 = ['a=',num2str(a(1))];
str2 = ['b=',num2str(a(2))];
str3 = ['c=',num2str(a(2))];
fprintf('%s\n',str1.str2,str3);
为什么会出错

你好,我就是提供给代码的人。给你的代码是没有问题的。可能你没有注意到x1、x2、x3、y是以列向量的形式给出。即
x1=[1.3311, 3.8836, 6.1042, 7.9581, 12.1415, 17.6534, 22.1343, 26.0562, 27.9412]’;
x2=[15.46, 42.1, 66.05, 79.01, 119.99, 149.22, 320.23, 390.85, 416.5]’;
x3=[0.12, 0.05, 0.038, 0.03, 0.026, 0.014, 0.01, 0.007, 0.004]’;
y=[9.45, 11.1, 13.3, 14.7, 19.85, 27, 31, 37, 38.3]’;
其他有一个笔误,即str3 = ['c=',num2str(a(2))];,应该为str3 = ['c=',num2str(a(3))];

如你需要代码,可以私信联系我。
温馨提示:答案为网友推荐,仅供参考
相似回答