matlab实现牛顿迭代法求解非线性方程组教学文稿

合集下载

matlab fsolve 算法

matlab fsolve 算法

matlab fsolve 算法Matlab是一种常用的科学计算软件,其中的fsolve算法是用于求解非线性方程组的一种方法。

本文将介绍fsolve算法的原理和使用方法,并通过实例展示其在实际问题中的应用。

一、fsolve算法原理fsolve算法是一种数值方法,用于求解非线性方程组。

它基于牛顿迭代法,通过不断迭代逼近方程组的解。

具体原理如下:1. 假设要求解的方程组为F(x) = 0,其中x为未知向量,F为非线性函数。

2. 首先,我们需要对方程组进行线性化,即将其转化为形如J(x)Δx = -F(x)的线性方程组,其中J(x)为方程组F(x)的雅可比矩阵,Δx为x的增量。

3. 初始时,我们给定一个初始解x0。

4. 然后,利用初始解和雅可比矩阵,通过求解线性方程组J(x0)Δx = -F(x0),得到增量Δx。

5. 将增量Δx加到初始解x0上,得到新的解x1 = x0 + Δx。

6. 重复步骤4和步骤5,直到满足终止准则,即F(x)的范数小于某个给定的容差。

二、fsolve算法使用方法在Matlab中,可以使用fsolve函数调用fsolve算法来求解非线性方程组。

其基本语法如下:x = fsolve(fun,x0,options)其中,fun为一个函数句柄,表示要求解的方程组F(x) = 0,x0为初始解向量,options为求解选项。

三、fsolve算法应用实例下面通过一个实际问题来演示fsolve算法的应用。

假设有一个非线性方程组:sin(x) + cos(y) = 1exp(x) + y = 2我们的任务是求解方程组的解。

我们需要将方程组转化为函数形式。

在Matlab中,我们可以定义一个函数文件,例如:function F = equations(x)F(1) = sin(x(1)) + cos(x(2)) - 1;F(2) = exp(x(1)) + x(2) - 2;然后,我们可以使用fsolve函数来求解方程组:x0 = [0,0]; % 初始解向量options = optimoptions('fsolve','Display','iter'); % 设置求解选项x = fsolve(@equations,x0,options); % 调用fsolve算法求解方程组我们可以将求解的结果打印出来:disp(['x = ', num2str(x(1))]);disp(['y = ', num2str(x(2))]);通过运行上述代码,我们可以得到方程组的解x = 0.7854,y = 1.2146。

牛顿迭代法解非线性方程组(MATLAB版)

牛顿迭代法解非线性方程组(MATLAB版)

⽜顿迭代法解⾮线性⽅程组(MATLAB版)⽜顿迭代法,⼜名切线法,这⾥不详细介绍,简单说明每⼀次⽜顿迭代的运算:⾸先将各个⽅程式在⼀个根的估计值处线性化(泰勒展开式忽略⾼阶余项),然后求解线性化后的⽅程组,最后再更新根的估计值。

下⾯以求解最简单的⾮线性⼆元⽅程组为例(平⾯⼆维定位最基本原理),贴出源代码:1、新建函数fun.m,定义⽅程组1 function f=fun(x);2 %定义⾮线性⽅程组如下3 %变量x1 x24 %函数f1 f25 syms x1 x26 f1 = sqrt((x1-4)^2 + x2^2)-sqrt(17);7 f2 = sqrt(x1^2 + (x2-4)^2)-5;8 f=[f1 f2];2、新建dfun.m,求出⼀阶微分⽅程1 function df=dfun(x);2 f=fun(x);3 df=[diff(f,'x1');diff(f,'x2')]; %雅克⽐矩阵3、建⽴newton.m,执⾏⽜顿迭代过程1 clear;clc2 format;3 x0=[0 0]; % 迭代初始值4 eps = 0.00001; % 定位精度要求5for i = 1:106 f = double(subs(fun(x0),{'x1''x2'},{x0(1) x0(2)}));7 df = double(subs(dfun(x0),{'x1''x2'},{x0(1) x0(2)})); % 得到雅克⽐矩阵8 x = x0 - f/df;9if(abs(x-x0) < eps)10break;11 end12 x0 = x; % 更新迭代结果13 end14 disp('定位坐标:');15 x16 disp('迭代次数:');17 i结果如下:定位坐标:x =0.0000 -1.0000迭代次数:i =4。

非线性方程组求解的牛顿迭代法用MATLAB实现

非线性方程组求解的牛顿迭代法用MATLAB实现

非线性方程组求解的牛顿迭代法用MATLAB实现首先,我们需要定义非线性方程组。

假设我们要求解方程组:```f1(x1,x2)=0f2(x1,x2)=0```其中,`x1`和`x2`是未知数,`f1`和`f2`是非线性函数。

我们可以将这个方程组表示为向量的形式:```F(x)=[f1(x1,x2);f2(x1,x2)]=[0;0]```其中,`F(x)`是一个列向量。

为了实现牛顿迭代法,我们需要计算方程组的雅可比矩阵。

雅可比矩阵是由方程组的偏导数组成的矩阵。

对于方程组中的每个函数,我们可以计算其对每个变量的偏导数,然后将这些偏导数组成一个矩阵。

在MATLAB中,我们可以使用`jacobi`函数来计算雅可比矩阵。

以下是一个示例函数的定义:```matlabfunction J = jacobi(x)x1=x(1);x2=x(2);J = [df1_dx1, df1_dx2; df2_dx1, df2_dx2];end```其中,`x`是一个包含未知数的向量,`df1_dx1`和`df1_dx2`是`f1`对`x1`和`x2`的偏导数,`df2_dx1`和`df2_dx2`是`f2`对`x1`和`x2`的偏导数。

下一步是实现牛顿迭代法。

