阳光石油网|石油技术交流|石油人论坛

 找回密码
 欢迎注册
查看: 2244|回复: 4

[基本理论] 如何理解数值模拟中的牛顿迭代法

[复制链接]
  • TA的每日心情
    奋斗
    2016-2-26 13:48
  • 签到天数: 508 天

    [LV.9]以坛为家II

    发表于 2015-7-10 15:20:01 | 显示全部楼层 |阅读模式

    马上注册,下载丰富资料,享用更多功能,让你轻松玩转阳光石油论坛。

    您需要 登录 才可以下载或查看,没有账号?欢迎注册

    x
    本帖最后由 joylin 于 2015-7-10 15:23 编辑

    基于Matlab实现牛顿迭代法解非线性方程组

    例子:
    已知非线性方程组如下
    Image 1.jpg
    给定初值 ,要求求解精度达到0.00001


    1、首先建立函数F(x),方程组编程如下,将F.m保存到工作路径中:

    function f=F(x)
    f(1)=x(1)^2-10*x(1)+x(2)^2+8;
    f(2)=x(1)*x(2)^2+x(1)-10*x(2)+8;
    f=[f(1) f(2)];


    2、建立函数DF(x),用于求方程组的Jacobi矩阵,将DF.m保存到工作路径中:

    function df=DF(x)
    df=[2*x(1)-10,2*x(2);x(2)^2+1,2*x(1)*x(2)-10];


    3、编程牛顿迭代法解非线性方程组,将newton.m保存到工作路径中:

    clear;
    clc
    x=[0,0]';
    f=F(x);
    df=DF(x);
    fprintf('%d  %.7f  %.7f\n',0,x(1),x(2));
    N=4;
    for i=1:N
        y=df\f';
        x=x-y;
        f=F(x);
        df=DF(x);
        fprintf('%d  %.7f  %.7f\n',i,x(1),x(2));
        if norm(y)<0.0000001
            break;
        else
        end
    end



  • TA的每日心情
    开心
    2015-7-30 10:26
  • 签到天数: 16 天

    [LV.4]偶尔看看III

    发表于 2015-7-10 15:23:17 | 显示全部楼层
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    难过
    2019-8-20 19:49
  • 签到天数: 309 天

    [LV.8]以坛为家I

    发表于 2015-7-10 19:12:22 | 显示全部楼层
    回复 支持 反对

    使用道具 举报

  • TA的每日心情

    2021-2-19 15:45
  • 签到天数: 738 天

    [LV.9]以坛为家II

    发表于 2015-7-12 09:30:16 | 显示全部楼层
    看不懂啊...
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    奋斗
    2016-4-7 09:26
  • 签到天数: 65 天

    [LV.6]常住居民II

    发表于 2015-7-12 15:37:09 | 显示全部楼层
    回复 支持 反对

    使用道具 举报

    您需要登录后才可以回帖 登录 | 欢迎注册

    本版积分规则

    QQ|Archiver|手机版|小黑屋|阳光石油网 ( 鲁ICP备2021003870号-1 )

    GMT+8, 2024-6-10 07:15 , Processed in 0.076204 second(s), 27 queries .

    Powered by Discuz! X3.4 Licensed

    Copyright © 2001-2021, Tencent Cloud.

    快速回复 返回顶部 返回列表