作业帮 > 数学 > 作业

怎么用matlab拟合方程,y=a*(x1^b)*(x2^c)

来源:学生作业帮 编辑:拍题作业网作业帮 分类:数学作业 时间:2024/04/28 18:38:56
怎么用matlab拟合方程,y=a*(x1^b)*(x2^c)
其中,y=[424700 33230 5520],x1=[200 400 600];x2=[3740 5184 7356]
直接解方程组就好了,用三组xy的值,三个未知数啊.
用solve命令可以解决吧
要不自己编一个算法也可以
再问: 怎么用matlab求解,因为还有好多数据,麻烦您给变个程序吧。谢谢,matlab 不太会用。
再答: 但我不知道你这个要拟合的想法是啥啊 比如最小二乘法,是取权值最小的直线。
再问: 我是做试验的结果数据,按照方程(也就是模型),拟合求出a,b,c的值。其实真实问题是这样的: Nf=k1*(1/x1)^k2*(1/x2)^k3,这个是模型,其中,Nf==[424700 33230 5520],x1=[200 400 600];x2=[3740 5184 7356],Nf,x1和x2都是实验结果,现在我要按模型进行拟合,求出K1,K2,K3的值。非常感谢你。
再答: 恩,我给个思路吧!~ 你把式子两边取自然对数,变成线性的在拟合,在用regress命令进行多元函数拟合 可以参考百度文库的文章(我也是刚看的): http://wenku.baidu.com/view/c0b582dba58da0116c17499e.html
再问: 您好!用您讲的solve命令求解了,结果还可以。 syms k1 k2 k3; [k1 k2 k3]=solve('k1*(1/200)^k2*(1/542422)^k3=424700','k1*(1/400)^k2*(1/751849)^k3=33230','k1*(1/600)^k2*(1/1066860)^k3=5520') 怎么给出拟合的相关系数R2的值啊?在线等
再答: 用solve命令得到的是解,拟合的话你肯定不只有三组数据啊!~ 用我说的regress命令做吧
再问: regress也求出来了,用regress得出的解是:K1=61.8351,K2=2.3826,K3=2.7456。程序是:a=[1/200 1/400 1/600];b=[1/542422 1/751849 1/1016860];n=[424700 33230 5520];x1=log(a);x2=log(b);y=log(n);x=[ones(3,1),x1',x2'];c=regress(y',x)现在就是怎么求解相关系数R2的值,用来评价模型的可靠性,主要是格式怎么写?理论模型是下面的,我对两边求对数后求解的,其中K1 K2 K3是系数。
再答: 你这样不是已经把K1 K2 K3给求出来了 相关系数的话 应该是对你的数据而言把,当然这里你的拟合条件是在两边取完对数之后才有线性关系,所以,求R2线性相关系数的话,需要把你的数据取对数之后来得到相关系数 也就是你程序里面x1、x2、y的值来做,是个多元的相关性分析(话说我不是学统计的来着) 估计直接做成矩阵A,在用corrcoef求就行吧,跟拟合的函数没关系。 话说我这算回答了三个问题不?