2023年6月29日发(作者:)
python⽜顿法解⾮线性⽅程组_⽜顿迭代法解⾮线性⽅程组(MATLAB版)⽜顿迭代法,⼜名切线法,这⾥不详细介绍,简单说明每⼀次⽜顿迭代的运算:⾸先将各个⽅程式在⼀个根的估计值处线性化(泰勒展开式忽略⾼阶余项),然后求解线性化后的⽅程组,最后再更新根的估计值。下⾯以求解最简单的⾮线性⼆元⽅程组为例(平⾯⼆维定位最基本原理),贴出源代码:1、新建函数fun.m,定义⽅程组function f=fun(x);%定义⾮线性⽅程组如下%变量x1 x2%函数f1 f2syms x1 x2f1 = sqrt((x1-4)^2 + x2^2)-sqrt(17);f2 = sqrt(x1^2 + (x2-4)^2)-5;f=[f1 f2];2、新建dfun.m,求出⼀阶微分⽅程function df=dfun(x);f=fun(x);df=[diff(f,'x1');diff(f,'x2')]; %雅克⽐矩阵3、建⽴newton.m,执⾏⽜顿迭代过程clear;clcformat;x0=[0 0]; % 迭代初始值eps = 0.00001; % 定位精度要求for i = 1:10f = double(subs(fun(x0),{'x1' 'x2'},{x0(1) x0(2)}));df = double(subs(dfun(x0),{'x1' 'x2'},{x0(1) x0(2)})); % 得到雅克⽐矩阵x = x0 - f/df;if(abs(x-x0) < eps)break;endx0 = x; % 更新迭代结果enddisp('定位坐标:');xdisp('迭代次数:');i结果如下:定位坐标: x = 0.0000 -1.0000 迭代次数: i = 4
发布者:admin,转转请注明出处:http://www.yc00.com/web/1687977517a62875.html
评论列表(0条)