• 大小: 262KB
    文件类型: .zip
    金币: 1
    下载: 0 次
    发布日期: 2021-05-11
  • 语言: Matlab
  • 标签: matlab  

资源简介

MATLAB源程序代码分享:MATLAB实现牛顿迭代法求解非线性方程组

资源截图

代码片段和文件信息

%% Code by 求索哥  QQ: 2787392915  微信: mathsupp  手机: 18021503708   

%% 定义一个三元非线性方程组
clear;clc;close all
syms x y z                          % 定义符号变量 x y z
f1=6/(1+(x-y).^2)+sin(pi*y/2);      % 方程 1
f2=x*sin(pi*x)+y*sin(20*pi*y)-z;    % 方程 2
f3=x+2.0*y+z;                       % 方程 3
f=[f1;f2;f3];                       % 三个方程组成方程组

%% 计算雅克比矩阵
J=[diff(f1x) diff(f1y) diff(f1z) 
   diff(f2x) diff(f2y) diff(f2z)
   diff(f3x) diff(f3y) diff(f3z)];

%% 自定义牛顿迭代算法 求方程组的解
n=1;                               % 记录迭代的次数
x0=[-5;0;7];                       % 迭代初值
E=1;
while E > 1e-4                     % 如果精度不满足要求 则一直进行迭代 直到满足精度为止
    x=x0(1);                       % 给 x 赋值
    y=x0(2);                       % 给 y 赋值
    z=x0(3);                       % 给 z 赋值
    x1=x0-inv(eval(J))*eval(f);    % 迭代计算 用 x0 迭代得到 x1
    E=max(abs((x1-x0)./x1));       % 计算求解的精度
    x0=x1;                         % 将当前得到的解 x1 赋值给 x0 做为下一次迭代的值
    n=n+1;                         % 迭代次数加 1  
end

%% 显示方程组的解 并将求解结果带回方程组 验算求解结果
x=x1(1)    % x 的求解结果
y=x1(2)    % y 的求解结果
z=x1(3)    % z 的求解结果
eval(f)

%% Code by 求索哥  QQ: 2787392915  微信: mathsupp  手机: 18021503708   

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----
     文件        1379  2019-09-07 17:02  MATLAB实现牛顿迭代法求解非线性方程组\NewtonEqu.m
     文件       26508  2019-06-08 23:53  MATLAB实现牛顿迭代法求解非线性方程组\作者微信号.png
     文件      146678  2019-08-17 16:06  MATLAB实现牛顿迭代法求解非线性方程组\作者抖音号.png
     文件       91524  2019-09-06 22:56  MATLAB实现牛顿迭代法求解非线性方程组\使用牛顿迭代法求解非线性方程组.pdf
     文件       28141  2017-03-29 21:21  MATLAB实现牛顿迭代法求解非线性方程组\微信公众号.jpg
     目录           0  2019-09-11 22:36  MATLAB实现牛顿迭代法求解非线性方程组\

评论

共有 条评论