<?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=40801&amp;view=findpost&amp;p=266231</guid>
        <pubDate>Thu, 18 Dec 2003 21:02:33 +0000</pubDate>
        <title>Корни полинома</title>
        <link>https://forum.sources.ru/index.php?showtopic=40801&amp;view=findpost&amp;p=266231</link>
        <description><![CDATA[AQL:  есть несколько вариантов решения.<br>Наиболее польное (за которое я бы решился поставить сдаванту зачет):<br>если полином до 4-ой степени, то искать его корни можно и аналитически, (решение квадратного уравнения, метод Кардано и т.д.). Если же более чем 4-ой - то тут придется изгаляться численно. ]]></description>
        <author>AQL</author>
        <category>Алгоритмы</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=40801&amp;view=findpost&amp;p=266192</guid>
        <pubDate>Thu, 18 Dec 2003 19:19:26 +0000</pubDate>
        <title>Корни полинома</title>
        <link>https://forum.sources.ru/index.php?showtopic=40801&amp;view=findpost&amp;p=266192</link>
        <description><![CDATA[rodion:  Методом Ньютона находишь корень если он комплексный значит ты нашел два второй комплексно сопряженый за тем делишь свой полином поак есть корни ]]></description>
        <author>rodion</author>
        <category>Алгоритмы</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=40801&amp;view=findpost&amp;p=264967</guid>
        <pubDate>Wed, 17 Dec 2003 09:01:12 +0000</pubDate>
        <title>Корни полинома</title>
        <link>https://forum.sources.ru/index.php?showtopic=40801&amp;view=findpost&amp;p=264967</link>
        <description><![CDATA[Visitor:  Запостю и я старую лабу <!--emo&:)--><img src='http://forum.sources.ru/html/emoticons/smile.gif' border='0' style='vertical-align:middle' alt='smile.gif' /><!--endemo--><br><br>Тоже только вещественные корни. ]]></description>
        <author>Visitor</author>
        <category>Алгоритмы</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=40801&amp;view=findpost&amp;p=264958</guid>
        <pubDate>Wed, 17 Dec 2003 08:51:33 +0000</pubDate>
        <title>Корни полинома</title>
        <link>https://forum.sources.ru/index.php?showtopic=40801&amp;view=findpost&amp;p=264958</link>
        <description><![CDATA[tserega:  Только сегодня сдал лабу. Правда, ищет только действительные корни, но строит и график.<br><!--c1--></div><table border='0' align='center' width='95%' cellpadding='3' cellspacing='1'><tr><td><b></b> </td></tr><tr><td id='CODE'><!--ec1-->#include &#60;iostream.h&#62;<br>#include &#60;conio.h&#62;<br>#include &#60;math.h&#62;<br>#include &#60;graphics.h&#62;<br>#include &#60;stdlib.h&#62;<br><br>#define maxN 6<br>#define epsilon 0.000001<br><br>struct tKoef {<br> long double koef;<br> int pow;<br>};<br><br>int n; <br>tKoef a &#91;maxN&#93;&#91;maxN&#93;; <br>double roots &#91;maxN&#93;; <br>double derivRoots &#91;maxN&#93;; <br>int derivRootCount; <br>double tmpRoots &#91;maxN&#93;;<br>int rootCount; <br><br>double max&#40;double x, double y&#41; {<br> if &#40;x &#62; y&#41; {<br> 	return x;<br> } else {<br> 	return y;<br> }<br>}<br><br>double min&#40;double x, double y&#41; {<br> if &#40;x &#60; y&#41; {<br> 	return x;<br> } else {<br> 	return y;<br> }<br>}<br><br>long double f&#40;int lev, long double x&#41; {<br> long double res = 0.0;<br> long i;<br> for &#40;i = n; i &#62;= 0; i--&#41; {<br> 	if &#40;a&#91;lev&#93;&#91;i&#93;.pow &#62; 0&#41; {<br>   res += a&#91;lev&#93;&#91;i&#93;.koef * pow&#40;&#40;long double&#41; x, &#40;long double&#41; a&#91;lev&#93;&#91;i&#93;.pow&#41;;<br> 	}<br> 	if &#40;a&#91;lev&#93;&#91;i&#93;.pow == 0&#41; {<br>   res += a&#91;lev&#93;&#91;i&#93;.koef;<br> 	}<br> }<br> return res;<br>}<br><br>double findMaxRoot&#40;int lev&#41; {<br> //Меняем все Ai на |Ai|, где 0 &#60;= i &#60;= N<br> //Меняем все  Ai*X^i на Ai*X^&#40;n-1&#41;, где 0 &#60;= i &#60;= N -1<br> //Макс. корень = |A&#40;n-1&#41; + A&#40;n-2&#41; + ... + A&#40;1&#41; + A&#40;0&#41;|/|An|<br> double s = 0;<br> long i;<br> for &#40;i = 0; i &#60; n; i++&#41; {<br> 	s += abs&#40;a&#91;lev&#93;&#91;i&#93;.koef&#41;;<br> }<br> return &#40;s / fabs&#40;a&#91;lev&#93;&#91;n&#93;.koef&#41;&#41; + 1;<br>}<br><br>double divide&#40;int lev, double a, double b&#41; {<br> //Метод деления отрезка пополам на интервале &#91;a;b&#93;<br> double c;<br> while &#40;b - a &#62; epsilon&#41; {<br> 	c = &#40;a + b&#41; / 2;<br> 	if &#40;f&#40;lev, c&#41; == 0&#41; {<br>   break;<br> 	}<br> 	if &#40;f&#40;lev, a&#41; * f&#40;lev, c&#41; &#60; 0&#41; {<br>   b = c;<br> 	} else {<br>   a = c;<br> 	}<br> }<br> return &#40;a + b&#41; / 2;<br>}<br><br>void findRoots&#40;int lev&#41; {<br> //Для решения уравнения степени Lev используется<br> //корни уравнения производной &#40;Lev-1&#41;<br> double maxRoot; <br> maxRoot = findMaxRoot&#40;0&#41;;<br> roots&#91;0&#93; = -maxRoot;<br> roots&#91;rootCount - 1&#93; = maxRoot;<br> int rc = 0;<br> int i;<br> for &#40;i = 0; i &#60; rootCount; i++&#41; {<br> 	derivRoots&#91;i&#93; = roots&#91;i&#93;;<br> }<br> derivRootCount = rootCount;<br> for &#40;i = 0; i &#60; rootCount - 1; i++&#41; {<br> 	if &#40;f&#40;lev, roots&#91;i&#93;&#41; * f&#40;lev, roots&#91;i + 1&#93;&#41; &#60;= 0&#41; {<br>   double x = divide&#40;lev, roots&#91;i&#93;, roots&#91;i + 1&#93;&#41;;<br>   rc ++;<br>   tmpRoots&#91;rc&#93; = x;<br> 	}<br> }<br> tmpRoots&#91;0&#93; = -maxRoot;<br> tmpRoots&#91;rc + 1&#93; = maxRoot;<br> for &#40;i = 0; i &#60;= rc + 1; i++&#41; {<br> 	roots&#91;i&#93; = tmpRoots&#91;i&#93;;<br> }<br> rc = 0;<br> while &#40;roots&#91;rc + 1&#93; - roots&#91;rc&#93; &#62; 2 * epsilon&#41; {<br> 	rc++;<br> }<br> rootCount = rc + 1;<br>}<br><br>long myFloor&#40;long double x&#41; {<br> if &#40;fabs&#40;x&#41; &#62; 10e3&#41; {<br> 	if &#40;x &#62; 0&#41; {<br>   return 320;<br> 	} else {<br>   return -320;<br> 	}<br> } else {<br> 	long t = floor&#40;x&#41;;<br> 	return t;<br> }<br>}<br><br>void drawFunction&#40;&#41; {<br> int gdriver = DETECT, gmode = VGAHI;<br> long i;<br><br> initgraph&#40;&amp;gdriver, &amp;gmode, &#34;&#34;&#41;;<br> cleardevice&#40;&#41;;<br> line&#40;0, 240, 639, 240&#41;;<br> line&#40;320, 0, 320, 479&#41;;<br> double ratio = min&#40;640/&#40;2 * &#40;abs&#40;roots&#91;1&#93;&#41; + abs&#40;roots&#91;rootCount - 2&#93;&#41; + 1&#41;&#41;, 50&#41;;<br> for &#40;i = 0; i * ratio &#60; 320; i++&#41; {<br> 	line&#40;320 + floor&#40;i * ratio&#41;, 237, 320 + floor&#40;i * ratio&#41;, 242&#41;;<br> 	line&#40;320 - floor&#40;i * ratio&#41;, 237, 320 - floor&#40;i * ratio&#41;, 242&#41;;<br> 	if &#40;ratio &#62; 15&#41; {<br>   char p &#91;10&#93;;<br>   itoa&#40;i, p, 10&#41;;<br>   if &#40;i &#33;= 0&#41; {<br>   	itoa&#40;-i, p, 10&#41;;<br>   	outtextxy&#40;325 - floor&#40;i * ratio&#41;, 243, p&#41;;<br>   }<br>   itoa&#40;i, p, 10&#41;;<br>   outtextxy&#40;325 + floor&#40;i * ratio&#41;, 243, p&#41;;<br> 	}<br> }<br> for &#40;i = 0; i * ratio &#60; 240; i++&#41; {<br> 	line&#40;317, 240 + floor&#40;i * ratio&#41;, 322, 240 + floor&#40;i * ratio&#41;&#41;;<br> 	line&#40;317, 240 - floor&#40;i * ratio&#41;, 322, 240 - floor&#40;i * ratio&#41;&#41;;<br> 	if &#40;ratio &#62; 15&#41; {<br>   char p &#91;10&#93;;<br>   itoa&#40;i, p, 10&#41;;<br>   if &#40;i &#33;= 0&#41; {<br>   	itoa&#40;-i, p, 10&#41;;<br>   	outtextxy&#40;325, 243 + floor&#40;i * ratio&#41;, p&#41;;<br>   }<br>   itoa&#40;i, p, 10&#41;;<br>   outtextxy&#40;325, 243 - floor&#40;i * ratio&#41;, p&#41;;<br> 	}<br> }<br> line&#40;320, 0, 317, 3&#41;;<br> line&#40;320, 0, 323, 3&#41;;<br> line&#40;639, 240, 636, 237&#41;;<br> line&#40;639, 240, 636, 243&#41;;<br> long double dx = 0.01;<br> long double x = &#40;-320/ratio&#41;;<br> moveto&#40;myFloor&#40;320 + x * ratio&#41;, 240 - myFloor&#40;f&#40;0, x&#41; * ratio&#41;&#41;;<br> setcolor&#40;YELLOW&#41;;<br> while &#40;x &#60; 320/ratio&#41; {<br> 	long double fx = f&#40;0, x&#41;;<br> 	int y = 240 - myFloor&#40;fx * ratio&#41;;<br> 	lineto&#40;myFloor&#40;320 +  x * ratio&#41;, y&#41;;<br> 	x += dx;<br> }<br> getch&#40;&#41;;<br> closegraph&#40;&#41;;<br>}<br><br>int main&#40;&#41; {<br> cout &#60;&#60; &#34;Программа решает уравнение N-ой степени.&#092;n&#34;;<br> cout &#60;&#60; &#34;A&#40;n&#41;*X^&#40;n&#41; + A&#40;n-1&#41;*X^&#40;n-1&#41; + .... + A&#40;1&#41;*X + A&#40;0&#41; = 0&#092;n&#34;;<br> do {<br> 	cout &#60;&#60; &#34;Введите N &#40;1 &#60; N &#60; &#34; &#60;&#60; maxN - 1 &#60;&#60; &#34;&#41;&#58; &#34;; cin &#62;&#62; n;<br> } while &#40;&#40;n &#60; 2&#41; || &#40;n &#62; maxN&#41;&#41;;<br> int i;<br> for &#40;i = n; i &#62;= 0; i--&#41; {<br> 	cout &#60;&#60; &#34;Введите A&#34; &#60;&#60; i &#60;&#60; &#34;&#58; &#34;;<br> 	cin &#62;&#62; a&#91;0&#93;&#91;i&#93;.koef;<br> 	a&#91;0&#93;&#91;i&#93;.pow = i;<br> }<br> for &#40;i = 1; i &#60; n; i++&#41; {<br> 	for &#40;int j = n - i; j &#62;= 0; j--&#41; {<br>   a&#91;i&#93;&#91;j&#93;.koef = a&#91;i-1&#93;&#91;j + 1&#93;.koef * &#40;j + 1&#41;;<br>   a&#91;i&#93;&#91;j&#93;.pow = a&#91;i-1&#93;&#91;j+1&#93;.pow - 1;<br> 	}<br> }<br> rootCount = 2;<br> for &#40;i = 0; i &#60; n; i++&#41; {<br> 	findRoots&#40;n - i - 1&#41;;<br> }<br> cout &#60;&#60; &#34;У производной &#34; &#60;&#60; derivRootCount - 2 &#60;&#60; &#34; корней&#58;&#092;n&#34;;<br> for &#40;i = 1; i &#60; derivRootCount - 1; i++&#41; {<br> 	cout.precision&#40;5&#41;;<br> 	cout &#60;&#60; &#34;X = &#34; &#60;&#60; derivRoots&#91;i&#93; &#60;&#60; &#34;&#092;n&#34;;<br> }<br> cout &#60;&#60; rootCount - 2 &#60;&#60; &#34; коней у уравнения&#58;&#092;n&#34;;<br> for &#40;i = 1; i &#60; rootCount - 1; i++&#41; {<br> 	cout &#60;&#60; &#34;X = &#34; &#60;&#60; roots&#91;i&#93; &#60;&#60; &#34;&#092;n&#34;;<br> }<br> getch&#40;&#41;;<br> drawFunction&#40;&#41;;<br> return 0;<br>}<!--c2--></td></tr></table><div class='postcolor'><!--ec2--> ]]></description>
        <author>tserega</author>
        <category>Алгоритмы</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=40801&amp;view=findpost&amp;p=264824</guid>
        <pubDate>Wed, 17 Dec 2003 01:47:17 +0000</pubDate>
        <title>Корни полинома</title>
        <link>https://forum.sources.ru/index.php?showtopic=40801&amp;view=findpost&amp;p=264824</link>
        <description><![CDATA[freeuser: <!--QuoteBegin-Mtr+16.12.03, 23:55--></div><table border='0' align='center' width='95%' cellpadding='3' cellspacing='1'><tr><td><b>Цитата</b> (Mtr @ 16.12.03, 23:55)</td></tr><tr><td id='QUOTE'><!--QuoteEBegin--> Мне нужно находить все корни (в том числе и комплексные) полинома с хотя бы вещественными коэффициентами.<br>Подскажите пожалуйста где взять исходники на C++. <!--QuoteEnd--> </td></tr></table><div class='postcolor'> <!--QuoteEEnd--><br>посмотри<br>может поможет.<br>вроде тоже полином. мать его так :)]]></description>
        <author>freeuser</author>
        <category>Алгоритмы</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=40801&amp;view=findpost&amp;p=264727</guid>
        <pubDate>Tue, 16 Dec 2003 20:55:53 +0000</pubDate>
        <title>Корни полинома</title>
        <link>https://forum.sources.ru/index.php?showtopic=40801&amp;view=findpost&amp;p=264727</link>
        <description><![CDATA[Mtr:  Мне нужно находить все корни (в том числе и комплексные) полинома с хотя бы вещественными коэффициентами.<br>Подскажите пожалуйста где взять исходники на C++. ]]></description>
        <author>Mtr</author>
        <category>Алгоритмы</category>
      </item>
	
      </channel>
      </rss>
	