Студопедия Главная Случайная страница Обратная связь

Разделы: Автомобили Астрономия Биология География Дом и сад Другие языки Другое Информатика История Культура Литература Логика Математика Медицина Металлургия Механика Образование Охрана труда Педагогика Политика Право Психология Религия Риторика Социология Спорт Строительство Технология Туризм Физика Философия Финансы Химия Черчение Экология Экономика Электроника

Программы для решения нелинейных уравнений





 

Текст заголовочного файла methods.h.

/*******************************************************************/

extern double F(double);

/******************************************************************/

/* Ôóíêöèÿ F (X), çàäàâàåìàÿ ïîëüçîâàòåëåì */

/******************************************************************/

 

#ifdef __NEWTON

extern double F1(double);

/******************************************************************/

/* Ïðîèçâîäíàÿ ôóíêöèè F (X), çàäàâàåìàÿ ïîëüçîâàòåëåì */

/******************************************************************/

#endif

 

double Round (double X,double Delta);

/******************************************************************/

/* Ôóíêöèÿ Round (X,Delta), ïðåäíàçíà÷åíà äëÿ îêðóãëåíèÿ */

/* X ñ òî÷íîñòüþ Delta */

/******************************************************************/

 

double BISECT(double Left,double Right,double Eps,int &N);

/******************************************************************/

/* Ôóíêöèÿ BISECT ïðåäíàçíà÷åíà äëÿ ðåøåíèÿ óðàâíåíèÿ F(X)=0 */

/* ìåòîäîì äåëåíèÿ îòðåçêà ïîïîëàì. Èñïîëüçîâàíû îáîçíà÷åíèÿ: */

/* Left - ëåâûé êîíåö ïðîìåæóòêà */

/* Right - ïðàâûé êîíåö ïðîìåæóòêà */

/* Eps - ïîãðåøíîñòü âû÷èñëåíèÿ êîðíÿ óðàâíåíèÿ; */

/* N - ÷èñëî èòåðàöèé */

/******************************************************************/

 

double ITER(double X0,double Eps,int &N);

/******************************************************************/

/* Ôóíêöèÿ ITER ïðåäíàçíà÷åíà äëÿ ðåøåíèÿ óðàâíåíèÿ F(X)=X */

/* ìåòîäîì ïðîñòîé èòåðàöèè. Èñïîëüçîâàíû îáîçíà÷åíèÿ: */

/* X0 - íà÷àëüíîå ïðèáëèæåíèå êîðíÿ */

/* Eps - ïîãðåøíîñòü âû÷èñëåíèÿ êîðíÿ óðàâíåíèÿ; */

/* N - ÷èñëî èòåðàöèé */

/******************************************************************/

 

double HORDA(double Left,double Right,double Eps,int &N);

/******************************************************************/

/* Ôóíêöèÿ HORDA ïðåäíàçíà÷åíà äëÿ ðåøåíèÿ óðàâíåíèÿ F(x)=0 */

/* ìåòîäîì õîðä. Èñïîëüçîâàíû îáîçíà÷åíèÿ: */

/* Left - ëåâûé êîíåö ïðîìåæóòêà */

/* Right - ïðàâûé êîíåö ïðîìåæóòêà */

/* Eps - ïîãðåøíîñòü âû÷èñëåíèÿ êîðíÿ óðàâíåíèÿ; */

/* N - ÷èñëî èòåðàöèé */

/******************************************************************/

 

double NEWTON (double X,double Eps,int &N);

/******************************************************************/

/* Ôóíêöèÿ NEWTON ïðåäíàçíà÷åíà äëÿ ðåøåíèÿ óðàâíåíèÿ F(X)=0 */

/* ìåòîäîì êàñàòåëüíûõ. Èñïîëüçîâàíû îáîçíà÷åíèÿ: */

/* X - íà÷àëüíîå ïðèáëèæåíèå êîðíÿ */

/* Eps - ïîãðåøíîñòü âû÷èñëåíèÿ êîðíÿ óðàâíåíèÿ; */

/* N - ÷èñëî èòåðàöèé */

/******************************************************************/

 

#include "methods.cpp"

/************************************************************************/

 

Текст программного модуля methods.cpp.

 

/*********************************************/

#include <stdio.h>

#include <math.h>

#include <stdlib.h>

extern double F(double);

double BISECT(double Left,double Right,double Eps,int &N)

