zwhgb 发表于 2009-9-25 17:21

求助一个Matlab拟合三元二次方程问题

h=;
k=;
l=;
d=;
满足 d^-2=h^2*a^-2+k^2*b^-2+l^2*c^-2    求a b c
上面给出了hkld的5组数据,还有很多,不知道怎么编写程序来拟合出abc的值

说明:这是用于XRD分析晶胞参数abc,有相关的信息的请告诉我一下谢谢!!!!

下面是我自己编的,可是运行不出来.......
clc;clear all;
h=;
k=;
l=;
d=;
myfun=inline('sqrt((h.^2)./(x(1).^2)+(k.^2)./(x(2).^2)+(l.^2)./(x(3).^2)).^-1)','x','h','k','l');
format short g
x=nlinfit(h,k,l,d,myfun,)   初始值一般为202013.5



ChaChing 发表于 2009-9-25 22:25

回复 楼主 zwhgb 的帖子

使用前函数, 建议先详细看下相关帮助文献及试跑例子
依据刚刚试试的, 楼主看看
clc;clear all;
h=; k=; l=; d=;
x=; y=(1./d').^2; beta0=;
beta = nlinfit(x,y,@myfun,beta0)

function F = myfun(beta,x)
a=beta(1); b=beta(2); c=beta(3); h=x(:,1); k=x(:,2); l=x(:,3);
F = (h/a).^2+(k/b).^2+(l/c).^2;
页: [1]
查看完整版本: 求助一个Matlab拟合三元二次方程问题