<?xml version='1.0' encoding="utf-8"?>
      <rss version='2.0'>
      <channel>
      <title>Форум на Исходниках.RU</title>
      <link>https://forum.sources.ru</link>
      <description>Форум на Исходниках.RU</description>
      <generator>Форум на Исходниках.RU</generator>
  	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=9339&amp;view=findpost&amp;p=91140</guid>
        <pubDate>Fri, 23 May 2003 14:04:36 +0000</pubDate>
        <title>Вычисления собственных значений и векторов</title>
        <link>https://forum.sources.ru/index.php?showtopic=9339&amp;view=findpost&amp;p=91140</link>
        <description><![CDATA[AleXXKSyS: Описан метод Леверьер (точный метод).<br>Здесь нужно изменить только ввод матрицы. <br>Так как всегда считается только для одной матрицы.]]></description>
        <author>AleXXKSyS</author>
        <category>Алгоритмы</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=9339&amp;view=findpost&amp;p=91138</guid>
        <pubDate>Fri, 23 May 2003 14:02:26 +0000</pubDate>
        <title>Вычисления собственных значений и векторов</title>
        <link>https://forum.sources.ru/index.php?showtopic=9339&amp;view=findpost&amp;p=91138</link>
        <description><![CDATA[AleXXKSyS: Посмотри сурс под Borland C++ 3.1<br><br>#include &lt;math.h&gt;<br>#include &lt;conio.h&gt;<br>#include &lt;stdio.h&gt;<br>#include &lt;graphics.h&gt;<br>#include &lt;mem.h&gt;<br><br>#define &nbsp; DEF &nbsp; 4<br><br>const &nbsp; &nbsp; double EPS = 0.00001;<br>const &nbsp; &nbsp; N &nbsp;= 1;<br>const int n1 = 8;<br>typedef &nbsp;double &nbsp;VECTOR[n1];<br>typedef &nbsp;VECTOR &nbsp;MATRIX[n1];<br><br>int Koren = 0;<br><br>void &nbsp;OutMatrix(MATRIX _A)<br>{<br> &nbsp; &nbsp; &nbsp;clrscr();<br> &nbsp; &nbsp; &nbsp;for(int i=0; i&lt;n1; i++)<br> &nbsp; &nbsp; &nbsp; for(int j=0; j&lt;n1; j++)<br> &nbsp; &nbsp; &nbsp;{<br> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;gotoxy( j*8+ 3, i+5);<br> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;cprintf(&quot;\%4.2f&quot;, _A[i][j]);<br> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;//if(i==j)cprintf(&quot;-L&quot;);<br> &nbsp; &nbsp; &nbsp;}<br> &nbsp; &nbsp; &nbsp;getch();<br>}<br><br>double P(VECTOR P1, double lambda)<br>{<br> &nbsp; &nbsp; &nbsp;double s = pow(lambda, (double)DEF );<br> &nbsp; &nbsp; &nbsp;for(int i=1; i&lt;=DEF; i++)<br> &nbsp; &nbsp; &nbsp; &nbsp;s += P1[i-1]*pow(lambda, (double)(DEF - i ) );<br><br> &nbsp; &nbsp; &nbsp;return s;<br>}<br><br>double _P(VECTOR P1, double lambda, double h)<br>{<br> &nbsp; &nbsp; &nbsp;return ( P(P1, lambda + h) - P(P1, lambda))/h;<br>}<br><br>void &nbsp;MultMatrix(MATRIX M1, MATRIX &amp;M2)<br>{<br> &nbsp; &nbsp; &nbsp;int &nbsp; &nbsp; i, j;<br> &nbsp; &nbsp; &nbsp;MATRIX &nbsp;Res;<br> &nbsp; &nbsp; &nbsp;for( i=0; i&lt;n1; i++)<br> &nbsp; &nbsp; &nbsp;for( j=0; j&lt;n1; j++)Res[i][j] = 0;<br><br> &nbsp; &nbsp; &nbsp;for( i=0; i&lt;n1; i++)<br> &nbsp; &nbsp; &nbsp;for( j=0; j&lt;n1; j++)<br> &nbsp; &nbsp; &nbsp; {<br> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; for(int k=0; k&lt;n1; k++)<br> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;Res[i][j] += M1[k][i]*M2[j][k];<br> &nbsp; &nbsp; &nbsp; }<br> &nbsp; &nbsp; &nbsp;for( i=0; i&lt;n1; i++)<br> &nbsp; &nbsp; &nbsp;for( j=0; j&lt;n1; j++)M2[i][j] = Res[i][j];<br>}<br><br>void &nbsp;Fix_Leverrier(MATRIX _A, VECTOR xP)<br>{<br> &nbsp; &nbsp; &nbsp;VECTOR &nbsp; xS;<br> &nbsp; &nbsp; &nbsp;MATRIX &nbsp; xA;<br> &nbsp; &nbsp; &nbsp;double &nbsp; &nbsp;lsd;<br> &nbsp; &nbsp; &nbsp;int &nbsp; &nbsp;i, j;<br> &nbsp; &nbsp; &nbsp;for( i=0; i&lt;n1; i++)<br> &nbsp; &nbsp; &nbsp;for( j=0; j&lt;n1; j++)<br> &nbsp; &nbsp; &nbsp; &nbsp;xA[i][j] = _A[i][j];<br><br> &nbsp; &nbsp; &nbsp;for(int k=0; k&lt;n1; k++)<br> &nbsp; &nbsp; &nbsp; {<br> &nbsp; &nbsp; &nbsp; &nbsp;xS[k] = 0;<br> &nbsp; &nbsp; &nbsp; &nbsp;for( i=0; i&lt;n1; i++)<br> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;xS[k] += xA[i][i];<br><br> &nbsp; &nbsp; &nbsp; &nbsp;MultMatrix(_A, xA);<br>// &nbsp; &nbsp; &nbsp; &nbsp;OutMatrix(xA);<br>// &nbsp; &nbsp; &nbsp; &nbsp;getch();<br> &nbsp; &nbsp; &nbsp; }<br> &nbsp; &nbsp; &nbsp;xP[0] = xS[0];<br> &nbsp; &nbsp; &nbsp;for( k=1; k&lt;DEF; k++)<br> &nbsp; &nbsp; &nbsp; {<br> &nbsp; &nbsp; &nbsp; &nbsp; xP[k] = 0;<br> &nbsp; &nbsp; &nbsp; &nbsp; for( i=0; i&lt;k; i++)<br> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;xP[k] += xP[i]*xS[k-i-1];<br><br> &nbsp; &nbsp; &nbsp; &nbsp; xP[k] = (xS[k] - xP[k])/(double)(k+1);<br> &nbsp; &nbsp; &nbsp; }<br><br> &nbsp; &nbsp; &nbsp;clrscr();<br> &nbsp; &nbsp; &nbsp;cprintf(&quot;\r\nP = x^\%d&quot;, DEF);<br> &nbsp; &nbsp; &nbsp;for( k=0; k&lt;DEF; k++)<br> &nbsp; &nbsp; &nbsp;{<br> &nbsp; &nbsp; &nbsp; if(xP[k]&gt;0)<br> &nbsp; &nbsp; &nbsp; &nbsp;cprintf(&quot;+&quot;);<br><br> &nbsp; &nbsp; &nbsp; cprintf(&quot;\%6.2f*x^\%d&quot;, xP[k], DEF-k-1);<br> &nbsp; &nbsp; &nbsp;}<br> &nbsp; &nbsp; &nbsp;getch();<br>}<br><br>void &nbsp;Newton(double alfa, double beta, VECTOR P1, VECTOR &amp;xA)<br>{<br> &nbsp; &nbsp; &nbsp;double &nbsp;xk, xk1, a = alfa, h = 0.1, tmp;<br><br> &nbsp; &nbsp; &nbsp;do{<br> &nbsp; &nbsp; &nbsp; &nbsp;if( P(P1, a)*P(P1, xk = a += h) &lt; 0)<br> &nbsp; &nbsp; &nbsp; &nbsp;{<br> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;do{<br> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; xk1 = xk - P(P1, xk)/_P(P1, xk, 0.00001);<br> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; tmp = (xk - xk1)/2;<br> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; xk &nbsp;= xk1;<br> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}while( fabs(tmp) &lt; EPS);<br> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;xA[Koren++] = (xk + xk1)/2;<br> &nbsp; &nbsp; &nbsp; &nbsp;}<br> &nbsp; &nbsp; &nbsp;}while(a &lt; beta);<br>}<br><br>void &nbsp;MFill(MATRIX c, MATRIX a)<br>{<br> &nbsp; &nbsp; &nbsp;for(int i=0; i&lt;n1; i++)<br> &nbsp; &nbsp; &nbsp;for(int j=0; j&lt;n1; j++)<br> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; c[i][j] = a[i][j];<br>}<br>void &nbsp;VFill(VECTOR &amp;c, VECTOR a)<br>{<br> &nbsp; &nbsp; &nbsp;for(int i=0; i&lt;n1; i++)<br> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; c[i] = a[i];<br>}<br>void &nbsp;MVGauss(MATRIX a,VECTOR &amp;b)<br>{<br> &nbsp; &nbsp; &nbsp;int &nbsp;i, j, l;<br> &nbsp; &nbsp; &nbsp;MATRIX &nbsp;A;<br> &nbsp; &nbsp; &nbsp;VECTOR &nbsp;B;<br><br> &nbsp; &nbsp; &nbsp;MFill(A, a);<br> &nbsp; &nbsp; &nbsp;VFill(B, b);<br><br> &nbsp; &nbsp; &nbsp;for(l=0; l&lt;n1; l++)<br> &nbsp; &nbsp; &nbsp; {<br> &nbsp; &nbsp; &nbsp; MFill(a, A);<br> &nbsp; &nbsp; &nbsp; VFill(b, B);<br><br> &nbsp; &nbsp; &nbsp; for(j=l; j&lt;n1; j++)<br> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;for(i=l+1; i&lt;n1; i++)<br> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{<br> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;A[i][j] = a[i][j] - (a[i][l] * a[l][j] ) / a[l][l];<br> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;B[i] &nbsp; &nbsp;= b[i] &nbsp; &nbsp;- (b[l] * a[i][l] ) &nbsp;/ a[l][l];<br> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}<br> &nbsp; &nbsp; &nbsp; }<br> &nbsp; &nbsp; &nbsp; MFill(a, A);<br> &nbsp; &nbsp; &nbsp; VFill(b, B);<br>}<br><br><br>void &nbsp;Polynom(double alfa, double beta, VECTOR Z, VECTOR xTRM)<br>{<br> &nbsp; &nbsp; &nbsp;int &nbsp; &nbsp;Gd=0, Gm=0;<br> &nbsp; &nbsp; &nbsp;double &nbsp;h = 0.0005;<br> &nbsp; &nbsp; &nbsp;double &nbsp;x &nbsp;= alfa, y, MULT = 20;<br> &nbsp; &nbsp; &nbsp;double &nbsp;MX = 250, MY = 200;<br> &nbsp; &nbsp; &nbsp;char &nbsp; CH[20];<br><br> &nbsp; &nbsp; &nbsp;initgraph(&amp;Gd, &amp;Gm, &quot;c:\language\bc\bgi&quot;);<br> &nbsp; &nbsp; &nbsp;setcolor(7);<br> &nbsp; &nbsp; &nbsp;line(0,MY,640,MY);<br> &nbsp; &nbsp; &nbsp;line(MX,0,MX,480);<br><br> &nbsp; &nbsp; &nbsp;setcolor(10);<br> &nbsp; &nbsp; &nbsp;for(int i=0; i&lt;Koren; i++)<br> &nbsp; &nbsp; &nbsp; {<br> &nbsp; &nbsp; &nbsp; &nbsp;line(xTRM[i]*MULT + MX, 0, xTRM[i]*MULT + MX,480);<br> &nbsp; &nbsp; &nbsp; &nbsp;sprintf(CH, &quot;\%6.4f&quot;, xTRM[i] );<br> &nbsp; &nbsp; &nbsp; &nbsp;outtextxy(xTRM[i]*MULT + MX + 3, 20, CH);<br> &nbsp; &nbsp; &nbsp; }<br> &nbsp; &nbsp; &nbsp;do<br> &nbsp; &nbsp; &nbsp; {<br> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;y = P(Z, x += h);<br> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;putpixel(x*MULT + MX, y/4 + MY, 15);<br> &nbsp; &nbsp; &nbsp; }while(x &lt; beta);<br> &nbsp; &nbsp; &nbsp;getch();<br> &nbsp; &nbsp; &nbsp;closegraph();<br>}<br><br>void &nbsp;main( void )<br>{<br> &nbsp; &nbsp; &nbsp;double &nbsp; &nbsp;alfa = -15.0, beta = 20.0;<br> &nbsp; &nbsp; &nbsp;int &nbsp; i, j;<br> &nbsp; &nbsp; &nbsp;VECTOR xP, xZ, xG;<br> &nbsp; &nbsp; &nbsp;MATRIX _A;<br><br> &nbsp; &nbsp; &nbsp;memset(&amp;xP,0,sizeof(VECTOR));<br> &nbsp; &nbsp; &nbsp;memset(&amp;xZ,0,sizeof(VECTOR));<br> &nbsp; &nbsp; &nbsp;memset(&amp;xG,0,sizeof(VECTOR));<br><br> &nbsp; &nbsp; &nbsp;for( i=0; i&lt;n1; i++)<br> &nbsp; &nbsp; &nbsp; for( j=0; j&lt;n1; j++)<br> &nbsp; &nbsp; &nbsp; if(i==j)_A[i][j] = i/(double)4.0 + 0.1*(double)N;<br> &nbsp; &nbsp; &nbsp; else &nbsp;_A[i][j] = (i+j)/(double)8.0;<br> &nbsp; &nbsp; &nbsp;OutMatrix(_A);<br><br> &nbsp; &nbsp; &nbsp;Fix_Leverrier(_A, xP);<br> &nbsp; &nbsp; &nbsp;Newton(alfa, beta, xP, xZ);<br> &nbsp; &nbsp; &nbsp;Polynom(alfa, beta, xP, xZ);<br><br> &nbsp; &nbsp; &nbsp;printf(&quot;\n&quot;);<br> &nbsp; &nbsp; &nbsp;for( i=0; i&lt;Koren; i++)<br> &nbsp; &nbsp; &nbsp; printf(&quot;\r\nX[\%d] = \%.10f&quot;, i, xZ[i]);<br><br> &nbsp; &nbsp; &nbsp;getch();<br> &nbsp; &nbsp; &nbsp;double MaxxZ = xZ[0];<br> &nbsp; &nbsp; &nbsp;for( i=0; i&lt;Koren; i++)<br> &nbsp; &nbsp; &nbsp;if(MaxxZ &lt; fabs(xZ[i])) MaxxZ = xZ[i];<br><br> &nbsp; &nbsp; &nbsp;for( i=0; i&lt;n1; i++)<br> &nbsp; &nbsp; &nbsp; for( j=0; j&lt;n1; j++)<br> &nbsp; &nbsp; &nbsp; if(i==j)_A[i][j] = i/(double)4.0 + 0.1*(double)N - MaxxZ;<br> &nbsp; &nbsp; &nbsp; else &nbsp;_A[i][j] = (i+j)/(double)8.0;<br><br>// &nbsp; &nbsp; &nbsp;OutMatrix(_A);<br><br> &nbsp; &nbsp; &nbsp;MVGauss(_A, xG);<br> &nbsp; &nbsp; &nbsp;printf(&quot;\n&quot;);<br> &nbsp; &nbsp; &nbsp;for( i=0; i&lt;n1; i++)<br> &nbsp; &nbsp; &nbsp; printf(&quot;\r\nX[\%d] = \%.10f&quot;, i, xG[i]);<br><br><br> &nbsp; &nbsp; &nbsp;getch();<br>}]]></description>
        <author>AleXXKSyS</author>
        <category>Алгоритмы</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=9339&amp;view=findpost&amp;p=91137</guid>
        <pubDate>Thu, 22 May 2003 15:00:27 +0000</pubDate>
        <title>Вычисления собственных значений и векторов</title>
        <link>https://forum.sources.ru/index.php?showtopic=9339&amp;view=findpost&amp;p=91137</link>
        <description><![CDATA[lunc: Сорсец на Buider6, нужен - готовая лаба + метод QR и спектрального разложения?]]></description>
        <author>lunc</author>
        <category>Алгоритмы</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=9339&amp;view=findpost&amp;p=91136</guid>
        <pubDate>Tue, 20 May 2003 04:58:43 +0000</pubDate>
        <title>Вычисления собственных значений и векторов</title>
        <link>https://forum.sources.ru/index.php?showtopic=9339&amp;view=findpost&amp;p=91136</link>
        <description><![CDATA[Булат Шакиров: http://prografix.narod.ru/rus_jacobi.html]]></description>
        <author>Булат Шакиров</author>
        <category>Алгоритмы</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=9339&amp;view=findpost&amp;p=91135</guid>
        <pubDate>Mon, 19 May 2003 21:08:09 +0000</pubDate>
        <title>Вычисления собственных значений и векторов</title>
        <link>https://forum.sources.ru/index.php?showtopic=9339&amp;view=findpost&amp;p=91135</link>
        <description><![CDATA[oga: Конкретно нужен:<br>Метод Якоби вычисления собственных значений и векторов.<br><br>Других не предлагать.]]></description>
        <author>oga</author>
        <category>Алгоритмы</category>
      </item>
	
      </channel>
      </rss>
	