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}
本人是彻底的菜鸟啊,最好直接写个程序复制过去就能运行的……
展开
 我来答
风雨之中漂泊
2010-06-20 · TA获得超过246个赞
知道答主
回答量:80
采纳率:0%
帮助的人:62万
展开全部
在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

就可以了。
学liu
2010-06-20 · TA获得超过125个赞
知道答主
回答量:98
采纳率:0%
帮助的人:73.5万
展开全部
在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 的值 ;

希望对你有帮助
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
濯浚路焱
2020-02-21 · TA获得超过3603个赞
知道大有可为答主
回答量:3115
采纳率:34%
帮助的人:176万
展开全部
只能人为估计,或者算法能搜到全局最优,例如智能算法中遗传算法,神经网络,等等。不然这些基本算法如最小二乘,牛顿算法容易陷入局部最优的缺点要是克服了,就用不到智能算法了。
函数拟合一般用最小二乘,初值的选取一般是计算机自动,你可以根据拟合效果多次调整,或者用其他软件拟合出大概值,如1stOpt15PRO很强大的
纯手打,若佑帮助,望采纳!
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式