Метод половинного ділення
#include<stdio.h>
#include<math.h>
double f(double x);
double a,b,E,x;
void main(void)
{
printf("a=");
scanf("%lf",&a);
printf("b=");
scanf("%lf",&b);
printf("E=");
scanf("%lf",&E);
x=(a+b)/2;
while (f(x)!=0)
{
if (f(a)*f(x)>0) a=x;
else b=x;
x=(a+b)/2;
if(fabs(b-a)<=E) break;
}
printf("x=%lf\n",x);
}
double f(double x)
{
return cos(x – 1.1) – 3*x + 2;
}
Метод Ньютона
#include<stdio.h>
#include<math.h>
double f(double x);//ф-я
double f1(double x);//похідна
double f2(double x);//2-а похідна
double x0,x1,a,b,E;
void main(void)
{
printf("a="); scanf("%lf",&a);
printf("b="); scanf("%lf",&b);
printf("E="); scanf("%lf",&E);
x0=a;
if(f(x0)*f2(x0)<=0) x0=b;
x1=x0-f(x0)/f1(x0);
while(fabs(x1-x0)>E)
{
x0=x1;
x1=x0-f(x0)/f1(x0);
}
printf("X1=%lf",x1);
}
double f(double x)
{
return cos(x-1.1)-3*x+2;
}
double f1(double x)
{
return -sin(x-1.1)-3;
}
double f2(double x)
{
return -cos(x-1.1);
}
Метод простої ітерації
#include<stdio.h>
#include<math.h>
double f(double x);
double Xn,Xn1,delta,E;
void main(void)
{
printf("Xn="); scanf("%lf",&Xn);
printf("E="); scanf("%lf",&E);
do
{
delta=f(Xn)-Xn;
Xn=f(Xn);
}
while (delta>=E);
printf("x=%lf",Xn);
}
double f(double x)
{
return (x*x*x+6*x*x+1)/9;
}
Метод хорд
#include<stdio.h>
#include<math.h>
double f(double x);
double a,b,E,R,x;
void main(void)
{
printf("a="); scanf("%lf",&a);
printf("b="); scanf("%lf",&b);
printf("E="); scanf("%lf",&E);//похибка=0.1
R=f(b);
x=a;
do
{
a=x;
x=a-f(a)*(b-a)/(R-f(a));
}
while(fabs(b-a)>E);
printf("X=%lf",x);
}
double f(double x)
{
return cos(x-1.1)-3*x+2;
}
Комбінований метод хорд та дотичних
#include<stdio.h>
#include<math.h>
double f(double x);
double f1(double x);//похідна
double a,b,E,Xn,Xnp,Xn1,Xn1p,Xr;
void main(void)
{
printf("a="); scanf("%lf",&a);
printf("b="); scanf("%lf",&b);
printf("E="); scanf("%lf",&E);
Xn1=a;
Xn1p=b;
do
{
Xnp=Xn1p;
Xn=Xn1;
Xn1p=Xnp-f(Xnp)/f1(Xnp);
Xn1=Xn-f(Xn)*(Xn1p-Xn)/(f(Xn1p)-f(Xn));
}
while(fabs(Xn1p-Xn1)>E);
Xr=(Xn1+Xn1p)/2;
printf("X=%lf",Xr);
}
double f(double x)
{
return cos(x-1.1)-3*x+2;
}
double f1(double x)
{
return -sin(x-1.1)-3;
}
Метод Ейткена-Стефенсена
#include<stdio.h>
#include<math.h>
double f(double x);
double a,E,X0,X1,X2,Xn,delta,l;
void main(void)
{
printf("a="); scanf("%lf",&a);
printf("E="); scanf("%lf",&E);
X0=a;
do
{
l:
X1=f(X0);
X2=f(X1);
if ((X0-2*X1+X2)==0) goto l;
Xn=(X0*X2-X1*X1)/(X0-2*X1+X2);
delta=fabs(Xn-X0);
X0=Xn;
}
while(delta>E);
printf("X=%lf",X0);
}
double f(double x)
{
return (cos(x-1.1)+2)/3;
}
Метод Стефенсона
#include<stdio.h>
#include<math.h>
double f(double x);
double Xn,Xn1,delta,E;
void main(void)
{
printf("Xn="); scanf("%lf",&Xn);
printf("E="); scanf("%lf",&E);
do
{
Xn1=Xn-f(Xn)*f(Xn)/(f(Xn+f(Xn))-f(Xn));
delta=fabs(Xn1-Xn);
Xn=Xn1;
}
while (delta>=E);
printf("x=%lf",Xn);
}
double f(double x)
{
return cos(x-1.1)-3*x+2;
}
Метод Уолла
#include<stdio.h>
#include<math.h>
double f(double x);
double f1(double x);
double f2(double x);
double Xn,Xn1,delta,E;
void main(void)
{
printf("Xn="); scanf("%lf",&Xn);
printf("E="); scanf("%lf",&E);
do
{
Xn1=Xn-f(Xn)/(f1(Xn)-f(Xn)*f2(Xn)/2*f1(Xn));
delta=fabs(Xn1-Xn);
Xn=Xn1;
}
while (delta>=E);
printf("x=%lf",Xn);
}
double f(double x)
{
return cos(x-1.1)-3*x+2;
}
double f1(double x)
{
return -sin(x-1.1)-3;
}
double f2(double x)
{
return -cos(x-1.1);
}