牛顿迭代法的迭代公式为:```x(k+1)=x(k)-J(x(k))\F(x(k))```其中,`x(k)`是第`k`次迭代的近似解,`\`表示矩阵的求逆操作。

在MATLAB中,我们可以使用如下代码来实现牛顿迭代法:```matlabfunction x = newton_method(x_initial)max_iter = 100; % 最大迭代次数tol = 1e-6; % 收敛阈值x = x_initial; % 初始解for k = 1:max_iterF=[f1(x(1),x(2));f2(x(1),x(2))];%计算F(x)J = jacobi(x); % 计算雅可比矩阵 J(x)delta_x = J \ -F; % 计算增量 delta_xx = x + delta_x; % 更新 xif norm(delta_x) < tolbreak; % 达到收敛条件,停止迭代endendend```其中,`x_initial`是初始解的向量,`max_iter`是最大迭代次数,`tol`是收敛阈值。

数值分析 第二章 基于MATLAB的科学计算—非线性方程(组)

数值分析 第二章 基于MATLAB的科学计算—非线性方程(组)

科学计算—理论、方法及其基于MATLAB 的实现与分析解非线性方程(组)(一)直接法二分法:设方程()0=x f 在区间[]b a ,上有唯一解,并且()()0<b f a f ,如方程()f x x x x x =-++=3223030.sin .(1)首先要确定适当的包含根的区间,这可以依据闭区间上连续函数的介值定理来确定,例如,()f 1110=-+<sin ,()f 222090=->sin .,所以方程 (1)至少有一个实根属于区间[]12,,图1表明区间[]12,中只含有一个根,显然方程 (1)的根不易直接求得。

在区间[-1,0]、[0,1]和[1,2]的情形,如下图1所示 例1 plotNL_fun01.mplotNL_fun01clearx=-1:0.05:2;f=x.^3-2.3*x.^2+x.*sin(x)+0.3; plot(x,f,'r',x,0*x,'k')title('The Image of f(x)=x^3-2.3*x^2+x*sin(x)+0.3') xlabel('\fontsize {12} \fontname {宋体} 图1') axis square二分法的求根过程:用*x 表示方程()0=x f 在区间[]b a ,上的根,对于给定的精度要求0>ε,取区间[]b a ,的中点21ba x +=,并按下式进行判断: ()()()()()⎪⎩⎪⎨⎧∈⇒<∈⇒<=⇒=],[0],[001*11*1*11b x x b f x f x a x a f x f x x x f (2) 以()()01<a f x f 为例,如果ε≤-2ab ,那么区间[]1,x a 内的任何一点都可以作为方程()0=x f 的近似根。

二分法适用于一个方程的场合,收敛速度是线性的,二分次数的估计:()b aN b a N-≤⇒≥--22εεln ln ln (3) 2、黄金分割法:在区间[]b a ,内取对称的两点:()()()⎩⎨⎧-+=--+=a b a x a b a x ββ211 (4) 使得()()()()()618.025125101102221≈+-=−−→−±-=⇒=-+⇒--=--=--=--->ββββββββa b a b ab a x a x a x a b a b按这种方法选取点1x 和2x ,每次去掉的区间长度至少是原区间长度的0.618倍,()()()()()()()()⎪⎪⎩⎪⎪⎨⎧∉∈⇒<⋃∉∈⇒<∉∈⇒<=⇒==⇒=],[],[0],[],[],[0],[],[0002*2*221*21*211*1*1*22*11x a x b x x b f x f b x x a x x x x x f x f b x x x a x a f x f x x x f x x x f (5) 适用于一个方程的场合,收敛速度是线性的,迭代次数的估计:()()215lnln ln 215--->⇔<⎪⎪⎭⎫ ⎝⎛--a b N a b Nεε (6) (二)迭代法首先将方程(组)写成等价的迭代形式:()()0f x x x ϕ=⇔= (7)由此确定了相应的迭代法:()[]10,n n x x x a b ϕ+=⎧⎪⎨∀∈⎪⎩ (8)迭代收敛的图像解释对于非线性方程(组)的迭代法来说,同样面临收敛性问题,为说明收敛性条件,先看下面的例子:例2:让我们来求如下方程的根()f x x x x x =-++=3223030.sin .下面,我们采用迭代法求方程 (1)位于区间]01[,-中的根,为此构造迭代算法如下:()()x x xx g x -+==3.2sin 3.0 (9)()()x g x x x x n n nn n +==+-10323.sin ., n =12,, (10)在区间]01[,-中任取一个迭代初值x 0,如取初值8.00-=x .执行下面的程序:EqutIteration.m:open EqutIteration.m EqutIterationN =29下面欲求1.5附近的根,为此分别取初值4.10=x ,9.10=x ,迭代的结果如下:open Ex_IteraConv01 Ex_IteraConv01N = 31收敛性定理:(收敛的充分性条件)设方程()f x =0在[]a b ,上存在唯一解,()x g x =是方程的等价形式,如果1、()g x 在[]a b ,上连续可微; 2、对任何x a b ∈[],,()g x a b ∈[],; 3、()'≤<g x L 1,则对任何x a b 0∈[],,由迭代算法()x g x n n +=1, (11)生成的序列{}x n 收敛于方程()f x =0在[]a b ,上的唯一解。

matlab实验一:非线性方程求解-牛顿法

matlab实验一:非线性方程求解-牛顿法

实验一:非线性方程求解程序1:二分法:syms f x;f=input('请输入f(x)=');A=input('请输入根的估计范围[a,b]='); e=input('请输入根的误差限e='); while (A(2)-A(1))>ec=(A(1)+A(2))/2;x=A(1);f1=eval(f);x=c;f2=eval(f);if (f1*f2)>0A(1)=c;elseA(2)=c;endendc=(A(1)+A(2))/2;fprintf('c=%.6f\na=%.6f\nb=%.6f\n',c,A)用二分法计算方程:1.请输入f(x)=sin(x)-x^2/2请输入根的估计范围[a,b]=[1,2]请输入根的误差限e=0.5e-005c=1.404413a=1.404411b=1.4044152.请输入f(x)=x^3-x-1请输入根的估计范围[a,b]=[1,1.5]请输入根的误差限e=0.5e-005c=1.324717a=1.324715b=1.324718程序2:newton法:syms f x;f=input('请输入f(x)=');df=diff(f); x0=input('请输入迭代初值x0=');e1=input('请输入奇异判断e1=');e2=input('请输入根的误差限e2=');N=input('请输入迭代次数限N=');k=1;while (k<N)x=x0;if abs(eval(f))<e1fprintf('奇异!\nx=%.6f\n迭代次数为:%d\n',x0,k)breakelsex1=x0-eval(f)/eval(df);if abs(x1-x0)<e2fprintf('x=%.6f\n迭代次数为:%d\n',x1,k)breakelsex0=x1;k=k+1;endendendif k>=Nfprintf('失败\n')end用newton法计算方程:1.请输入f(x)=x*exp(x)-1请输入迭代初值x0=0.5请输入奇异判断e1=0.1e-010请输入根的误差限e2=0.5e-005请输入迭代次数限N=10x=0.567143迭代次数为:42.请输入f(x)=x^3-x-1请输入迭代初值x0=1请输入奇异判断e1=0.1e-010请输入根的误差限e2=0.5e-005请输入迭代次数限N=10x=1.324718迭代次数为:53.1:请输入f(x)=(x-1)^2*(2*x-1)请输入迭代初值x0=0.45请输入奇异判断e1=0.1e-010请输入根的误差限e2=0.5e-005请输入迭代次数限N=10x=0.500000迭代次数为:43.2:请输入f(x)=(x-1)^2*(2*x-1)请输入迭代初值x0=0.65请输入奇异判断e1=0.1e-010请输入根的误差限e2=0.5e-005请输入迭代次数限N=10x=0.500000迭代次数为:93.3:请输入f(x)=(x-1)^2*(2*x-1)请输入迭代初值x0=0.55请输入奇异判断e1=0.1e-010请输入根的误差限e2=0.5e-005请输入迭代次数限N=10x=0.500000迭代次数为:4程序3:改进的newton法:syms f x;f=input('请输入f(x)=');df=diff(f);x0=input('请输入迭代初值x0=');e1=input('请输入奇异判断e1=');e2=input('请输入根的误差限e2=');N=input('请输入迭代次数限N=');k=1;while (k<N)x=x0;if abs(eval(f))<e1fprintf('奇异!\nx=%.6f\n迭代次数为:%d\n',x0,k)breakelsex1=x0-2*eval(f)/eval(df);if abs(x1-x0)<e2fprintf('x=%.6f\n迭代次数为:%d\n',x1,k)breakelsex0=x1;k=k+1;endendendif k>=Nfprintf('失败\n')end用改进的newton法计算方程:1.请输入f(x)=(x-1)^2*(2*x-1)请输入迭代初值x0=0.55请输入奇异判断e1=0.1e-010请输入根的误差限e2=0.5e-005请输入迭代次数限N=10失败2.请输入f(x)=(x-1)^2*(2*x-1)请输入迭代初值x0=0.55请输入奇异判断e1=0.1e-010请输入根的误差限e2=0.5e-005请输入迭代次数限N=20失败3.请输入f(x)=(x-1)^2*(2*x-1)请输入迭代初值x0=0.55请输入奇异判断e1=0.1e-010请输入根的误差限e2=0.5e-005请输入迭代次数限N=100失败。

matlab程序设计实践-牛顿法解非线性方程

matlab程序设计实践-牛顿法解非线性方程

中南大学MATLAB程序设计实践学长有爱奉献,下载填上信息即可上交,没有下载券的自行百度。

所需m文件照本文档做即可,即新建(FILE)→脚本(NEW-Sscript)→复制本文档代码→运行(会跳出保存界面,文件名默认不要修改,保存)→结果。

第一题需要把数据文本文档和m文件放在一起。

全部测试无误,放心使用。

本文档针对做牛顿法求非线性函数题目的同学,当然第一题都一样,所有人都可以用。

←记得删掉这段话班级:学号:姓名:一、《MATLAB程序设计实践》Matlab基础表示多晶体材料织构的三维取向分布函数(f=f(φ1,φ,φ2))是一个非常复杂的函数,难以精确的用解析函数表达,通常采用离散空间函数值来表示取向分布函数,是三维取向分布函数的一个实例。

由于数据量非常大,不便于分析,需要借助图形来分析。

请你编写一个matlab程序画出如下的几种图形来分析其取向分布特征:(1)用Slice函数给出其整体分布特征;"~(2)用pcolor或contour函数分别给出(φ2=0, 5, 10, 15, 20, 25, 30, 35 … 90)切面上f分布情况(需要用到subplot函数);(3) 用plot函数给出沿α取向线(φ1=0~90,φ=45,φ2=0)的f分布情况。

(备注:数据格式说明解:(1)((2)将文件内的数据按照要求读取到矩阵f(phi1,phi,phi2)中,代码如下:fid=fopen('');for i=1:18tline=fgetl(fid);endphi1=1;phi=1;phi2=1;line=0; f=zeros(19,19,19);[while ~feof(fid)tline=fgetl(fid);data=str2num(tline);line=line+1;数据说明部分,与作图无关此方向表示f随着φ1从0,5,10,15,20 …到90的变化而变化此方向表示f随着φ从0,5,10,15, 20 …到90的变化而变化表示以下数据为φ2=0的数据,即f(φ1,φ,0)if mod(line,20)==1phi2=(data/5)+1;phi=1;else~for phi1=1:19f(phi1,phi,phi2)=data(phi1);endphi=phi+1;endendfclose(fid);。

牛顿法解非线性方程(MATLAB和C++)

牛顿法解非线性方程(MATLAB和C++)

41 end
42 time = toc;
43
44 fprintf('\nIterated times is %g.\n', times);
45 fprintf('Elapsed time is %g seconds.\n', time);
46
47 root = x_iter;
48
49 % subfunction
5
6 // 功能描述:求解非线性方程根,并输出最终解 7 // 迭代式:x(k+1) = x(k) - f(x(k))/df(x(k)). 8 // 使用:修改标出的“修改”部分即可自定义参数
9
10 // 输入:函数 fun,函数导数 dfun,初值 x0,
4
11 // 最大迭代次数 maxiter,停止精度 tol 12 // 输出:迭代数值解 x_iter2
2
Listing 1: MATLAB EXAMPLE 1 % 2013/11/20 15:14:38
2
3 f = @(x)x^2 − 2; 4 df = @(x)2*x; 5 x0 = 3; 6 root = newton(f, df, x0);
C++ 以 C++ 实现的方法并未编写成为一般可调用的方法,而作为一个独立的 文件(包含一个实例),修改部分即可求解对应的方程。具体参照 cpp 文件内 注释。
A 附录
A.1 MATLAB
Listing 2: MATLAB CODE 1 function root = newton(f, df, x0, maxiter, tol) 2 %NEWTON Newton's method for nonlinear equations. 3% 4 % NEWTON's method: x(k+1) = x(k) - f(x(k))/f'(x(k)). 5% 6 % Inputs 7 % f - nonlinear equation. 8 % df - derivative of f(x). 9 % x0 - initial value. 10 % maxiter - maximum iterated times. 11 % tol - precision. 12 % 13 % Outputs 14 % root - root of f(x) = 0.

非线性方程组求解及matlab实现讲解

非线性方程组求解及matlab实现讲解

x0
X
例:牛顿法计算x^2-25=0的解
f(x)=x2-25,则f’(x)=2x 可构造迭代公式如下:
xi2 25 xi 1 xi 2 xi
取x0=2代入上式,得x1=7.25,继续递推, 依次得5.35、5.0114、5.000001、5.0000000001 …
牛顿法注意事项

逐步扫描法计算示例-方程x2-2=0的正数解
计算方程 x 2 2 0 的正数解
二分法

若函数f(x)在区间[a,b]内单调连续,且f(a)f(b)<0, 则在闭区间[a,b]内必然存在方程f(x)=0的根x*
二分法的图形解释 二分法的MATLAB程序
k=0; while abs(b-a)>eps x=(a+b)/2; if sign(f(x))==sign(f(b)) b=x; else a=x; end k=k+1; end


f '( x) 0, f "( x) 连续且不变号,则只 在有根区间[a,b]上, 要选取的初始近似根x0满足 f ( x0 ) f "( x0 ) 0 ,切线法 必定收敛。 在单根附近,牛顿公式恒收敛,而且收敛速度很快。 但是需要注意如果初始值不在根的附近,牛顿公式 不一定收敛 在实际使用中,牛顿法最好与逐步扫描法结合起来, 先通过逐步扫描法求出根的近似值,然后用牛顿公 式求其精确值,以发挥牛顿法收敛速度快的优点
c x
不动点迭代法

从给定的初值x0,按上式可以得到一个数列: { x0, x1, x2, …, xk, … }
如果这个数列有极限,则迭代格式是收敛的。 * x xk 就是方程的根 这时数列{xk}的极限 lim k 上述求非线性代数方程式数值解的方法称为直 接迭代法(或称为不动点迭代法)。这个方法 虽然简单,但根本问题在于当k->∞时,xk是否 收敛于x*,也就是必须找出收敛的充分条件

牛顿法解方程组matlab

牛顿法解方程组matlab

牛顿法解方程组matlab
牛顿法是一种可以求解方程组的迭代算法。

特别适用于求解非线性系统方程,它的思想是利用抛物线的顶点的构造方程的特性来解决多元函数的极值问题。

在Matlab中,我们可以使用其牛顿法解决方程组问题。

牛顿法的算法思想是根据函数的极值点更新解的方向,以此来找到方程的解,主要步骤如下:
1. 首先,输入要求解的方程组;
2. 然后,使用命令"fzero"构造牛顿法求解器;
3. 随后,使用命令"fsolve"求解方程,输出求解结果;
4. 最后,使用控制台显示求解结果,可以得到我们要求的方程组解。

使用Matlab牛顿法来求解方程组,由于Matlab提供的求解函数算法速度快且求解精度高,加之方便的调节控制,使得它在多元函数迭代求不等式约束系统的解的过程中,能够快速有效地完成任务,节省时间,可以得到较好的效果,从而更好地解决复杂的方程组问题。

由此可以看出,Matlab中使用牛顿法解决方程组是一个非常有用的工具,对求解复杂的方程组来说,它能大大降低计算的难度,提高求解的效率,可以为工程的快速发展做出重要的贡献。

用matlab对非线性方程求解

用matlab对非线性方程求解

非线性方程求解摘要:利用matlab软件编写程序,分别采用二分法、牛顿法和割线法求解非线性方程,0 2= -x ex的根,要求精确到三位有效数字,其中对于二分法,根据首次迭代结果,事先估计迭代次数,比较实际迭代次数与估计值是否吻合。

并将求出的迭代序列用表格表示。

对于牛顿法和割线法,至少取3组不同的初值,比较各自迭代次数。

将每次迭代计算值求出,并列于表中。

关键词:matlab、二分法、牛顿法、割线法。

引言:现实数学物理问题中,很多可以看成是解方程的问题,即f(x)=0的问题,但是除了极少简单方程的根可以简单解析出来。

大多数能表示成解析式的,大多数不便于计算,所以就涉及到算法的问题,算法里面,具体求根时,一般先寻求根的某一个初始近似值,然后再将初始近似值逐步加工成满足精度要求为止,但是,我们知道,人为计算大大的加重了我们的工作量,所以大多用计算机编程,这里有很多可以计算的软件,例如matlab等等。

正文:一、二分法1 二分法原理:对于在区间[,]上连续不断且满足·<0的函数,通过不断地把函数的零点所在的区间一分为二,使区间的两个端点逐步逼近零点,进而得到零点近似值的方法叫做二分法。

2 二分法求根步骤:(1)确定区间,,验证·<0,给定精确度;(2)求区间,的中点;(3)计算。

若=,则就是函数的零点;若·<0,则令=;若·<0,则令=。

(4)判断是否达到精确度;即若<,则得到零点近似值(或);否则重复步骤2-4.3 二分法具体内容:精度要求为5e-6,,解得实际迭代次数与估计值基本吻合,迭代如下表。

n=2 c=0.000000 fc=-1.000000 n=11 c=-0.705078 fc=0.003065 n=3 c=-0.500000 fc=-0.356531 n=12 c=-0.704102 fc=0.001206 n=4 c=-0.750000 fc=0.090133 n=13 c=-0.703613 fc=0.000277 n=5 c=-0.625000 fc=-0.144636 n=14 c=-0.703369 fc=-0.000187 n=6 c=-0.687500 fc=-0.030175 n=15 c=-0.703491 fc=0.000045 n=7 c=-0.718750 fc=0.029240 n=16 c=-0.703430 fc=-0.000071 n=8 c=-0.703125 fc=-0.000651 n=17 c=-0.703461 fc=-0.000013 n=9 c=-0.710938 fc=0.014249 n=18 c=-0.703476 fc=0.000016n=10 c=-0.707031 fc=0.006787 n=19 c=-0.703468 fc=0.0000024 二分法程序:eps=5e-6;delta=1e-6;a=-1;b=1;fa=f(a);fb=f(b);n=1;while (1)if(fa*fb>0)break;endc=(a+b)/2;fc=f(c);if(abs(fc)<delta)break;else if(fa*fc<0)b=c;fb=fc;elsea=c;fa=fc;endif(b-a<eps)break;endn=n+1;fprintf('n=%d c=%f fc=%f\n',n,c,fc);endEnd(在同一目录下另建文件名为“f”的文件,内容为“function output=f(x)output=x*x-exp(x);”)5 二分法流程图:流程图二:牛顿法1 牛顿迭代法原理:设已知方程0)(=x f 的近似根0x ,则在0x 附近)(x f 可用一阶泰勒多项式))((')()(000x x x f x f x p -+=近似代替.因此, 方程0)(=x f 可近似地表示为0)(=x p .用1x 表示0)(=x p 的根,它与0)(=x f 的根差异不大.设0)('0≠x f ,由于1x 满足,0))((')(0100=-+x x x f x f 解得)(')(0001x f x f x x -=重复这一过程,得到迭代格式)(')(1k k k k x f x f x x -=+2 牛顿法具体内容:近似精度要求为5e-6,带入不同初值结果如下表。

牛顿法求解非线性方程组matlab源程序

牛顿法求解非线性方程组matlab源程序

牛顿法求解非线性方程组matlab源程序Newton-Raphson 求解非线性方程组matlab源程序matlab程序如下:function hom[P,iter,err]=newton('f','JF',[7.8e-001;4.9e-001; 3.7e-001],0.01,0.001,1000); disp(P);disp(iter);disp(err);function Y=f(x,y,z)Y=[x^2+y^2+z^2-1;2*x^2+y^2-4*z;3*x^2-4*y+z^2];function y=JF(x,y,z)f1='x^2+y^2+z^2-1';f2='2*x^2+y^2-4*z';f3='3*x^2-4*y+z^2';df1x=diff(sym(f1),'x');df1y=diff(sym(f1),'y');df1z=diff(sym(f1),'z');df2x=diff(sym(f2),'x');df2y=diff(sym(f2),'y');df2z=diff(sym(f2),'z');df3x=diff(sym(f3),'x');df3y=diff(sym(f3),'y');df3z=diff(sym(f3),'z');j=[df1x,df1y,df1z;df2x,df2y,df2z;df3x,df3y,df3z];y=(j);function [P,iter,err]=newton(F,JF,P,tolp,tolfp,max)%输入P为初始猜测值,输出P则为近似解%JF为相应的Jacobian矩阵%tolp为P的允许误差%tolfp为f(P)的允许误差%max:循环次数Y=f(F,P(1),P(2),P(3));for k=1:maxJ=f(JF,P(1),P(2),P(3));Q=P-inv(J)*Y;Z=f(F,Q(1),Q(2),Q(3));err=norm(Q-P);P=Q;Y=Z;iter=k;if (err<tolp)||(abs(Y)<tolfp||abs(Y)<0.0001)breakendend<pre lang="matlab" line="1" file="test.m">function homework4[P,iter,err]=newton('f','JF',[7.8e-001;4.9e-001; 3.7e-001],0.01,0.001,1000); disp(P);disp(iter);disp(err);function Y=f(x,y,z)Y=[x^2+y^2+z^2-1;2*x^2+y^2-4*z;3*x^2-4*y+z^2];function y=JF(x,y,z)f1='x^2+y^2+z^2-1';f2='2*x^2+y^2-4*z';f3='3*x^2-4*y+z^2';df1x=diff(sym(f1),'x');df1y=diff(sym(f1),'y');df1z=diff(sym(f1),'z');df2x=diff(sym(f2),'x');df2y=diff(sym(f2),'y');df2z=diff(sym(f2),'z');df3x=diff(sym(f3),'x');df3y=diff(sym(f3),'y');df3z=diff(sym(f3),'z');j=[df1x,df1y,df1z;df2x,df2y,df2z;df3x,df3y,df3z];y=(j);function [P,iter,err]=newton(F,JF,P,tolp,tolfp,max)%输入P为初始猜测值,输出P则为近似解%JF为相应的Jacobian矩阵%tolp为P的允许误差%tolfp为f(P)的允许误差%max:循环次数Y=f(F,P(1),P(2),P(3));for k=1:maxJ=f(JF,P(1),P(2),P(3));Q=P-inv(J)*Y;Z=f(F,Q(1),Q(2),Q(3));err=norm(Q-P);P=Q;Y=Z;iter=k;if (err<tolp)||(abs(Y)<tolfp||abs(Y)<0.0001)breakend。

非线性方程组求解及matlab实现讲解

非线性方程组求解及matlab实现讲解

牛顿迭代法收敛速度快,但它要求计算函数导数的值
弦截法


牛顿迭代法收敛速度快,但它要求计算函数导数的值。 在科学与工程计算中,常会碰到函数导数不易计算或 者算式复杂而不便计算的情况 弦截法的基本思想与牛顿法相似,即将非线性函数线 性化后求解。两者的差别在于弦截法实现函数线性化 的手段采用的是两点间的弦线(用差商代替导数), 而不是某点的切线
f xk xk 1 xk xk xk 1 f xk f xk 1
弦截法示意图
弦截法注意事项


与牛顿法只需给出一个初值不同,弦截法需要给出两 个迭代初值。如果与逐步扫描法结合起来,则最后搜 索的区间的两个端点值常可作为初值 弦截法虽比牛顿法收敛速度稍慢,但在每次迭代中只 需计算一次函数值,又不必求函数的导数,且对初值 要求不甚苛刻,是工程计算中常用的有效计算方法之 一



不动点迭代 牛顿法 弦截法 抛物线法 威格斯坦法(Wegstein)
不动点迭代法
我们可以通过多种方法将方程式
f x 0
例如方程
转化为
x g x
c0
x c 0,
2
可以转化为以下不同形式
2 x x xc (1)
(2)
x
x2 c 1 c x (3) x x 2x 2 x
松弛迭代法

有些非线性方程用前面的不动点迭代法求解时, 迭代过程是发散的。这时可以引入松弛因子, 利用松弛迭代法。通过选择合适的松弛因子, 就可以使迭代过程收敛
xn1 xn xn xn
迭代法是计算数学的一种重要方法,用途很广,求解 线性方程组和矩阵特征值时也要用到这种方法

matlab实现牛顿迭代法求解非线性方程组-5页 文字版

matlab实现牛顿迭代法求解非线性方程组-5页 文字版

编制:数学建模QQ群 694176364matlab实现牛顿迭代法求解非线性方程组已知非线性方程组如下3*x1-cos(x2*x3)-1/2=0x1^2-81*(x2+0.1)^2+sin(x3)+1.06=0exp(-x1*x2)+20*x3+(10*pi-3)/3=0求解要求精度达到0.00001————————————————————————————————首先建立函数fun储存方程组编程如下将fun.m保存到工作路径中:function f=fun(x);%定义非线性方程组如下%变量x1 x2 x3%函数f1 f2 f3syms x1 x2 x3f1=3*x1-cos(x2*x3)-1/2;f2=x1^2-81*(x2+0.1)^2+sin(x3)+1.06;f3=exp(-x1*x2)+20*x3+(10*pi-3)/3;f=[f1 f2 f3];————————————————————————————————建立函数dfun用来求方程组的雅克比矩阵将dfun.m保存到工作路径中:function df=dfun(x);%用来求解方程组的雅克比矩阵储存在dfun中f=fun(x);df=[diff(f,'x1');diff(f,'x2');diff(f,'x3')];df=conj(df');————————————————————————————————编程牛顿法求解非线性方程组将newton.m保存到工作路径中:function x=newton(x0,eps,N);con=0;%其中x0为迭代初值eps为精度要求N为最大迭代步数con用来记录结果是否收敛for i=1:N;f=subs(fun(x0),{'x1' 'x2' 'x3'},{x0(1) x0(2) x0(3)});df=subs(dfun(x0),{'x1' 'x2' 'x3'},{x0(1) x0(2) x0(3)});x=x0-f/df;for j=1:length(x0);endif norm(x-x0)<epscon=1;break;endx0=x;end%以下是将迭代过程写入txt文档文件名为iteration.txt fid=fopen('iteration.txt','w');fprintf(fid,'iteration');for j=1:length(x0)fprintf(fid,' x%d',j);endfor j=1:ifprintf(fid,'\n%6d ',j);for k=1:length(x0)fprintf(fid,' %10.6f',il(j,k));endendfprintf(fid,'\n计算结果收敛!');endif con==0fprintf(fid,'\n迭代步数过多可能不收敛!');endfclose(fid);————————————————————————————————运行程序在matlab中输入以下内容newton([0.1 0.1 -0.1],0.00001,20)————————————————————————————————输出结果ans =0.5000 0.0000 -0.5236———————————————————————————————————————————————在iteration中查看迭代过程iteration x1 x2 x31 0.490718 0.031238 -0.5196612 0.509011 0.003498 -0.5216343 0.500928 0.000756 -0.5233914 0.500227 0.000076 -0.5235505 0.500019 0.000018 -0.5235946 0.500005 0.000002 -0.5235987 0.500000 0.000000 -0.523599计算结果收敛!编制:数学建模QQ群 694176364。

matlab非线性方程的解法(含牛拉解法)

matlab非线性方程的解法(含牛拉解法)

非线性方程的解法(含牛拉解法)1引 言数学物理中的许多问题归结为解函数方程的问题,即,0)(=x f (1.1) 这里,)(x f 可以是代数多项式,也可以是超越函数。

若有数*x 为方程0)(=x f 的根,或称函数)(x f 的零点。

设函数)(x f 在],[b a 内连续,且0)()(<b f a f 。

根据连续函数的性质知道,方程0)(=x f 在区间],[b a 内至少有一个实根;我们又知道,方程0)(=x f 的根,除了极少简单方程的根可以用解析式表达外,一般方程的根很难用一个式子表达。

即使能表示成解析式的,往往也很复杂,不便计算。

所以,具体求根时,一般先寻求根的某一个初始近似值,然后再将初始近似值逐步加工成满足精度要求为止。

如何寻求根的初始值呢?简单述之,为了明确起见,不妨设)(x f 在区间],[b a 内有一个实的单根,且0)(,0)(><b f a f 。

我们从左端出点a x =0出发,按某一预定的步长h 一步一步地向右跨,每跨一步进行一次根的“搜索”,即检查每一步的起点k x 和1+k x (即,h x k +)的函数值是否同号。

若有:0)(*)(≤+h x f x f k k (1.2) 那么所求的根必在),(h x x k k +内,这时可取k x 或h x k +作为根的初始近似值。

这种方法通常称为“定步长搜索法”。

另外,还是图解法、近似方程法和解析法。

2 迭代法2.1 迭代法的一般概念迭代法是数值计算中一类典型方法,不仅用于方程求根,而且用于方程组求解,矩阵求特征值等方面。

迭代法的基本思想是一种逐次逼近的方法。

首先取一个精糙的近似值,然后用同一个递推公式,反复校正这个初值,直到满足预先给定的精度要求为止。

对于迭代法,一般需要讨论的基本问题是:迭代法的构造、迭代序列的收敛性天收敛速度以及误差估计。

这里,主要看看解方程迭代式的构造。

对方程(1.1),在区间],[b a 内,可改写成为:)(x x ϕ= (2.1) 取],[0b a x ∈,用递推公式:)(1k k x x ϕ=+, ,2,1,0=k (2.2) 可得到序列:∞==0210}{,,,,k k k x x x x x (2.3)当∞→k 时,序列∞=0}{k k x 有极限x ~,且)(x ϕ在x ~附近连续,则在式(2.2)两边极限,得, )~(~x x ϕ= 即,x ~为方程(2.1)的根。

牛顿迭代法-matlab程序(解线性方程组)

牛顿迭代法-matlab程序(解线性方程组)

牛顿迭代法matlab程序(解线性方程组)作者:佚名来源:转载发布时间:2009-3-7 16:55:53减小字体增大字体1.功能本程序采用牛顿法,求实系数高次代数方程f(x)=a0x n+a1x n-1+…+a n-1x+a n=0(a n≠0)(1)的在初始值x0附近的一个根。

2.使用说明(1)函数语句Y=NEWTON_1(A,N,X0,NN,EPS1)调用M文件newton_1.m。

(2)参数说明A n+1元素的一维实数组,输入参数,按升幂存放方程系数。

N 整变量,输入参数,方程阶数。

X0 实变量,输入参数,初始迭代值。

NN 整变量,输入参数,允许的最大迭代次数。

EPS1 实变量,输入参数,控制根的精度。

3.方法简介解非线性方程f(x)=0的牛顿法是把非线性方程线性化的一种近似方法。

把f(x)在x0点附近展开成泰勒级数f(x)=f(x0)+(x-x0)fˊ(x0)+(x-x0)2 +…取其线性部分,作为非线性方程f(x)=0的近似方程,则有f(x0)+fˊ(x0)(x-x0)=0设fˊ(x0)≠0则其解为x1=x0-f(x0)/fˊ(x0)再把f(x)在x1附近展开成泰勒级数,也取其线性部分作f(x)=0的近似方程。

若f(x1)≠0,则得x2=x1-f(x1)/fˊ(x1)这样,得到牛顿法的一个迭代序列x n+1=x n-f(x n)/fˊ(x n)4.newton_1.m程序function y=newton_1(a,n,x0,nn,eps1)x(1)=x0;b=1;i=1;while(abs(b)>eps1*x(i))i=i+1;x(i)=x(i-1)-n_f(a,n,x(i-1))/n_df(a,n,x(i-1));b=x(i)-x(i-1);if(i>nn)error(ˊnn is fullˊ);return;endendy=x(i);i程序中调用的n_f.m和n_df.m文件如下:function y=n_df(a,n,x)%方程一阶导数的函数y=0.0;for i=1:ny=y+a(i)*(n+1-i)*x^(n-i);endfunction y=n_df(a,n,x)y=0.0;for i=1:ny=y+a(i)*(n+1-i)*xˆ(n-i);end5.程序附注(1)程序中调用n_f.m和n_df.m文件。

非线性方程(组)求解

非线性方程(组)求解

1.用matlab软件求方程的解
Matlab软件求方程f(x)=0近似解的命令是fzero,具体用法为: (1)建立函数:f=inline(‘表达式’)
(2)求函数零点:c=fzero(f,[a,b]) %求函数在区间内的零点 c=fzero(f,x0) %求函数f在x0附近的零点
an x a1 x a0 0
当前,运用混沌学来解决的实际问题主要有三类: 第一,实现高性能的神经计算机。人脑是按照能产生混沌现 的构造来形成自己的神经网络,从而呢处理复杂的信息. 第二,分析和预报自然现象和经济现象,例如地震预报、 经济发展预报等。 第三,提高大规模工程系统的可靠性。尽管目前利用混沌 理论进行长期预报误差还太大,但用于短期预报则 有相当的效果。
4.一般迭代法
设方程 f x 0 有实根,若能将方程等价地转化为 x g x ,
x1 g x0 , x2 g x1 ,

, xk 1 g xk ,
k 0,1, 2,
得到一个序列
xk k 1 ,称为由迭代函数g(x)产生的迭代序列.
2.用matlab求方程组的解
Matlab软件求上述非线性方程组的数值解命令是: [x,fval]=fsolve(fun,x0)
2 sin x1 x2 x3 e x1 4 0 的近似解. 示例3 求方程组 x1 x2 x3 0 x x x 0 1 2 3
x0称为迭代初始值. 若该迭代序列收敛,则它的 极限就是方程f(x)=0的一个根.
xk称为方程根的k次近似值.使 得迭代法收敛的初始值的取 值范围为迭代收敛域.
示例5 求方程 x x 3 0 的近似解.
2

MATLAB计算方法迭代法牛顿法二分法实验报告

MATLAB计算方法迭代法牛顿法二分法实验报告

MATLAB计算方法迭代法牛顿法二分法实验报告实验目的:本实验旨在通过MATLAB编程实现迭代法、牛顿法和二分法,并通过实例验证其准确性和收敛速度。

实验原理:迭代法是一种通过不断迭代逼近根的方法,其基本原理是选择一个初始值,然后通过迭代公式不断逼近根的值,直到满足给定的精度要求。

牛顿法是一种通过不断迭代求函数的零点的方法,其基本原理是通过当前点的切线与x轴的交点来逼近根的值,直到满足给定的精度要求。

二分法是一种通过不断将区间一分为二来逼近根的方法,其基本原理是通过判断根是否落在区间的两个端点之间,然后将区间一分为二,直到满足给定的精度要求。

实验步骤:1.编写迭代法的MATLAB代码,实现对给定函数的根的逼近。

2.编写牛顿法的MATLAB代码,实现对给定函数的根的逼近。

3.编写二分法的MATLAB代码,实现对给定函数的根的逼近。

4.针对不同的函数,分别使用迭代法、牛顿法和二分法进行根的逼近,并记录每种方法的迭代次数和逼近结果。

5.对比三种方法的迭代次数和逼近结果,分析其准确性和收敛速度。

实验结果:以求解方程x^3-2x-5=0为例,使用迭代法、牛顿法和二分法进行根的逼近。

迭代法:迭代公式:x(n+1)=(2x(n)+5)^(1/3)初始值:x(0)=2迭代次数:6逼近结果:2.0946牛顿法:初始值:x(0)=2迭代次数:4逼近结果:2.0946二分法:初始区间:[1,3]迭代次数:11逼近结果:2.0946实验结论:通过对比三种方法的迭代次数和逼近结果可以发现,迭代法和牛顿法的收敛速度都要快于二分法,并且迭代法和牛顿法的逼近结果也更为接近真实根。

这是因为迭代法和牛顿法都是通过不断逼近根的值来求解,而二分法则是通过将区间一分为二来逼近根的值,所以迭代法和牛顿法的收敛速度更快。

总结:本实验通过MATLAB编程实现了迭代法、牛顿法和二分法,并通过实例验证了它们的准确性和收敛速度。

实验结果表明,迭代法和牛顿法在求解根的过程中具有更快的收敛速度和更接近真实根的逼近结果,而二分法的收敛速度较慢。

二分法、牛顿法、割线法、Steffencen法求非线性方程MATLAB实现

二分法、牛顿法、割线法、Steffencen法求非线性方程MATLAB实现
x0=a; else
x0=b; end m=min(abs(df(a)),abs(df(b))); k=0; while abs(f(x0))>m*dlt
k=k+1; x1=x0-f(x0)/df(x0); x0=x1; fprintf('k=%d x=%.5f\n',k,x0); end
三、实验结果
%加速公式 gen=x1-(y-x1)^2/(z-2*y+x1); wucha=abs(gen-x1); time=time+1; %迭代加一次的记录 end end; %计算结果
四、结果分析
由实验结果分析可知,Steffensen 迭代算法的收敛速度在一定条件下可以 达到二次收敛,相对割线法和二分法收敛速度较快,且其在一定程度上避免了两 个值很近时造成的误差,也对牛顿法要求函数导数值这一缺点进行了克服,整体 上比较来说是一个计算量较小且有较高精度的迭代算法。
二、算法描述
MATLAB 程序代码如下: function [gen,time]=Steff(fun,x0,tol) %如果缺省误差参数,默认为 10 的-5 次方 if(nargin==2) tol=1.0e-5; end %设置误差初值 time=0; %记迭代次数 wucha=0.1; %设置前后两次迭代的误差 gen=x0; while(wucha>tol) x1=gen; y=subs(fun,x1)+x1; z=subs(fun,y)+y;
(b1

a1 )
;对[a2 ,b2 ] 重复上述做法得:
1
[a1, b1] ⊃ [a2 , b2 ] ⊃ ...... ⊃ [an , bn ] ⊃ ...... 且 bn − an
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

matlab实现牛顿迭代法求解非线性方程组
已知非线性方程组如下
3*x1-cos(x2*x3)-1/2=0
x1^2-81*(x2+0.1)^2+sin(x3)+1.06=0
exp(-x1*x2)+20*x3+(10*pi-3)/3=0
求解要求精度达到0.00001 ————————————————————————————————
首先建立函数fun
储存方程组编程如下将fun.m保存到工作路径中:
function f=fun(x);
%定义非线性方程组如下
%变量x1 x2 x3
%函数f1 f2 f3
syms x1 x2 x3
f1=3*x1-cos(x2*x3)-1/2;
f2=x1^2-81*(x2+0.1)^2+sin(x3)+1.06;
f3=exp(-x1*x2)+20*x3+(10*pi-3)/3;
f=[f1 f2 f3]; ————————————————————————————————
建立函数dfun
用来求方程组的雅克比矩阵将dfun.m保存到工作路径中:
function df=dfun(x);
%用来求解方程组的雅克比矩阵储存在dfun中
f=fun(x);
df=[diff(f,'x1');diff(f,'x2');diff(f,'x3')];
df=conj(df'); ————————————————————————————————
编程牛顿法求解非线性方程组将newton.m保存到工作路径中:
function x=newton(x0,eps,N);
con=0;
%其中x0为迭代初值eps为精度要求N为最大迭代步数con用来记录结果是否收敛for i=1:N;
f=subs(fun(x0),{'x1' 'x2' 'x3'},{x0(1) x0(2) x0(3)});
df=subs(dfun(x0),{'x1' 'x2' 'x3'},{x0(1) x0(2) x0(3)});
x=x0-f/df;
for j=1: length(x0);
il(i,j)=x(j);
end
if norm(x-x0)<eps
con=1;
break;
end
x0=x;
end
%以下是将迭代过程写入txt文档文件名为iteration.txt
fid=fopen('iteration.txt','w');
fprintf(fid,'iteration');
for j=1:length(x0)
fprintf(fid,' x%d',j);
end
for j=1:i
fprintf(fid,'\n%6d ',j);
for k=1:length(x0)
fprintf(fid,' %10.6f',il(j,k));
end
end
if con==1
fprintf(fid,'\n计算结果收敛!');
end
if con==0
fprintf(fid,'\n迭代步数过多可能不收敛!');
end
fclose(fid); ————————————————————————————————
运行程序在matlab中输入以下内容
newton([0.1 0.1 -0.1],0.00001,20) ————————————————————————————————
输出结果
——————————————————————————————————————————在iteration中查看迭代过程 iteration x1 x2 x3
.mulStablePoint用不动点迭代法求非线性方程组的一个根
function [r,n]=mulStablePoint(F,x0,eps)
%非线性方程组:f
%初始解:a
%解的精度:eps
%求得的一组解:r
%迭代步数:n
if nargin==2
eps=1.0e-6;
end
x0 = transpose(x0);
n=1;
tol=1;
while tol>eps
r= subs(F,findsym(F),x0); %迭代公式
tol=norm(r-x0); %注意矩阵的误差求法,
norm为矩阵的欧几里德范数
n=n+1;
x0=r;
if(n>100000) %迭代步数控制
disp('迭代步数太多,可能不收敛!');
return;
end
end
x0=[0 0 0];
[r,n,data]=budong(x0);
disp('不动点计算结果为')
x1=[1 1 1];
x2=[2 2 2];
[x,n,data]=new_ton(x0);
disp(’初始值为0,牛顿法计算结果为:’)
[x,n,data]=new_ton(x1);
disp('初始值为1,牛顿法计算结果为:')
[x,n,data]=new_ton(x2);
disp ('初始值为2,牛顿法计算结果为:')
budong.m
function[r,n,data]=budong(x0, tol)
if nargin=-1
tol=1e-3:
end
x1=budong fun(x0);
n=1;
while(norm(x1-x0))tol)&(n500)
x0=x1;
x1=budong_fun(x0);
n=n+1:
data(:,n)=x1;
end
r=x1:
new_ton.m
function [x,n,data]=new_ton(x0, tol)
if nargin=-1
tol=1e-8;
end
x1=x0-budong_fun(x0)/df1(x0);
n=1;
while (norm(x1-x0))tol)
x0=x1;
x1=x0-budong_fun(x0)/df1(x0);
n=n+1;
data(:,n)=x1;
end
x=x1;
budong_fun.m
function f=budong_fun(x)
f(1)=3* x(1)-cos(x(2)*x(3))-1/2;
f(2)=x(1)^2-81*(x(2)+0.1)^2+sin(x(3))+1.06; f(3)=exp(-x(1)*x(2))+20* x(3)+10* pi/3-1;
f=[f(1)*f(2)*f(3)];
df1.m
function f=df1(x)
f=[3sin(x(2)*x(3))*x(3) sin(x(2)*x(3))*x(2) 2* x(1)-162*(x(2)+0.1)cos(x(3))
exp(-x(1)*x(2))*(-x(2))exp(-x(1)*x(2))*(-x(1))20]; 结果:
不动点计算结果为
r=
1.0e+012*
NaN -Inf 5.6541
初始值为0,牛顿法计算结果为:
x=
0.5000 -0.0000 -0.5236
初始值为1,牛顿法计算结果为:
x=
0.5000 0.0000 -0.5236
初始值为2,牛顿法计算结果为:
x=
0.5000 0.0000 -0.5236。

相关文档
最新文档