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

📄 diedaifa.htm

📁 该系统实现在线考试功能
💻 HTM
📖 第 1 页 / 共 2 页
字号:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<title>时间序列分析</title>
<style type="text/css">
<!--
.style1 {font-size: 12px}
.style2 {font-size: 12pt}
-->
</style>
</head>
<body>

<table width="1024" border="0" cellpadding="0" cellspacing="0">
  <!--DWLayoutTable-->
  <tr>
    <td width="12" height="194" valign="top" background="images/左边界.jpg"><!--DWLayoutEmptyCell-->&nbsp;</td>
    <td width="1000" valign="top"><img src="images/logo.jpg" width="1000" height="194"></td>
    <td width="12" valign="top" background="images/右边界.jpg"><!--DWLayoutEmptyCell-->&nbsp;</td>
  </tr>
</table>
<table width="1024" border="0" cellpadding="0" cellspacing="0">
  <!--DWLayoutTable-->
  <tr>
    <td width="12" rowspan="2" valign="top" background="images/左边界.jpg"><!--DWLayoutEmptyCell-->&nbsp;</td>
    <td width="1000" height="432" valign="top"><SPAN class=addtime>
      <P class=MsoNormal 
style="MARGIN: 0cm 0cm 0pt; LINE-HEIGHT: 20pt; mso-line-height-rule: exactly"><hr></P>
      <P class=MsoNormal 
style="MARGIN: 0cm 0cm 0pt; LINE-HEIGHT: 20pt; mso-line-height-rule: exactly"><SPAN 
style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体">线性方程组的解法有两类:<SPAN 
lang=EN-US><o:p></o:p></SPAN></SPAN></P>
      <P class=MsoNormal 
style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 0cm; LINE-HEIGHT: 20pt; mso-list: l73 level1 lfo10; mso-line-height-rule: exactly; tab-stops: list 31.5pt"><SPAN 
lang=EN-US style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体">a)<SPAN 
style="FONT: 7pt 'Times New Roman'">???????????? </SPAN></SPAN><SPAN 
style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体">直接法<SPAN 
lang=EN-US><o:p></o:p></SPAN></SPAN></P>
      </SPAN>      <P class=MsoBodyTextIndent3 style2 
style="MARGIN: 0cm 0cm 0pt; LINE-HEIGHT: 20pt; mso-line-height-rule: exactly"><span class="addtime"><FONT 
face=宋体>所谓的直接法,就是经过有限此的运算即可求得方程组的精确解的方法(如果没有舍入误差的话)。他的优点是可以直接得到方程组得精确解,适合与系数矩阵阶数不太高得时候,但是程序较复杂。</FONT></span></P>
      <SPAN class=addtime>
      <P class=MsoNormal 
style="MARGIN: 0cm 0cm 0pt; LINE-HEIGHT: 20pt; mso-line-height-rule: exactly"><SPAN 
style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体">如:高斯消元法(<SPAN 
lang=EN-US>Gauss)、LU分解法等等。<o:p></o:p></SPAN></SPAN></P>
      <P class=MsoNormal 
style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 0cm; LINE-HEIGHT: 20pt; mso-list: l73 level1 lfo10; mso-line-height-rule: exactly; tab-stops: list 31.5pt"><SPAN 
lang=EN-US style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体">b)<SPAN 
style="FONT: 7pt 'Times New Roman'">???????????? </SPAN></SPAN><SPAN 
style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体">迭代法<SPAN 
lang=EN-US><o:p></o:p></SPAN></SPAN></P>
      <P class=MsoNormal 
style="MARGIN: 0cm 0cm 0pt; LINE-HEIGHT: 20pt; mso-line-height-rule: exactly"><SPAN 
style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体">所谓的迭代法,与直接法相反,它将求解方程组的问题转化为一个无限的求解系列,其极限就是方程组的解。所以在有限步内,迭代法是得不到精确解得。它的优点是使用于系数矩阵阶数太高的问题,但是工作量比较大。<SPAN 
lang=EN-US><o:p></o:p></SPAN></SPAN></P>
      <P class=MsoNormal 
style="MARGIN: 0cm 0cm 0pt; LINE-HEIGHT: 20pt; mso-line-height-rule: exactly"><SPAN 
style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体">如:雅克比迭代(<SPAN 
lang=EN-US>Jacobi)、高斯-赛德尔迭代(Gauss-Seidel)等</SPAN></SPAN>。</P>
      </SPAN>
      <P class=MsoNormal 
