Matlab编程问题:编写牛顿法程序来求解下面的方程组: (x-2)^2+(y-3+2x)^2=5 2(x-3)^2+(y/3)^2=4

如题所述

% 用牛顿迭代法解非线性方程组
% F1=(x-2)^2+(y-3+2x)^2-5=0
% F2=2(x-3)^2+(y/3)^2-4=0
% F=[F1;F2]=[5*x^2 + 4*x*y - 16*x + y^2 - 6*y + 8
% 2*x^2 - 12*x + y^2/9 +14 ]

%迭代初值设为:X0=[x,y]=[0,0]'
% X(k+1)=X(k)+delt_X
% Jaco_F(X(k))*delt_X(k)=-F(X(k))
% Jaco_F为Jacobian矩阵
% Jaco_F=[10*x+4*y-16 2*y+4*x-6
% 4*x-12 2*y/9]
%error 为 ||X(k+1)-X(k)||,当error小于0.0001时,迭代停止

x=0;
y=0;
error=10;
while(error>0.0001)
F = [ 5*x^2+4*x*y-16*x+y^2-6*y+8
2*x^2-12*x+y^2/9+14 ];
Jaco_F = [10*x+4*y-16 2*y+4*x-6
4*x-12 2*y/9];

X = [x y]' - (inv(Jaco_F))*F; %迭代后的X值
error=norm(X-[x,y]'); % error=||X(k+1)-X(k)||
x=X(1);
y=X(2);

end
x
y
%%%%%%%%%%%%%到此结束%%%%%%%%%%%%%

程序结果:
x =

1.7362

y =

-2.6929
望采纳!
温馨提示:内容为网友见解,仅供参考
无其他回答

Matlab编程问题:编写牛顿法程序来求解下面的方程组: (x-2)^2+(y-3...
F2=2(x-3)^2+(y\/3)^2-4=0 F=[F1;F2]=[5*x^2 + 4*x*y - 16*x + y^2 - 6*y + 8 2*x^2 - 12*x + y^2\/9 +14 ]迭代初值设为:X0=[x,y]=[0,0]'X(k+1)=X(k)+delt_X Jaco_F(X(k))*delt_X(k)=-F(X(k))Jaco_F为Jacobian矩阵 Jaco_F=[10*...

跪求用牛顿法求方程近似根 的Matlab 程序
function s=NewtonIterate(x,eps)Newton迭代法求解非线性方程组的解 x为迭代初值,eps为允许误差 if nargin==1 eps=1.0e-6;elseif nargin<1 return end x1=fx1(x); %非线性方程组函数fx1.m x2=-dfx1(x); %非线性方程组的导数函数dfx1.m x0=x2\\x1';while norm(x0)>=eps x...

MATLAB解带三角函数的方程组,如何编程
2、对于复杂的三角方程,可以用Broyden(拟牛顿法)等方法来求解,得到数值解。如 其求解过程如下 ①建立自定义函数文件,funm。m function y = funm(x)x=x(1,1),y=x(2,1)y(1,1) = x(1,1) - 0.7 * sin(x(1,1)) - 0.2 * cos(x(2,1)); y(2,1) = x(2,1) - ...

如何使用牛顿法找到一元二次方程的根?
\\[ x^4 + 2x^3 + 3x - 4 = 0 \\]这是我们要找到根的方程。为了使用牛顿法,我们需要这个方程的导数。\\[ f(x) = x^4 + 2x^3 + 3x - 4 \\]\\[ f'(x) = 4x^3 + 6x^2 + 3 \\]牛顿法的迭代公式为:\\[ x_{n+1} = x_n - \\frac{f(x_n)}{f'(x_n)...

matlab怎么计算方程组
2、对于比较复杂的方程组,可以用数值方法中的牛顿迭代法,二分法来求解。如方程组 求解代码 x0=[1.0 1.0 1.0]';tol = 1.0e-6;x = x0 - newton_dfun(x0)\\newton_fun(x0); %newton_dfun导函数,newton_fun函数 n = 1;while (norm(x-x0)>tol) && (n<1000)x0 = x;x =...

C语言编程,指针,编写函数,用牛顿迭代法求方程f(x)=2x3-4x2+3x-6=0在...
double fx(double x){ return 2*x*x*x-4*x*x+3*x-6;} double fp(double x){ return 6*x*x-8*x+3;} int main(){ double x=1.5,y,eps=1e-08;printf("input eps 1e-08\\n"); scanf("%lf",&eps);y = root(fx,fp,x,eps);printf("%lf\\n",y);return 0;} double ...

C++编写程序用牛顿迭代法求一元方程5x^3—3x^2+2x—8=0 在x=1.1附近...
#include "math.h"using namespace std;int _tmain(int argc, _TCHAR* argv[]){double x = 1.1;while(fabs(5*x*x*x-3*x*x+2*x-8)>0.000001)x = x - (5*x*x*x-3*x*x+2*x-8)\/(15*x*x-6*x+2);cout<<"方程的解为"<<x<<endl;system("pause");return 0;} ...

数学题3道(牛顿问题)
X+10Y)\/12=3;(X+10Y)\/5=10;可计算出X=32;Y=2;设需Z人,则(X+2Y)\/Z=2小时,则可算出Z=18人。3。12台。设水有C,每小时流掉X,每台每小时抽Y。则可列出等式两个:C-6X=4Y;C-3X=10Y;通过等式可得到C=8Y,2Y=X;设需要Z台水泵;则C-2X=ZY;则6X=ZY,则明显Z=12;...

在C语言中,什么是迭代法?
迭代是数值分析中通过从一个初始估计出发寻找一系列近似解来解决问题(一般是解方程或者方程组)的过程,为实现这一过程所使用的方法统称为迭代法(Iterative Method)。一般可以做如下定义:对于给定的线性方程组x=Bx+f(这里的x、B、f同为矩阵,任意线性方程组都可以变换成此形式),用公式x(k+1)=Bx(k)+f(括号中为...

VASP 计算问题小结
选择方法为 IBRION=1 时为准牛顿方法而 IBRION=2 时为 CG 方法。 具体来说要做弛豫计算,设置 IBRION=1 或者 2 就可以了,其它参数根据需要来设置。NSW 是进行弛豫的最大步数,例如设置 NSW=100,当计算在 100 步之内达到收敛时计算自动中断,而 100 步内没有达到收敛的话系统将在第 100 步后强制中止(平常...

相似回答