matlab四维拟合问题

四维方程y=ax1+x2(πbx3^2-2/3πcx3^3),a,b,c为未知参数待拟合,x1,x2,x3为变量,求拟合方程怎么编程。有人给出执行代码:x1=[1.331... 四维方程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);
为什么会出错
展开
 我来答
lhmhz
高粉答主

推荐于2016-09-09 · 专注matlab等在各领域中的应用。
lhmhz
采纳数:7264 获赞数:17015

向TA提问 私信TA
展开全部
你好,我就是提供给代码的人。给你的代码是没有问题的。可能你没有注意到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))];

如你需要代码,可以私信联系我。
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式