声振论坛

 找回密码
 我要加入

QQ登录

只需一步,快速开始

查看: 2037|回复: 1

[综合讨论] 求助一个Matlab拟合三元二次方程问题

[复制链接]
发表于 2009-9-25 17:21 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?我要加入

x
h=[1 0 5 4 1];
k=[0 2 0 2 3];
l=[1 0 1 2 3];

d=[11.207 10.027 3.8422 3.7241 3.6335];
满足 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=[1 0 5 4 1];
k=[0 2 0 2 3];
l=[1 0 1 2 3];
d=[11.207 10.027 3.8422 3.7241 3.6335];
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,[20 20 13.5])   初始值一般为20  20  13.5



回复
分享到:

使用道具 举报

发表于 2009-9-25 22:25 | 显示全部楼层

回复 楼主 zwhgb 的帖子

使用前函数, 建议先详细看下相关帮助文献及试跑例子
依据刚刚试试的, 楼主看看
clc;clear all;
h=[1 0 5 4 1]; k=[0 2 0 2 3]; l=[1 0 1 2 3]; d=[11.207 10.027 3.8422 3.7241 3.6335];
x=[h', k', l']; y=(1./d').^2; beta0=[20 20 13.5];
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

查看全部评分

您需要登录后才可以回帖 登录 | 我要加入

本版积分规则

QQ|小黑屋|Archiver|手机版|联系我们|声振论坛

GMT+8, 2024-6-26 13:15 , Processed in 0.098492 second(s), 22 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表