matlab用隐函数拟合的程序怎么编写

试验测试得到x,y数据。现在想通过用matlab用隐函数y=I1*exp((x-y*Rs)/0.026/n1)+I2*exp((x-y*Rs)/0.026/n2)+(x-... 试验测试得到x,y数据。
现在想通过用matlab用隐函数y=I1*exp((x-y*Rs)/0.026/n1)+I2*exp((x-y*Rs)/0.026/n2)+(x-y*Rs)/Rsh-I1-I2+IL对数据进行拟合。得到参量I1、I2、IL、Rs、Rsh、n1、n2的数值。
请高手帮忙。

先谢谢了。
自变量x从0到1,每0.05取一个点。
对应的y值如下:
0, 4.84827E-9
0.05, 7.20861E-9
0.1, 9.486E-9
0.15, 1.33346E-8
0.2, 1.85467E-8
0.25, 2.54804E-8
0.3, 3.57885E-8
0.35, 4.94846E-8
0.4, 6.86021E-8
0.45, 9.34068E-8
0.5, 1.36416E-7
0.55, 2.18504E-7
0.6, 4.51033E-7
0.65, 1.2785E-6
0.7, 4.57114E-6
0.75, 1.70904E-5
0.8, 5.62476E-5
0.85, 1.45646E-4
0.9, 2.93975E-4
0.95, 4.91251E-4
1, 7.21464E-4
y轴用的是指数坐标。
展开
 我来答
greatdju
推荐于2018-04-10 · TA获得超过2.2万个赞
知道大有可为答主
回答量:2486
采纳率:50%
帮助的人:4169万
展开全部

clear;clc 

F=@(p,x)p(1)*exp((x(:,1)-x(:,2)*p(4))/0.026/p(6))+p(2)*exp((x(:,1)-x(:,2)*p(4))/0.026/p(7))+(x(:,1)-x(:,2)*p(4))/p(5)-p(1)-p(2)+p(3)-x(:,2); 

x=[0,4.84827E-9 

0.05,7.20861E-9 

0.1,9.486E-9 

0.15,1.33346E-8 

0.2,1.85467E-8 

0.25,2.54804E-8 

0.3,3.57885E-8 

0.35,4.94846E-8 

0.4,6.86021E-8 

0.45,9.34068E-8 

0.5,1.36416E-7 

0.55,2.18504E-7 

0.6,4.51033E-7 

0.65,1.2785E-6 

0.7,4.57114E-6 

0.75,1.70904E-5 

0.8,5.62476E-5 

0.85,1.45646E-4 

0.9,2.93975E-4 

0.95,4.91251E-4 

1,7.21464E-4 ]; 

p0=[3 5 4 10 9 10 4];%%因为你这个函数很变态,初值选择不好得不到好结果,这个初值不错 

warning off 

p=nlinfit(x,zeros(size(x,1),1),F,p0); 

disp('I1、I2、IL、Rs、Rsh、n1、n2分别为:'); 

disp(num2str(p)); 

plot(x(:,1),x(:,2),'ro');hold on; 

ezplot(@(x,y)F(p,[x,y]),[0,1,-1e-3,1e-3]); 

title('曲线拟合');legend('样本点','拟合曲线')

化学工程
2009-05-16 · TA获得超过8899个赞
知道大有可为答主
回答量:2212
采纳率:80%
帮助的人:3321万
展开全部
把数据给出来,我有办法。

等式右侧可以看成双自变量x(1)=x,x(2)=y,这样就成了多变量拟合了。

【补充】初始值不好确定,但方法就是这样的:

clc; clear
A=[...
0 4.84827E-9
0.05 7.20861E-9
0.1 9.486E-9
0.15 1.33346E-8
0.2 1.85467E-8
0.25 2.54804E-8
0.3 3.57885E-8
0.35 4.94846E-8
0.4 6.86021E-8
0.45 9.34068E-8
0.5 1.36416E-7
0.55 2.18504E-7
0.6 4.51033E-7
0.65 1.2785E-6
0.7 4.57114E-6
0.75 1.70904E-5
0.8 5.62476E-5
0.85 1.45646E-4
0.9 2.93975E-4
0.95 4.91251E-4];
format short g
x=A(:,1);y=A(:,2);
X=[x,y];
%y=I1*exp((x-y*Rs)/0.026/n1)+I2*exp((x-y*Rs)/0.026/n2)+(x-y*Rs)/Rsh-I1-I2+IL
%I1=a(1),Rs=a(2),n1=a(3),I2=a(4),n2=a(5),Rsh=a(6),IL=a(7)
fun=inline('a(1)*exp((x(:,1)-x(:,2)*a(2))/0.026/a(3))+a(4)*exp((x(:,1)-x(:,2)*a(2))/0.026/a(5))+(x(:,1)-x(:,2)*a(2))/a(6)-a(1)-a(4)+a(7)','a','x')
a=nlinfit(X,y,fun,[ 1 1 1 1 1 1 1])
%{
figure(1)
plot(x,y)
figure(2)
semilogy(x,y)
figure(3)
loglog(x,y)

%}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式