lsqnonlin(解非线性最小二乘问题)怎么使用??我是个新手,最好有详细的教程,谢谢各位大哥大姐啦

来源:百度知道 编辑:UC知道 时间:2024/09/23 09:14:11
最好有例子啊,再次谢谢
用MATLAB中的lsqnonlin函数来算,谢谢啦

二分法
数学方面:
一般地,对于函数f(x),如果存在实数c,当x=c是f(c)=0,那么把x=c叫做函数f(x)的零点。

解方程即要求f(x)的所有零点。

先找到a、b,使f(a),f(b)异号,说明在区间(a,b)内一定有零点,然后求f[(a+b)/2],

现在假设f(a)<0,f(b)>0,a<b

①如果f[(a+b)/2]=0,该点就是零点,
如果f[(a+b)/2]<0,则在区间((a+b)/2,b)内有零点,(a+b)/2=>a,从①开始继续使用
中点函数值判断。
如果f[(a+b)/2]>0,则在区间(a,(a+b)/2)内有零点,(a+b)/2=>b,从①开始继续使用
中点函数值判断。
这样就可以不断接近零点。

通过每次把f(x)的零点所在小区间收缩一半的方法,使区间的两个端点逐步迫近函数的零点,以求得零点的近似值,这种方法叫做二分法。

由于计算过程的具体运算复杂,但每一步的方式相同,所以可通过编写程序来运算。

例:(C语言)

方程式为:f(x) = 0,示例中f(x) = 1+x-x^3

使用示例:

input a b e: 1 2 1e-5

solution: 1.32472

源码如下:

#include <stdio.h>

#include <stdlib.h>

#include <math.h>

#include <assert.h>

double f(double x)

{

return 1+x-x*x*x;

}

int main()

{