请matlab高手根据给出的数据编写一个拟合二元函数的程序
来源:学生作业帮 编辑:大师作文网作业帮 分类:综合作业 时间:2024/11/10 18:55:40
请matlab高手根据给出的数据编写一个拟合二元函数的程序
(本人完全不懂matlab)
希望得到一个二元不限次的函数,一次的肯定不行,从图形上看偏差很大.建议先将数据点描出,再根据分布趋势确定函数类型,这需要根据经验了.最后希望得到完整的代码,运行之后可以得到拟合的方程、原始数据点图和拟合出的函数曲面图.
其中:
x:50 100 150 200 250 300 350 400 450 500.
y:40 80 120 160 200
z是一个10X5的矩阵(其实就是X行和Y列得到的数据点):
0.05 0.05 0.05 0.05 0.05
0.25 0.15 0.11 0.05 0.05
0.5 0.2 0.2 0.04 0.04
1.6 1 0.5 0.11 0.07
2.5 2.4 1.14 0.34 0.12
3.2 2.7 1.54 0.7 0.21
3.4 3.1 2.1 1.15 0.3
3.75 3.5 2.56 1.4 0.6
4 3.8 2.95 2 0.9
4.2 4 3.2 2.2 1.1
(本人完全不懂matlab)
希望得到一个二元不限次的函数,一次的肯定不行,从图形上看偏差很大.建议先将数据点描出,再根据分布趋势确定函数类型,这需要根据经验了.最后希望得到完整的代码,运行之后可以得到拟合的方程、原始数据点图和拟合出的函数曲面图.
其中:
x:50 100 150 200 250 300 350 400 450 500.
y:40 80 120 160 200
z是一个10X5的矩阵(其实就是X行和Y列得到的数据点):
0.05 0.05 0.05 0.05 0.05
0.25 0.15 0.11 0.05 0.05
0.5 0.2 0.2 0.04 0.04
1.6 1 0.5 0.11 0.07
2.5 2.4 1.14 0.34 0.12
3.2 2.7 1.54 0.7 0.21
3.4 3.1 2.1 1.15 0.3
3.75 3.5 2.56 1.4 0.6
4 3.8 2.95 2 0.9
4.2 4 3.2 2.2 1.1
在不知道原理的情况下,函数的选择本身就有些随意性.我选了一种函数来拟合,程序和结果你运行后就能看见.
clear all
clc
x=[50 100 150 200 250 300 350 400 450 500];
y=[40 80 120 160 200];
[X,Y]=meshgrid(x,y);
z=[0.05 0.05 0.05 0.05 0.05
0.25 0.15 0.11 0.05 0.05
0.5 0.2 0.2 0.04 0.04
1.6 1 0.5 0.11 0.07
2.5 2.4 1.14 0.34 0.12
3.2 2.7 1.54 0.7 0.21
3.4 3.1 2.1 1.15 0.3
3.75 3.5 2.56 1.4 0.6
4 3.8 2.95 2 0.9
4.2 4 3.2 2.2 1.1]';
DF=@(x) sum(sum((z-(x(1)*X.^2./(x(2)*X.^2+x(3)*Y.^3+x(4)))).^2));
[coef,fval]=fminsearch(DF,[1,1,1,1]);
[X1,Y1]=meshgrid(0:20:500,0:20:200);
Fs=coef(1)*X1.^2./(coef(2)*X1.^2+coef(3)*Y1.^3+coef(4));
surf(X,Y,z,'FaceColor','none','Marker','.','MarkerSize',30,'MarkerFaceColor',[0 0 0])
hold on
surf(X1,Y1,Fs,'FaceAlpha',0.5,'FaceColor','interp')
xlabel('x')
ylabel('y')
zlabel('z')
syms x y a b c d
Fitfun=a*x^2/(b*x^2+c*y^3+d);
disp('The fitting function is ')
pretty(Fitfun)
disp(['where a=',num2str(coef(1)),', b=',num2str(coef(2)),', c=',num2str(coef(3)),', d=',num2str(coef(4))])
disp(['The sum of least-square errors :',num2str(fval)])
clear all
clc
x=[50 100 150 200 250 300 350 400 450 500];
y=[40 80 120 160 200];
[X,Y]=meshgrid(x,y);
z=[0.05 0.05 0.05 0.05 0.05
0.25 0.15 0.11 0.05 0.05
0.5 0.2 0.2 0.04 0.04
1.6 1 0.5 0.11 0.07
2.5 2.4 1.14 0.34 0.12
3.2 2.7 1.54 0.7 0.21
3.4 3.1 2.1 1.15 0.3
3.75 3.5 2.56 1.4 0.6
4 3.8 2.95 2 0.9
4.2 4 3.2 2.2 1.1]';
DF=@(x) sum(sum((z-(x(1)*X.^2./(x(2)*X.^2+x(3)*Y.^3+x(4)))).^2));
[coef,fval]=fminsearch(DF,[1,1,1,1]);
[X1,Y1]=meshgrid(0:20:500,0:20:200);
Fs=coef(1)*X1.^2./(coef(2)*X1.^2+coef(3)*Y1.^3+coef(4));
surf(X,Y,z,'FaceColor','none','Marker','.','MarkerSize',30,'MarkerFaceColor',[0 0 0])
hold on
surf(X1,Y1,Fs,'FaceAlpha',0.5,'FaceColor','interp')
xlabel('x')
ylabel('y')
zlabel('z')
syms x y a b c d
Fitfun=a*x^2/(b*x^2+c*y^3+d);
disp('The fitting function is ')
pretty(Fitfun)
disp(['where a=',num2str(coef(1)),', b=',num2str(coef(2)),', c=',num2str(coef(3)),', d=',num2str(coef(4))])
disp(['The sum of least-square errors :',num2str(fval)])
请matlab高手根据给出的数据编写一个拟合二元函数的程序
请帮忙编写一个matlab计算程序,拟合二元一次函数z=f(x,y)
matlab用隐函数拟合的程序怎么编写
matlab非线性数据拟合程序编写
用MATLAB求一个二元函数极小值的问题,需编写MATLAB程序.
求matlab高手帮忙编写一个函数拟合程序.估计可以得到一个幂函数或者指数函数.
matlab用多项式函数拟合曲线,且使这个函数要过一定点(x0,y0),matlab中有现成的函数,还是需要编写程序,请
matlab拟合一个二元函数
MATLAB拟合类似反比例函数的程序.
MATLAB 我要拟合一个二元函数,并已知他们的数据,但不知道函数大概的模型,能通过MATLAB算出函数吗?
matlab函数作图在问下 曲线 上有以下点,请编写用曲线拟合求出其关系式的matlab程序,并画图分析拟合效果.x 5
matlab如何拟合得到5个自变量,一个因变量的函数,高手请相助,分数奉上~