Студопедия — Программы для решения нелинейных уравнений
Студопедия Главная Случайная страница Обратная связь

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

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






 

Текст заголовочного файла 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; просмотров: 395. Нарушение авторских прав; Мы поможем в написании вашей работы!



Шрифт зодчего Шрифт зодчего состоит из прописных (заглавных), строчных букв и цифр...

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

Практические расчеты на срез и смятие При изучении темы обратите внимание на основные расчетные предпосылки и условности расчета...

Функция спроса населения на данный товар Функция спроса населения на данный товар: Qd=7-Р. Функция предложения: Qs= -5+2Р,где...

Определение трудоемкости работ и затрат машинного времени На основании ведомости объемов работ по объекту и норм времени ГЭСН составляется ведомость подсчёта трудоёмкости, затрат машинного времени, потребности в конструкциях, изделиях и материалах (табл...

Гидравлический расчёт трубопроводов Пример 3.4. Вентиляционная труба d=0,1м (100 мм) имеет длину l=100 м. Определить давление, которое должен развивать вентилятор, если расход воздуха, подаваемый по трубе, . Давление на выходе . Местных сопротивлений по пути не имеется. Температура...

Огоньки» в основной период В основной период смены могут проводиться три вида «огоньков»: «огонек-анализ», тематический «огонек» и «конфликтный» огонек...

Понятие массовых мероприятий, их виды Под массовыми мероприятиями следует понимать совокупность действий или явлений социальной жизни с участием большого количества граждан...

Тактика действий нарядов полиции по предупреждению и пресечению правонарушений при проведении массовых мероприятий К особенностям проведения массовых мероприятий и факторам, влияющим на охрану общественного порядка и обеспечение общественной безопасности, можно отнести значительное количество субъектов, принимающих участие в их подготовке и проведении...

Тактические действия нарядов полиции по предупреждению и пресечению групповых нарушений общественного порядка и массовых беспорядков В целях предупреждения разрастания групповых нарушений общественного порядка (далееГНОП) в массовые беспорядки подразделения (наряды) полиции осуществляют следующие мероприятия...

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