0043算法笔记——【随机化算法】解非线性方程组

0043算法笔记——【随机化算法】解非线性方程组

ID:37966080

大小:48.76 KB

页数:7页

时间:2019-06-04

0043算法笔记——【随机化算法】解非线性方程组_第1页
0043算法笔记——【随机化算法】解非线性方程组_第2页
0043算法笔记——【随机化算法】解非线性方程组_第3页
0043算法笔记——【随机化算法】解非线性方程组_第4页
0043算法笔记——【随机化算法】解非线性方程组_第5页
资源描述:

《0043算法笔记——【随机化算法】解非线性方程组》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、问题描述   求解下面的非线性方程组   其中,x1,x2,…,xn是实变量,fi是未知量x1,x2,…,xn的非线性实函数。要求确定上述方程组在指定求根范围内的一组解。   问题分析   解决这类问题有多种数值方法,如:牛顿法、拟牛顿法、粒子群算法等。最常用的有线性化方法和求函数极小值方法。为了求解所给的非线性方程组,构造一目标函数    式中,x=(x1,x2,……xn)。易知,上式取得极小值点即是所求非线性方程组的一组解。   求解思路  在指定求根区域D内,选定一个随机点x0作为随机搜索的出发点。在算法的搜索过程中,假设第j步随机搜索得到的随机搜索点为xj。在第j+1步,计算出下一

2、步的随机搜索增量dxj。从当前点xj依dxj得到第j+1步的随机搜索点。当x<时,取为所求非线性方程组的近似解。否则进行下一步新的随机搜索过程。   题外话:笔者在读王晓东《算法设计与分析》中这一节时,发现书上所给的代码似乎有些问题。在这里指出,如果提得不对,还请大侠们拍砖。书中给出的代码具体如下:[cpp] viewplain copy1.bool nonlinear(double *x0,double *dx0, double *x,double a0,  2.      double epsilon, double k,int n, int steps,int m)  3.{   4

3、.    static randomnumber rad;  5.    bool success;  6.    double *dx, *r;  7.    dx=new double[n+1];  8.    r=new double[n+1];  9.    int mm=0;  10.    int j=0;  11.    double a=a0;  12.    for(int i=1;i<=n;i++)  13.    {  14.        x[i]=x0[i];  15.        dx[i]=dx0[i];  16.    }  17.    double f

4、x=f(x,n);  18.    double min=fx;  19.    while ((min>epsilon)&&(jm)a/=k;  3

5、1.            success=false;  32.        }  33.        for(int i=1;i<=n;i++)  1.            r[i]=2.0*rnd.fRandom()-1;  2.        if(success)  3.            for(int i=1;i

6、        for (int i=1;iepsilon)&&(j

7、 笔者发现如果此时fx

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。