Labfans是一个针对大学生、工程师和科研工作者的技术社区。 | 论坛首页 | 联系我们(Contact Us) |
![]() |
![]() |
#1 |
初级会员
注册日期: 2009-08-04
帖子: 1
声望力: 0 ![]() |
![]()
各位大虾:
初学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 ![]() 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); 一运行就出现错误,关键是这个方程如何定义,哪位大侠指点迷津啊,谢谢啦 |
![]() |
![]() |