作业帮 > 数学 > 作业

matlab 如何拟合二维函数表达式? z=f(x,y)

来源:学生作业帮 编辑:拍题作业网作业帮 分类:数学作业 时间:2024/05/21 22:59:14
matlab 如何拟合二维函数表达式? z=f(x,y)
就像matlab里用“lsqcurvefit”拟合一维函数y=f(x)一样,不同的是未知数有两个.
比如,已知函数表达式是 z=a0+a1*x+a2*y
并且已知三组数据,(比如可以用z=3x+4y+1先弄出一组数据,再反过来估计函数表达式)
x=[1 2 1 2 0 0]
y=[0 0 1 1 1 2]
z=[4 7 8 11 5 9]
求出待估计的系数a0,a1,a2的值从而得到表达式.
楼主说的这个问题是线性拟合问题,不必用专门的拟合命令:
推导:
z = a0+a1*x+a2*y
==> z = [1 x y]*[a0
a1
a2]
所以,要求未知参数列向量a,直接用矩阵除法就可以了:
a = xy\z
其中
xy = [1 1 0
1 2 0
1 1 1
1 2 1
1 0 1
1 0 2] %第2列为x,第3列为y
z = [4 7 8 11 5 9]';
求出的结果是:
>> xy\z
ans =
1.0000
3.0000
4.0000
再问: 谢谢,我在万方找到一篇文章用最小二乘法解方程解决了,《二元一次函数曲线拟合的Matlab实现.pdf》。 不是应该[1 x y]的逆矩阵左乘Z矩阵 求出系数矩阵A么,怎么是[1 x y] /z还得到正确结果了,而且不是方阵没有逆矩阵额。。。
再答: 首先,“ [1 x y] /z ”应该是 [1 x y]\z(左除矩阵[1 x y]),也就是说,[1 x y] 在分母上,z在分子上(谁在斜杆的下方谁就是分母); 然后,这里的矩阵除法实际上是最小二乘法的一种在线性方程组中的表达,并不真正是矩阵求逆。