1、问题

求解如下方程组:

2、算法

3、代码实现

# *coding:utf-8 *
import math
delta = 5e-6 ;eps = 1e-6
x0 = 1;y0 = 1
er = 1;k = 0
def z(x,y):return math.sin(x*y)*math.exp(-0.1*(x**2+y**2+x*y+2*x))
def f(x,y):return y*math.cos(x*y)-0.1*(2*x+y+2)*math.sin(x*y)
def g(x,y):return x*math.cos(x*y)-0.1*(2*y+x)*math.sin(x*y)
def f_x(x,y):return -y**2*math.sin(x*y)-0.2*math.sin(x*y)-0.1*(2*x*y+y**2+2*y)* math.cos(x*y)
def f_y(x,y):return math.cos(x*y)-x*y*math.sin(x*y)-0.1*math.sin(x*y)-0.1*(2*x**2+x* y+2*x)*math.cos(x*y)
def g_x(x,y):return math.cos(x*y)-x*y*math.sin(x*y)-0.1*math.sin(x*y)-0.1*(2*y**2+x*y)*math.cos(x*y)
def g_y(x,y):return -x**2*math.sin(x*y)-0.2*math.sin(x*y)-0.1*(2*x*y+x**2)* math.cos(x*y)
print('使用初值为(',"{0:.1f}".format(x0),', ',"{0:.1f}".format(y0),')')
while er > 0.000000001:x1=x0+(f(x0,y0)*g_y(x0,y0)-g(x0,y0)*f_y(x0,y0))/(g_x(x0,y0)*f_y(x0,y0) -f_x(x0,y0)*g_y(x0,y0))y1=y0+(g(x0,y0)*f_x(x0,y0)-f(x0,y0)*g_x(x0,y0))/(g_x(x0,y0)*f_y(x0,y0) -f_x(x0,y0)*g_y(x0,y0))er=max(abs(x1-x0),abs(y1-y0))x0=x1;y0=y1k=k+1print('迭代次数',"{0:.0f}".format(k),',方程根的近似值为x=', "{0:.10f}".format(x1),',y =',"{0:.10f}".format(y1))
print('误差er=',"{0:.16f}".format(er))
print('方程组的根为(',"{0:.10f}".format(x1),',',"{0:.10f}".format(y1),')', "原函数极小值z=","{0:.10f}".format(z(x1, y1)))

当初值为(1,1)时,计算结果如表1。

 此时可以得到原二元函数的极小值点为(0.9097471401,1.3180997683),极小值为0.5330808683。然而,当初值取(-1,-1)时,可以得到原二元函数的极小值点为(-1.5221370100,-0.8914954107),极小值为0.8474932827。为什么两个结果不一样呢?

4、解决问题

当初值不同时,得到的结果完全不一样,之所以出现这样的结果的原因是因为二元函数可能存在多个极小值点或者鞍点。为了探究原二元函数的三维空间形状,用python画出原二元函数的三维图像如图1,三维图像绘制代码picture_3D.py见附录。

 

根据图1,可以清晰地看到原二元函数有且只有一个极小值点。旋转矢量图可以看出原二元函数的极小值点大约在x=-1.5,y=1处,极小值大约为-1.1,如图2、图3。。

于是重新取初值为(-1.5,1),并计算结果,如表3。此时可以得到原二元函数的极小值点为(-1.5931730287,0.9721251312),极小值为-1.1330866542。

附录

# *coding:utf-8 *
import numpy as np
from matplotlib import pyplot as plt
# 定义坐标轴
fig = plt.figure()
ax1 = plt.axes(projection='3d')
# 定义三维数据
xx = np.arange(-3, 1, 0.05)
yy = np.arange(-1, 2, 0.05)
x, y = np.meshgrid(xx, yy)
z = np.sin(x * y) * np.exp(-0.1 * (x ** 2 + y ** 2 + x * y + 2 * x))
# 作图
ax1.plot_surface(x, y, z, rstride=1, cstride=1, cmap='rainbow')
ax1.contour(x, y, z, stride=0.05, zdim='z', offset=-3, cmap='rainbow')  # 绘制等高线
plt.show()