style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 24pt; LINE-HEIGHT: 20pt; mso-char-indent-count: 2.0; mso-char-indent-size: 12.0pt; mso-line-height-rule: exactly"><span class="addtime style2">高斯消元法的步骤分为两个过程:消元和回代。这个方法在解线性方程组中是常用的一种方法。但是,当它用于程序设计中时可能会存在一个不稳定、不可靠的问题,不能对所有的系数矩阵都能适用。它是依次地对系数矩阵的对角变量进行消元。这就要求这个系数矩阵必须是严格对角占优的。只有这样才能保证消元过程中高斯消元的主元不等<FONT 
face="Times New Roman">0</FONT>。<o:p></o:p></span></P>
      <P class=MsoNormal style2 
style="MARGIN: 0cm 0cm 0pt; LINE-HEIGHT: 20pt; mso-line-height-rule: exactly"><span class="addtime">如果,在程序设计中直接用高斯消元法将极可能发生除零中断。而且,算法无法依次消元。<o:p></o:p></span></P>
      <P class=MsoNormal 
style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 24pt; LINE-HEIGHT: 20pt; mso-char-indent-count: 2.0; mso-char-indent-size: 12.0pt; mso-line-height-rule: exactly"><span class="addtime style2">要实现一个计算稳定,能应对所有“严格对角占优”和“非严格对角占优”的系数矩阵,并且计算灵巧、高效,必须对高斯消元法进行一些改进。</span><span class="addtime style1"><o:p></o:p></span><span class="addtime"><o:p></o:p></span></P>
      <P class=MsoNormal 
style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 24pt; LINE-HEIGHT: 20pt; mso-char-indent-count: 2.0; mso-char-indent-size: 12.0pt; mso-line-height-rule: exactly"><span class="addtime"><o:p><SPAN 
style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体">雅克比迭代(<SPAN 
lang=EN-US>Jacobi)、高斯-赛德尔迭代(Gauss-Seidel)</SPAN></SPAN></o:p></span><span class="style2">具体程序实现如下:</span></P>
      <DIV id=td_content>
        <DIV>
          <p>//<span class="MsoNormal"><span class="addtime"><SPAN 
