Matlab 函数拟合问题
已知函数的形式为y(x)=A(e的Bx次方—e的Cx次方)其中x是自变量,A,B,C为待测常数,用MATLAB函数拟合工具确定出A,B,C的值。把程序和结果做出来。x={...
已知函数的形式为
y(x)=A(e的Bx次方—e的Cx次方)
其中x是自变量,A,B,C为待测常数,用MATLAB函数拟合工具确定出A,B,C的值。把程序和结果做出来。
x={0.25,0.5,0.75,1,1.5,2,2.5 ,3,3.5,4,4.5,5,6,7,8,9,10,11,12,13,14,15,16}
y={30,68,75,82,82,77,68,68,58,51,50,41,38,35,28,25,18,15,12,10 7,7,4}
本人是彻底的菜鸟啊,最好直接写个程序复制过去就能运行的…… 展开
y(x)=A(e的Bx次方—e的Cx次方)
其中x是自变量,A,B,C为待测常数,用MATLAB函数拟合工具确定出A,B,C的值。把程序和结果做出来。
x={0.25,0.5,0.75,1,1.5,2,2.5 ,3,3.5,4,4.5,5,6,7,8,9,10,11,12,13,14,15,16}
y={30,68,75,82,82,77,68,68,58,51,50,41,38,35,28,25,18,15,12,10 7,7,4}
本人是彻底的菜鸟啊,最好直接写个程序复制过去就能运行的…… 展开
3个回答
展开全部
在Matlab下输入:edit,然后将下面两行百分号之间的内容,复制进去,保存
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
function y=nihe(a,x)
y=a(1)*(e^(a(2)*x)-e^(a(3)*x)) %其中a=[a(1),a(2),a(3)]
%A、B、C分别用a(1),a(2),a(3)表示。
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
在Matlab下面输入:
x={0.25,0.5,0.75,1,1.5,2,2.5 ,3,3.5,4,4.5,5,6,7,8,9,10,11,12,13,14,15,16}
a=1;
b=2;
c=3;
y=nihe([a,b,c],x)
[A,res]=lsqcurvefit('nihe',ones(1,23),x,y);
A
得到的结果:
A =
1.0029 1.9451 2.9007
跟a,b,c的值大致一样。
以下是你的问题:
你设好x,y后,在Matlab下输入:
[A,res]=lsqcurvefit('nihe',ones(1,23),x,y);
A
就可以了。
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
function y=nihe(a,x)
y=a(1)*(e^(a(2)*x)-e^(a(3)*x)) %其中a=[a(1),a(2),a(3)]
%A、B、C分别用a(1),a(2),a(3)表示。
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
在Matlab下面输入:
x={0.25,0.5,0.75,1,1.5,2,2.5 ,3,3.5,4,4.5,5,6,7,8,9,10,11,12,13,14,15,16}
a=1;
b=2;
c=3;
y=nihe([a,b,c],x)
[A,res]=lsqcurvefit('nihe',ones(1,23),x,y);
A
得到的结果:
A =
1.0029 1.9451 2.9007
跟a,b,c的值大致一样。
以下是你的问题:
你设好x,y后,在Matlab下输入:
[A,res]=lsqcurvefit('nihe',ones(1,23),x,y);
A
就可以了。
展开全部
在m文件中新建一个待拟合的函数
function F=curve_fit(x,xdata)
%y(x)=A(e的Bx次方—e的Cx次方)
F=x(1)*(exp(x(2)*xdata)-exp(x(3)*.xdata));
在命令行输入
xdata=[0.25,0.5,0.75,1,1.5,2,2.5 ,3,3.5,4,4.5,5,6,7,8,9,10,11,12,13,14,15,16] ;
ydata=[30,68,75,82,82,77,68,68,58,51,50,41,38,35,28,25,18,15,12,10 7,7,4] ;
x0 = [10, 10, 10]; %初始估计值
[x,resnorm] = lsqcurvefit(@curve_fit,x0,xdata,ydata)
则x就是A B C 的值 ;
希望对你有帮助
function F=curve_fit(x,xdata)
%y(x)=A(e的Bx次方—e的Cx次方)
F=x(1)*(exp(x(2)*xdata)-exp(x(3)*.xdata));
在命令行输入
xdata=[0.25,0.5,0.75,1,1.5,2,2.5 ,3,3.5,4,4.5,5,6,7,8,9,10,11,12,13,14,15,16] ;
ydata=[30,68,75,82,82,77,68,68,58,51,50,41,38,35,28,25,18,15,12,10 7,7,4] ;
x0 = [10, 10, 10]; %初始估计值
[x,resnorm] = lsqcurvefit(@curve_fit,x0,xdata,ydata)
则x就是A B C 的值 ;
希望对你有帮助
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
只能人为估计,或者算法能搜到全局最优,例如智能算法中遗传算法,神经网络,等等。不然这些基本算法如最小二乘,牛顿算法容易陷入局部最优的缺点要是克服了,就用不到智能算法了。
函数拟合一般用最小二乘,初值的选取一般是计算机自动,你可以根据拟合效果多次调整,或者用其他软件拟合出大概值,如1stOpt15PRO很强大的
纯手打,若佑帮助,望采纳!
函数拟合一般用最小二乘,初值的选取一般是计算机自动,你可以根据拟合效果多次调整,或者用其他软件拟合出大概值,如1stOpt15PRO很强大的
纯手打,若佑帮助,望采纳!
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询