COWLN 发表于 2009-6-8 19:44

求助,含积分的非线性拟合问题

∫x^m*cosxdx=N,从0至w积分
已知w=,N= ,求m值。
请各位高人指教用什么函数?如果能给出具体计算程序,将不胜感激!

dingd 发表于 2009-6-9 09:25

用1stOpt很容易处理含积分的拟合问题:

Variable x,y;
Function y=int(t^m*cos(t),t=0:x);
Data;
1.570796327        0.5707963268
3.141592654        -2
4.71238898        -5.71238898

结果:
相关系数(R): 0.999999999999801
相关系数之平方(R^2): 0.999999999999603

参数                 最终估算
--------------------           --------------
m                          0.999999967360309

====== 输出结果 =====

No        目标y        计算y
1        0.5707963268        0.570795205847058
2        -2        -2.00001608966833
3        -5.71238898        -5.71243515763952

COWLN 发表于 2009-6-9 10:18

谢谢dingd。
如果用matlab,用哪个函数?能不能写出具体的计算程序,谢谢。

rocwoods 发表于 2009-6-10 00:50

非线性拟合的算法之一就是用非线性最小二乘法进行拟合,给定一组观察值,非线性最小二乘拟合本质上是求系统与观察值之差的平方和的最小值问题。具体到楼主的问题即:求m,使得
y = (quadl(@(t) t.^m.*cos(t),0,w(1))-N(1))^2 + (quadl(@(t) t.^m.*cos(t),0,w(2))-N(2))^2 ...
      + (quadl(@(t) t.^m.*cos(t),0,w(3))-N(3))^2; 取得最小值.
因此得到下面代码:
function m = Findm
w = ;
N = ;
function y = ObjecFun(m)
    y = (quadl(@(t) t.^m.*cos(t),0,w(1))-N(1))^2 + (quadl(@(t) t.^m.*cos(t),0,w(2))-N(2))^2 ...
      + (quadl(@(t) t.^m.*cos(t),0,w(3))-N(3))^2;
end
m = fminbnd(@ ObjecFun,0,2);
end
运行这个函数:
format long
m = Findm
m =
   1.000000256506471

COWLN 发表于 2009-6-11 16:52

得到运算结果了,谢谢楼上
页: [1]
查看完整版本: 求助,含积分的非线性拟合问题