Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Скачиваний:
8
Добавлен:
17.04.2015
Размер:
16.38 Кб
Скачать

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

#include <stdio.h>

#include <stdlib.h>

float f(float x)

{return (x*x-7*x+10);}

int sig(float x)

{return (x>0)? 1:-1;}

float abc(float x)

{return (x>0)? x:-x;}

int main()

{

float a,b,c,e, fa,fb,fc;

a=0;

b=2;

e=0.001;

do {

fa=f(a);

fb=f(b);

c=(b+a)/2;

if (sig(f(c))==sig(fa)) a=c; else b=c;}

while (abc(b-a)>e);

c=(b+a)/2;

printf(" \n root= %f \n",c);

system("pause");

return 0;

}

// ïðè a=0 b=2 root=1,999512

//

//ïðè a=2 b=7 root=5,000183

//

//

Вычисление корней уравнения методом хорд.

#include <stdio.h>

#include <stdlib.h>

float f(float x)

{return (x*x-7*x+10);}

int sig(float x)

{return (x>0)? 1:-1;}

float abc(float x)

{return (x>0)? x:-x;}

int main()

{

float a,b,c,e, fa,fb,fc;

a=0;

b=2;

e=0.001;

do {

fa=f(a);

fb=f(b);

c= a-fa/(fb-fa)*(b-a);

fc=f(c);

if (sig(fc)==sig(fa)){ a=c;fa=fc;}

else {b=c;fb=fc;}}

while (abc(b-a)>e);

printf(" \n root= %f \n",c);

system("pause");

return 0;

}

//a=0 b=2 root=1,999512

//

// a=2 b=7 root=5,000183

//

//

//Вычисление корня методом итераций

// РЕШЕНИЕ

// Дана функция f(x). Вычислить с точностью до e=0,001.

// Пусть дано приближение Х0

// Выразим x=fi(x)

// 1. Положим Xn=fi(Xn-1)

// 2. Eсли (Xn-Xn-1)>e то 1.

#include <stdio.h>

#include <stdlib.h>

float f(float x)

{return (x*x-7*x+10);}

int sig(float x)

{return (x>0)? 1:-1;}

float abc(float x)

{return (x>0)? x:-x;}

float fi(float x)

{return (10+x*x)/7;}

int main()

{

float a,c,e,x1,x;

a=0;

e=0.001;

x=a;

do {

x1= fi(x);

c=x;

x=x1;}

while(abc(c-x)>e);

printf(" \n root= %f \n",x);

system("pause");

return 0;

}

// при a=0 root=1,999512

//Вычисление корня методом Ньютона- касательных.

// РЕШЕНИЕ

// Дана функция y=f(x).Y=0. Вычислить корень с точностью до e=0,001.

// На интервале a, b есть корень.

// 1. X k+1 = Xk- f(Xk)/f1(Xk)

// 2. если abs (Xk+1-Xk)<e то выходим из цикла

#include <stdio.h>

#include <stdlib.h>

#include <math.h>

float f(float x)

{return (x*x-7*x+10);}

float fi(float x)

{return (x*x+10)/7;}

float f1(float x)

{return 2*x-7;}

float abc(float x)

{return (x>0)? x:-x;}

int main()

{

float xk,xk1,e;

xk1=1;

e=0.001;

do { xk=xk1;

xk1=xk - f(xk)/f1(xk) ;}

while (fabs(xk1-xk)>e);

printf(" \n root= %f \n",xk1);

system("pause");

return 0;

}

// при Xk=1 root=2,000000

// при Xk=6 root=5.000000