{

double E = fabs(Eps)*2.0;

double FLeft = F(Left);

double FRight = F(Right);

double X = (Left+Right)/2.0;

double Y;

if (FLeft*FRight>0.0) {puts("Íåâåðíîå çàäàíèå èíòåðâàëà\n");exit(1);}

if (Eps<=0.0) {puts("Íåâåðíîå çàäàíèå òî÷íîñòè\n");exit(1);}

N=0;

if (FLeft==0.0) return Left;

if (FRight==0.0) return Right;

while ((Right-Left)>=E)

{

X = 0.5*(Right + Left); /* âû÷èñëåíèå ñåðåäèíû îòðåçêà */

Y = F(X);

if (Y == 0.0) return (X);

if (Y*FLeft < 0.0)

Right=X;

else

{ Left=X; FLeft=Y; }

N++;

};

return(X);

}

double Round (double X,double Delta)

{

if (Delta<=1E-9) {puts("Íåâåðíîå çàäàíèå òî÷íîñòè îêðóãëåíèÿ\n");exit(1);}

if (X>0.0) return (Delta*(long((X/Delta)+0.5)));

else return (Delta*(long((X/Delta)-0.5)));

}

double ITER(double X0,double Eps,int &N)

{

if (Eps<=0.0) {puts("Íåâåðíîå çàäàíèå òî÷íîñòè\n");exit (1);}

double X1=F(X0);

double X2=F(X1);

N = 2;

while((X1 - X2)*(X1 - X2) > fabs((2*X1-X0-X2)*Eps))

{

X0 = X1;

X1 = X2;

X2 = F(X1);

N++;

}

return(X2);

}

#ifdef __NEWTON

double NEWTON (double X,double Eps,int &N)

{

extern double F1 (double);

double Y,Y1,DX;

N=0;

do

{

Y = F(X);

if (Y==0.0) return (X);

Y1 = F1(X);

if (Y1==0.0) {puts("Ïðîèçâîäíàÿ îáðàòèëàñü â íîëü\n");exit(1);}

DX=Y/Y1; X=X-DX; N++;

}

while (fabs(DX)>Eps);

return (X);

}

#endif

double HORDA(double Left,double Right,double Eps,int &N)

{

double FLeft = F(Left);

double FRight = F(Right);

double X,Y;

if (FLeft*FRight>0.0) {puts("Íåâåðíîå çàäàíèå èíòåðâàëà\n");exit(1);}

if (Eps<=0.0) {puts("Íåâåðíîå çàäàíèå òî÷íîñòè\n");exit(1);}

N=0;

if (FLeft==0.0) return Left;

if (FRight==0.0) return Right;

do

{

X = Left-(Right-Left)*FLeft/(FRight-FLeft);

Y = F(X);

if (Y == 0.0) return (X);

if (Y*FLeft < 0.0)

{ Right=X; FRight=Y; }

else

{ Left=X; FLeft=Y; }

N++;

}

while (fabs(Y) >= Eps);

return(X);

}

/*********************************************************/







Дата добавления: 2015-09-19; просмотров: 417. Нарушение авторских прав; Мы поможем в написании вашей работы!




Вычисление основной дактилоскопической формулы Вычислением основной дактоформулы обычно занимается следователь. Для этого все десять пальцев разбиваются на пять пар...


Расчетные и графические задания Равновесный объем - это объем, определяемый равенством спроса и предложения...


Кардиналистский и ординалистский подходы Кардиналистский (количественный подход) к анализу полезности основан на представлении о возможности измерения различных благ в условных единицах полезности...


Обзор компонентов Multisim Компоненты – это основа любой схемы, это все элементы, из которых она состоит. Multisim оперирует с двумя категориями...

ЛЕКАРСТВЕННЫЕ ФОРМЫ ДЛЯ ИНЪЕКЦИЙ К лекарственным формам для инъекций относятся водные, спиртовые и масляные растворы, суспензии, эмульсии, ново­галеновые препараты, жидкие органопрепараты и жидкие экс­тракты, а также порошки и таблетки для имплантации...

Тема 5. Организационная структура управления гостиницей 1. Виды организационно – управленческих структур. 2. Организационно – управленческая структура современного ТГК...

Методы прогнозирования национальной экономики, их особенности, классификация В настоящее время по оценке специалистов насчитывается свыше 150 различных методов прогнозирования, но на практике, в качестве основных используется около 20 методов...

Различие эмпиризма и рационализма Родоначальником эмпиризма стал английский философ Ф. Бэкон. Основной тезис эмпиризма гласит: в разуме нет ничего такого...

Индекс гингивита (PMA) (Schour, Massler, 1948) Для оценки тяжести гингивита (а в последующем и ре­гистрации динамики процесса) используют папиллярно-маргинально-альвеолярный индекс (РМА)...

Методика исследования периферических лимфатических узлов. Исследование периферических лимфатических узлов производится с помощью осмотра и пальпации...

Studopedia.info - Студопедия - 2014-2025 год . (0.009 сек.) русская версия | украинская версия