数值分析第一次作业-牛顿迭代法求解二元非线性方程组相关推荐

  1. java 二元牛顿迭代法求解二元方程组

    1.之前讨论过利用牛顿一元迭代公司可以求解一元方程,本文档介绍如何求解二元方程组 在有些需要进行复杂计算的程序中我们有可能需要求解复杂的二元方程 (如建筑学程序) 假设存在如下方程组: xy -e^x ...

  2. matlab实现牛顿迭代法求解二元函数最优点并绘制动态图像

    1. 定义目标函数,及其雅可比矩阵和海塞矩阵: function [f_val, f_grad_val, f_hess_val] = V_func(x_val, y_val)syms x y;f = ...

  3. c语言牛顿迭代法求解非线性方程组,利用牛顿迭代法求解非线性方程组

    最近一个哥们,是用牛顿迭代法求解一个四变量方程组的最优解问题,从网上找了代码去改进,但是总会有点不如意的地方,迭代的次数过多,但是却没有提高精度,真是 最近一个哥们,是用牛顿迭代法求解一个四变量方程组 ...

  4. python牛顿法解非线性方程组_萌新请教牛顿法求解三元非线性方程组

    该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 请问牛顿迭代法求解三元非线性方程组,不同迭代初值貌似有很多不同结果,如何求解到满足要求的解,0 FindRoot[{-6.565159793181527` ...

  5. 非线性方程组牛顿迭代法matlab,matlab实现牛顿迭代法求解非线性方程组

    <matlab实现牛顿迭代法求解非线性方程组>由会员分享,可在线阅读,更多相关<matlab实现牛顿迭代法求解非线性方程组(5页珍藏版)>请在人人文库网上搜索. 1.matla ...

  6. python牛顿法解非线性方程组_matlab实现牛顿迭代法求解非线性方程组.pdf

    matlab实现牛顿迭代法求解非线性方程组.pdf matlab 实现牛顿迭代法求解非线性方程组实现牛顿迭代法求解非线性方程组 已知非线性方程组如下 3*x1-cosx2*x3-1/20 x12-81 ...

  7. matlab牛顿法解非线性方程组,matlab实现牛顿迭代法求解非线性方程组.pdf

    资源描述 matlab 实现牛顿迭代法求解非线性方程组实现牛顿迭代法求解非线性方程组 已知非线性方程组如下 3*x1-cos(x2*x3)-1/2=0 x1^2-81*(x2+0.1)^2+sin(x ...

  8. 二元牛顿迭代法matlab,牛顿迭代法解二元方程组以及误差分析 matlab实现

    电子科大数值分析第一次作业 类似一元函数的泰勒展开: f(x) f(x0) f'(x0)(x x0) 二元函数的展开为: f(x,y) f(x0,y0) [(x x0) (y y0)]f(x,y)x ...

  9. 数值分析matlab实验报告,数值分析第一次作业matlab实验报告.doc

    数值分析第一次作业matlab实验报告.doc 几种线性方程组迭代算法的MATLAB实现和性能比较用有限差分方法(五点差分格式)求解正方形域上的Poisson方程边值问题用MATLAB语言编写算法程序 ...

最新文章

  1. java 异常类_Java异常处理
  2. ApartmentState.STA
  3. asp.net 2中的图片上传
  4. mysql sql 检测磁盘_MySQL 数据库磁盘占用情况查询
  5. javascript中构造函数的说明
  6. 第十八期:闲鱼上哪些商品抢手?Python分析后告诉你
  7. 【深度揭秘】百度、阿里、腾讯内部岗位级别和薪资结构,附带求职建议!
  8. db2 linux 导入数据_MySQL数据的导出和导入(Linux)
  9. 【LeetCode】剑指 Offer 34. 二叉树中和为某一值的路径
  10. OpenJDK和Java API区别_Linux下的JDK和OpenJDK有什么具体的区别
  11. E9启动后无法打印日志
  12. 补卡的糟糕经历引发的思考:一点黑客技术让我们不再泄露那么多数据
  13. 基于opencv的身份证识别系统
  14. 第三章在局域网中使用冗余链路
  15. 第1章练习题-SQL基础教程
  16. 如何去掉PDF右下角的全能扫描王水印
  17. Vue + element 实现课程表
  18. webrtc视频引擎之video_render(视频渲染)介绍
  19. 公司要收我的毕业证书,这合法吗
  20. (十六)记录 -- 1. 数据记录的概念

热门文章

  1. 进程之间的信号通信,类型、处理机制笔记
  2. Python编程规范及性能优化
  3. VMware扩大硬盘后修改Linux逻辑卷大小
  4. Javascript与正则表达式个人总结与收录--高级篇
  5. Python基础03-运算符
  6. 电子白板 矢量 编码_当涉及白板编码采访时,请记住准备
  7. wincc vbs mysql_Wincc VBS操作txt及SQL2005
  8. java连接mysql8的坑
  9. 逻辑回归:确定一个人是否年收入超过5万美元
  10. linux resin mysql_Linux下Resin JSP MySQL的安装和配置-2