style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体">雅克比迭代</SPAN></span></span></p>
          <p><FONT size=3>#include &lt;iostream&gt;</FONT></p>
        </DIV>
        <DIV><FONT size=3>#include &lt;string&gt;</FONT></DIV>
        <DIV><FONT size=3>#include &lt;vector&gt;</FONT></DIV>
        <DIV><FONT size=3>#include &lt;iomanip&gt;</FONT></DIV>
        <DIV><FONT size=3>using namespace std;</FONT></DIV>
        <DIV>?</DIV>
        <DIV><FONT size=3>const int n=3;<SPAN>????????? //</SPAN>设置方程组的维</FONT></DIV>
        <DIV>?</DIV>
        <DIV><FONT size=3>float a[n][n],x[n],b[n];</FONT></DIV>
        <DIV>?</DIV>
        <DIV><FONT size=3>void input_data() //输入方程组的相关数据</FONT></DIV>
        <DIV><FONT size=3>{<SPAN>?? </SPAN></FONT></DIV>
        <DIV><FONT size=3><SPAN>??? cout&lt;&lt;"</SPAN>输入方程组的系数矩阵<SPAN>a["&lt;&lt;n&lt;&lt;"]["&lt;&lt;n&lt;&lt;"]:"&lt;&lt;endl;</SPAN></FONT></DIV>
        <DIV><FONT size=3><SPAN>??? for(int i=0;i&lt;n;i++)</SPAN></FONT></DIV>
        <DIV><FONT size=3><SPAN>??????? for(int j=0;j&lt;n;j++)</SPAN></FONT></DIV>
        <DIV><FONT size=3><SPAN>??????????? cin&gt;&gt;a[i][j];</SPAN></FONT></DIV>
        <DIV><FONT size=3><SPAN>??? cout&lt;&lt;"</SPAN>输入<SPAN>x[1,...,"&lt;&lt;n&lt;&lt;"]的初值:"&lt;&lt;endl;</SPAN></FONT></DIV>
        <DIV><FONT size=3><SPAN>??? for(i=0;i&lt;n;i++)??????? </SPAN></FONT></DIV>
        <DIV><FONT size=3><SPAN>??????????? cin&gt;&gt;x[i];</SPAN></FONT></DIV>
        <DIV><FONT size=3><SPAN>??? cout&lt;&lt;"</SPAN>输入<SPAN>b[1,...,"&lt;&lt;n&lt;&lt;"]的初值:"&lt;&lt;endl;</SPAN></FONT></DIV>
        <DIV><FONT size=3><SPAN>??? for(i=0;i&lt;n;i++)??????? </SPAN></FONT></DIV>
        <DIV><FONT size=3><SPAN>??????????? cin&gt;&gt;b[i];?</SPAN></FONT></DIV>
        <DIV><FONT size=3>}</FONT></DIV>
        <DIV>?</DIV>
        <DIV><FONT size=3>void output_equation()?//输出方程组</FONT></DIV>
        <DIV><FONT size=3>{</FONT></DIV>
        <DIV><FONT size=3><SPAN>??? for(int i=0;i&lt;n;i++)</SPAN></FONT></DIV>
        <DIV><FONT size=3><SPAN>??? {</SPAN></FONT></DIV>
        <DIV><FONT size=3><SPAN>??????? for(int j=0;j&lt;n;j++)</SPAN></FONT></DIV>
        <DIV><FONT size=3><SPAN>??????? {</SPAN></FONT></DIV>
        <DIV><FONT size=3><SPAN>??????????? if(j&gt;0&amp;&amp;a[i][j]&gt;0)</SPAN></FONT></DIV>
        <DIV><FONT size=3><SPAN>??????????????? cout&lt;&lt;"+";</SPAN></FONT></DIV>
        <DIV><FONT size=3><SPAN>??????????? cout&lt;&lt;a[i][j]&lt;&lt;"?x["&lt;&lt;j+1&lt;&lt;"]?";</SPAN></FONT></DIV>
        <DIV><FONT size=3><SPAN>??????? }</SPAN></FONT></DIV>
        <DIV><FONT size=3><SPAN>??????? cout&lt;&lt;"="&lt;&lt;b[i]&lt;&lt;endl;</SPAN></FONT></DIV>
        <DIV><FONT size=3><SPAN>??? }</SPAN></FONT></DIV>
        <DIV><FONT size=3>}</FONT></DIV>
        <DIV>?</DIV>
        <DIV><FONT size=3>void main ()</FONT></DIV>
        <DIV><FONT size=3>{</FONT></DIV>
        <DIV><FONT size=3><SPAN>??? input_data();</SPAN></FONT></DIV>
        <DIV><FONT size=3><SPAN>??? int counter;??????????? //</SPAN>设置计算时迭代的次数</FONT></DIV>
        <DIV><FONT size=3><SPAN>??? cout&lt;&lt;"</SPAN>输入迭代的次数<SPAN>"&lt;&lt;endl;</SPAN></FONT></DIV>
        <DIV><FONT size=3><SPAN>??? cin&gt;&gt;counter;</SPAN></FONT></DIV>
        <DIV><FONT size=3><SPAN>??? system("cls");</SPAN></FONT></DIV>
        <DIV><FONT size=3><SPAN>??? output_equation();</SPAN></FONT></DIV>
        <DIV><FONT size=3><SPAN>??? int k=0,i=0;??????????? //k</SPAN>用来统计迭代的次数<SPAN>;i用来表示x的序列</SPAN></FONT></DIV>
        <DIV><FONT size=3><SPAN>??? float m_num1;???? //m_x</SPAN>用来保存<SPAN>x的原先值;m_num1用来计算j!=i的数据之和</SPAN></FONT></DIV>
        <DIV><FONT size=3><SPAN>??? cout&lt;&lt;endl;</SPAN></FONT></DIV>
        <DIV><FONT size=3><SPAN>??? cout&lt;&lt;"k\t";</SPAN></FONT></DIV>
        <DIV><FONT size=3><SPAN>??? for(int j=0;j&lt;n;j++)</SPAN></FONT></DIV>
        <DIV><FONT size=3><SPAN>??????? cout&lt;&lt;"x["&lt;&lt;j+1&lt;&lt;"]\t\t\t";</SPAN></FONT></DIV>
        <DIV><FONT size=3><SPAN>??? cout&lt;&lt;endl;</SPAN></FONT></DIV>
        <DIV><FONT size=3><SPAN>??? cout&lt;&lt;k&lt;&lt;"\t";</SPAN></FONT></DIV>
        <DIV><FONT size=3><SPAN>??? k++;</SPAN></FONT></DIV>
        <DIV><FONT size=3><SPAN>??? cout &lt;&lt; setiosflags(ios::fixed);?? //</SPAN>和下一句结合起来用来设定小数位的位数</FONT></DIV>
        <DIV><FONT size=3><SPAN>??? cout &lt;&lt; setprecision(10);</SPAN></FONT></DIV>
        <DIV><FONT size=3><SPAN>??? float x_next[n];</SPAN></FONT></DIV>
        <DIV><FONT size=3><SPAN>??? for(j=0;j&lt;n;j++)</SPAN></FONT></DIV>
        <DIV><FONT size=3><SPAN>??? {</SPAN></FONT></DIV>
        <DIV><FONT size=3><SPAN>??????? cout&lt;&lt;x[j]&lt;&lt;"\t\t";</SPAN></FONT></DIV>
        <DIV><FONT size=3><SPAN>??? }</SPAN></FONT></DIV>
        <DIV><FONT size=3><SPAN>??? cout&lt;&lt;endl; </SPAN></FONT></DIV>
        <DIV><FONT size=3><SPAN>??? do</SPAN></FONT></DIV>
        <DIV><FONT size=3><SPAN>??? {?????? </SPAN></FONT></DIV>
        <DIV><FONT size=3><SPAN>??????? m_num1=0;</SPAN></FONT></DIV>
        <DIV><FONT size=3><SPAN>??????? for(j=0;j&lt;n;j++)</SPAN></FONT></DIV>
        <DIV><FONT size=3><SPAN>??????? {</SPAN></FONT></DIV>
        <DIV><FONT size=3><SPAN>??????????? if(j!=i)</SPAN></FONT></DIV>
        <DIV><FONT size=3><SPAN>??????????????? m_num1=m_num1+a[i][j]*x[j];???? </SPAN></FONT></DIV>
        <DIV><FONT size=3><SPAN>??????? }</SPAN></FONT></DIV>
        <DIV><FONT size=3><SPAN>??????? x_next[i]=(b[i]-m_num1)/a[i][i];??????? </SPAN></FONT></DIV>
        <DIV><FONT size=3><SPAN>??????? if(i&lt;n-1)</SPAN></FONT></DIV>
        <DIV><FONT size=3><SPAN>??????????? i++;</SPAN></FONT></DIV>
        <DIV><FONT size=3><SPAN>??????? else</SPAN></FONT></DIV>
        <DIV><FONT size=3><SPAN>??????? {</SPAN></FONT></DIV>
        <DIV><FONT size=3><SPAN>??????????? for(j=0;j&lt;n;j++)</SPAN></FONT></DIV>
        <DIV><FONT size=3><SPAN>??????????????? x[j]=x_next[j];</SPAN></FONT></DIV>
        <DIV><FONT size=3><SPAN>??????????? cout&lt;&lt;k&lt;&lt;"\t";</SPAN></FONT></DIV>
        <DIV><FONT size=3><SPAN>??????????? for(j=0;j&lt;n;j++)</SPAN></FONT></DIV>
        <DIV><FONT size=3><SPAN>??????????????? cout&lt;&lt;x[j]&lt;&lt;"\t\t";</SPAN></FONT></DIV>
        <DIV><FONT size=3><SPAN>??????????? cout&lt;&lt;endl;</SPAN></FONT></DIV>
        <DIV><FONT size=3><SPAN>??????????? i=0;</SPAN></FONT></DIV>
        <DIV><FONT size=3><SPAN>??????????? k++;</SPAN></FONT></DIV>
        <DIV><FONT size=3><SPAN>??????? };????? </SPAN></FONT></DIV>
        <DIV><FONT size=3><SPAN>??? }while(k&lt;=counter);</SPAN></FONT></DIV>
        <DIV>
          <p><FONT size=3>}</FONT></p>
          <p>&nbsp;</p>
          <p><font size="3">//<span class="MsoNormal"><span class="addtime"><SPAN 
style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体"><SPAN 

⌨️ 快捷键说明

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