⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 p22:牛顿法算例.htm

📁 华中科技大学计算机学院《计算方法》课件(含C源代码)。通过它可以学习求解复杂数学问题的基本方法以及编程实现。
💻 HTM
字号:
<html>

<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<meta name="GENERATOR" content="Microsoft FrontPage 4.0">
<meta name="ProgId" content="FrontPage.Editor.Document">
<title>应用二分法求解非线性方程的计算过程显示页面</title>
</head>

<body bgcolor="#3366CC">

<font color="#ffcc00" face="楷体_GB2312" size="6">
<div align="center">
  <h1>应用牛顿法求解非线性方程的计算过程详解</h1>
</div>
<div align="left">
  <br>
  &nbsp;&nbsp;&nbsp;&nbsp;问题:<br>
  &nbsp;&nbsp;&nbsp;&nbsp;记&nbsp;F(x)=x*x*x-x-1,&nbsp;求方程&nbsp;F(x)=0<br>
  &nbsp;&nbsp;&nbsp;&nbsp;在区间&nbsp;[a,b]=[1,2]&nbsp;内的近似解,<br>
  &nbsp;&nbsp;&nbsp;&nbsp;给出F(x)的导数&nbsp;G(x)=3.0*x*x-1,<br>
  &nbsp;&nbsp;&nbsp;&nbsp;要求要求用牛顿法求解,<br>
  &nbsp;&nbsp;&nbsp;&nbsp;且解的绝对误差不超过&nbsp;1e-8。<br>
  <br>
  &nbsp;&nbsp;&nbsp;&nbsp;为了帮助大家阅读计算过程,我们定义数组<br>
  &nbsp;&nbsp;&nbsp;&nbsp;X[N],Y[N],Z[N],R[N]&nbsp;保存中间结果。其中:<br>
  <br>
  &nbsp;&nbsp;&nbsp;&nbsp;X[K]:第K次迭代得到的近似解;<br>
  &nbsp;&nbsp;&nbsp;&nbsp;Y[K]=F(X[K]):第K次迭代的函数值;<br>
  &nbsp;&nbsp;&nbsp;&nbsp;Z[K]=G(X[K]): 第K次迭代的导数值;<br>
  &nbsp;&nbsp;&nbsp;&nbsp;R[K]=|X[K+1]-X[K]|: 第K次代代的逼近值;<br>
  <br>
  &nbsp;&nbsp;&nbsp;&nbsp;主要计算格式为:X[K+1]=X[K]-Y[K]/R[K]<br>
  <br>
  &nbsp;&nbsp;&nbsp;&nbsp;计算过程列表如下:</font>
</div>
<table bgColor="#3399ff" border="4" style="COLOR: #ffff00; FONT-SIZE: 24pt" width="120%">
  <tbody>
    <tr>
      <td align="middle" width="12%">K</td>
      <td align="middle" width="22%">X[K]</td>
      <td align="middle" width="22%">Y[K]</td>
      <td align="middle" width="22%">Z[K]</td>
      <td align="middle" width="22%">R[K]</td>
    </tr>
    <tr>
      <td align="middle" width="12%">0</td>
      <td align="right" width="22%">+2</td>
      <td align="right" width="22%">+0.5000E1</td>
      <td align="right" width="22%">+0.1100E2</td>
      <td align="right" width="22%">+0.1000E1</td>
    </tr>
    <tr>
      <td align="middle" width="12%">1</td>
      <td align="right" width="22%">+1.545455</td>
      <td align="right" width="22%">+0.1146E1</td>
      <td align="right" width="22%">+0.6165E1</td>
      <td align="right" width="22%">-0.4545E0</td>
    </tr>
    <tr>
      <td align="middle" width="12%">2</td>
      <td align="right" width="22%">+1.359615</td>
      <td align="right" width="22%">+0.1537E0</td>
      <td align="right" width="22%">+0.4546E1</td>
      <td align="right" width="22%">-0.1858E0</td>
    </tr>
    <tr>
      <td align="middle" width="12%">3</td>
      <td align="right" width="22%">+1.325801</td>
      <td align="right" width="22%">+0.4625E-2</td>
      <td align="right" width="22%">+0.4273E1</td>
      <td align="right" width="22%">-0.3381E-1</td>
    </tr>
    <tr>
      <td align="middle" width="12%">4</td>
      <td align="right" width="22%">+1.324719</td>
      <td align="right" width="22%">+0.4658E-5</td>
      <td align="right" width="22%">+0.4265E1</td>
      <td align="right" width="22%">-0.1082E-2</td>
    </tr>
    <tr>
      <td align="middle" width="12%">5</td>
      <td align="right" width="22%">+1.324718</td>
      <td align="right" width="22%">+0.4740E-11</td>
      <td align="right" width="22%">+0.4265E1</td>
      <td align="right" width="22%">-0.1092E-5</td>
    </tr>
    <tr>
      <td align="middle" width="12%">6</td>
      <td align="right" width="22%">+1.324718</td>
      <td align="right" width="22%">+0.2220E-15</td>
      <td align="right" width="22%">+0.4265E1</td>
      <td align="right" width="22%">-0.1112E-11</td>
    </tr>
  </tbody>
</table>
<div>
  <strong><font color="#ffcc00" face="楷体_GB2312" size="6"><br>
  附:实现算法的C语言程序段如下:
  <pre>
#define F(x) x*x*x-x-1
#define G(x) 3.0*x*x-1
static float a = 1;
static float b = 2;
static float EPS = 1e-8;
static float X[51],Y[51],Z[51],R[51];
static int N=51;
P22_NTF(float a,float b)
{ int K;
  if(F(a)&gt;0)X[0]=a;
     else   X[0]=b;
   Y[0]=F(X[0]);
   Z[0]=G(X[0]);
   R[0]=(b-a);
   for(K=0;K&lt;N;K++)
   { X[K+1]=X[K]-Y[K])/Z[K];
     Y[K+1]=F(X[K+1]);
     Z[K+1]=G(X[K+1]);
     R[K+1]=fabs(X[K+1]-X[K]);
     if(R[K+1]&lt;EPS) break;
   }
   return ;
 }</pre>
  </font></strong>
</div>

</body>

</html>

<html><script language="JavaScript">

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -