登录论坛

查看完整版本 : 如何定义这样一个函数?


conghualulu
2009-08-18, 19:27
各位大虾:
初学matlab,遇到一些问题,绞尽脑汁无法解决。
问题是这样的:
我要定义这样一个函数
C=exp(-De*q(1)*t)/q(1)^2+exp(-De*q(2)*t)/q(2)^2+exp(-De*q(3)*t)/q(3)^2......+exp(-De*q(50)*t)/q(50)^2
De是参数,t是变量,q的取值来自方程tan(q)=3q/(3+2q^2)的非零正解。
我最终的目的是要利用函数lsqcurvefit估计参数De,所以要先定义方程。

我的编程如下:
clear all
clc

t = [0 0.5 1 1.5 2 2.5 3 3.5 4 4.5 5 7 10 15 20]';
Cexp=[200 194.1 190.4 182.2 180.2 183.1 179.5 175.9 180.1 175.0 181.4 178.1 174.8 172.8 171.8]';
k0 = 0.00001;

k = lsqcurvefit(@ObjFunc, k0, t, Cexp)

% ------------------------------------------------------------------
function C = ObjFunc(De,t)
i=0;
for xi=0.00001:pi:10*pi+0.00001;
i=i+1;
q(i)=fzero(@func,xi);
end
p=q';
C=sum(exp(-De*p.^2.*t/0.113^2)/p.^2);
function f = func(x)
f =tan(x)- 3*x/(3+2*x^2);

一运行就出现错误,关键是这个方程如何定义,哪位大侠指点迷津啊,谢谢啦