Решение нелинейного уравнения с одной неизвестной. Методы отделения и уточнения корней. 


Мы поможем в написании ваших работ!



ЗНАЕТЕ ЛИ ВЫ?

Решение нелинейного уравнения с одной неизвестной. Методы отделения и уточнения корней.



ЛАБОРАТОРНАЯ РАБОТА №1

Решение нелинейного уравнения с одной неизвестной. Методы отделения и уточнения корней.

Постановка задачи. Для данного нелинейного уравнения y(x)=0 с одной неизвестной величиной на промежутке [a,b] отделить корни с шагом h (Шаговым методом)и уточнить корень с точностью ε:

  • методом половинного деления
  • методом Ньютона
  • методом простой итерации

Идея метода

Название метода Выбор начального значения Итерационная формула Окончание процесса вычисления
Шаговый метод x=a y=f(x) – значение функция в точке x x1=x+h – следующее значение переменной x y1=f(x1) - значение функция в точке x1 y*y1<0 - признак интервала изоляции x1<=b
Метод половинного деления [a,b] – интервал изоляции x=(a+b)/2 – середина интервала f(a) – значение функции в точке a f(x) – значение функции в точке x если f(a)*f(x)<0, то выбираем [a,x] если f(a)*f(x)>0, то выбираем [x,b] |f(x)|<ε
Метод Ньютона x0 = a или x0 = b f2(x)- вторая производная функции f(x) f(x0)*f2(x0)>0 f1(x) – первая производная функции f(x) xi+1 = xi - f(xi)/f1(xi) |f(xi)|<ε
Метод простой итерации (1 способ) привести уравнение к виду x= φ(x) x0 = a или x0 = b |φ(a)|<1 |φ(b)|<1 если |φ(a)| > |φ(b)|, то x0=a если |φ(a)| < |φ(b)|, то x0=b xi+1= φ(xi) |f(xi)|<ε
Метод простой итерации (2 способ) f1(x) – первая производная функции f(x) если |f1(a)| > |f1(b)|, то x0=a если |f1(a)| < |f1(b)|, то x0=b с=1/max(|f1(a)|;|f1(b)|) xi+1 = xi – c*f(xi) |f(xi)|<ε

Шаговый метод .

Постановка задачи: шаговым методом найти интервал изоляции корня нелинейного уравнения ln(x) - 2·x + 2,5 = 0 на интервале [1; 2], шаг h = 0,1.

Программа на языке CИ #include <iostream.h> #include <iomanip.h> #include <math.h>   double F (double x) { return (log(x)-2*x+2.5);}   int main() { double a,b,x0,x1,h; int N;   cout<<"Vvedite a b"<<endl; cin>>a>>b; cout<<"Vvedite chislo razbien"<<endl; cin>>N;   h=(b-a)/N;   cout.precision(5); cout.setf(ios::left);   cout<<"_____________________________________"<<endl;   cout<<setw(12)<<"x"<<setw(12)<<"F(x)"<<endl;   cout<<"_____________________________________"<<endl;   x0=a; cout<<setw(12)<<x0<<setw(12)<<F(x0)<<endl;   while(x1<=b) { x1=x0+h; cout<<setw(12)<<x1<<setw(12)<<F(x1)<<endl;   if(F(x0)*F(x1)<0) cout<<"na interv ["<<x0<<","<<x1<<"] est koren"<<endl;   x0=x1; }   return 0;}

Метод половинного деления

Постановка задачи: найти корень нелинейного уравнения

ln(x) - 2·x + 2.5 =0

на отрезке [1; 2] методом половинного деления с точностью е = 0,001.

 

Программа на языке CИ #include <iostream.h> #include <iomanip.h> #include <math.h>   double F (double x) { return (log(x)-2*x+2.5);}   int main() { double a,b,x,eps; int k=0;   cout<<"Vvedite a b"<<endl; cin>>a>>b; cout<<"Vvedite tochnost"<<endl; cin>>eps;   cout.precision(5); cout.setf(ios::left);   cout<<"___________________________"<<endl;   cout<<setw(12)<<"a"<<setw(12)<<"x"<<setw(12)<<"b" <<setw(12)<<"F(a)"<<setw(12)<<"F(x)"<<setw(12)<< "F(b)"<<endl;   cout<<"___________________________"<<endl;   while(fabs(a-b)>eps) {x=(a+b)/2; cout<<setw(12)<<a<<setw(12)<<x<<setw(12)<<b <<setw(12)<<F(a)<<setw(12)<<F(x)<<setw(12)<< F(b)<<endl; if(F(a)*F(x)<0) b=x; else a=x; k++; }   cout<<endl<<"koren="<<x<<" F("<<x<<")="<<F(x); cout<<endl<<"max chislo iter"<<k;   return 0;}

Метод Ньютона

Постановка задачи: найти корень нелинейного уравнения

ln(x) - 2·x + 2,5 = 0

на отрезке [1; 2 ] методом Ньютона с точностью е = 0,001.

 

Программа на языке CИ   #include <iostream.h> #include <iomanip.h> #include <math.h>   double F (double x) { return (log(x)-2*x+2.5);}   double F1 (double x) { return (1/x-2);}   int main() { double x0,x1,eps; int k=0;   cout<<"Vvedite nachal znach"<<endl; cin>>x0; cout<<"Vvedite tochnost"<<endl; cin>>eps;     cout.precision(5); cout.setf(ios::left);   cout<<"______________________________"<<endl;   cout<<setw(12)<<"x0"<<setw(12)<<"F(x0)"<<setw(12) <<"x1"<<setw(12)<<"F(x1)"<<endl;     cout<<"______________________________"<<endl;   while(fabs(F(x0))>eps) { x1=x0-F(x0)/F1(x0);   cout<<setw(12)<<x0<<setw(12)<<F(x0)<<setw(12) <<x1<<setw(12)<<F(x1)<<endl; x0=x1; k++; }   cout<<endl<<"koren="<<x1<<" F("<<x1<<")="<<F(x1)<<endl; cout<<"vipolneno iter"<<k; return 0;}

Метод простой итерации

Постановка задачи: найти корень нелинейного уравнения

ln(x) - 2·x + 2,5 = 0

на отрезке [1; 2 ] методом Ньютона с точностью е = 0,001.

 

Программа на языке CИ #include <iostream.h> #include <iomanip.h> #include <math.h>   double F (double x) { return (log(x)-2*x+2.5);} double S (double x) { return ((log(x)+2.5/2);} int main() { double x0,x1,eps; int k,kmax;   cout<<"Vvedite nachal znach"<<endl; cin>>x0;   cout<<"Vvedite tochnost"<<endl; cin>>eps; cout<<"Vvedite max chislo iter"<<endl; cin>>kmax; cout.precision(5); cout.setf(ios::left); cout<<"______________________________"<<endl; cout<<setw(12)<<"x0"<<setw(12)<<"F(x0)"<<setw(12)<< "x1"<<setw(12)<<"F(x1)"<<endl; cout<<"_______________________________"<<endl; k=0; while(fabs(F(x0))>eps) { x1=S(x0); cout<<setw(12)<<x0<<setw(12)<<F(x0)<<setw(12)<<x1 <<setw(12)<<F(x1)<<endl; if(k>kmax) {cout<<"vipolneno max iter"<<endl; break;} x0=x1; k++; } cout<<endl<<"koren="<<x1<<" F("<<x1<<")="<<F(x1); cout<<endl<<"chislo iter"<<k; return 0;}

Лабораторная работа №2

Метод Гаусса

Постановка задачи: Дана система линейных уравнений

A11*x1+A12*x2+A13*x3+A14*x4=B1

A21*x1+A22*x2+A23*x3+A24*x4=B2

A31*x1+A32*x2+A33*x3+A34*x4=B3

A41*x1+A42*x2+A43*x3+A44*x4=B4

найти точное решение методом Гаусса.

Запись системы линейных уравнений в матричном виде

 

Программа на языке CИ #include <iostream> #include <cmath> #include <iomanip> using namespace std; int main() { double a[4][4]={{5,1,1,1},{1,7,1,1},{1,1,6,1},{1,1,1,4}}; double b[4]={8,10,9,7}; double x[4]; int n,k,i,j;   n=4; double c,s; for(k=0;k<n-1;k++) for(i=k+1;i<n;i++) { c=a[i][k]/a[k][k]; a[i][k]=0;   for(j=k+1;j<n;j++) a[i][j]=a[i][j]-c*a[k][j];   b[i]=b[i]-c*b[k]; }   x[n-1]=b[n-1]/a[n-1][n-1];   for (i=n-1;i>=0;i--) { s=0; for(j=i+1;j<n;j++) {s=s+a[i][j]*x[j]; x[i]=(b[i]-s)/a[i][i]; } } cout<<"reshenie"<<endl; for (i=0;i<n;i++) cout<<x[i]; return 0;}  

 

Метод простой итерации. Постановка задачи: Дана система линейных уравнений. Найти приближённое решение с точностью е. Программа на языке CИ #include <iostream> #include <cmath> #include <iomanip> using namespace std; int main() { double A[4][4]={{5,1,1,1},{1,7,1,1},{1,1,6,1},{1,1,1,4}}; double B[4]={8,10,9,7}; double X0[4],X1[4]; double eps,tochnost,max_tochnost,s; int k,kmax,i,j; cout<<"Vvedite tochnost"<<endl; cin>>eps; cout<<"Vvedite max chislo iter"<<endl; cin>>kmax; cout.precision(5); cout.setf(ios::left); for(i=0;i<4;i++) X0[i]=0; k=0; while(fabs(max_tochnost)>eps) { if(k>=kmax) break; k=k+1; cout<<setw(5)<<k; max_tochnost=-100; for(i=0;i<4;i++) {s=0; for(j=0;j<4;j++) if(i!=j) s=s+A[i][j]*X0[j]; X1[i]=(B[i]-s)/A[i][i]; cout<<setw(10)<<X1[i]; tochnost=fabs(X1[i]-X0[i]); if(tochnost>max_tochnost) max_tochnost=tochnost; } cout<<endl; for(i=0;i<4;i++) X0[i]=X1[i]; } cout<<endl; cout<<"Otvet"<<endl; for(i=0;i<4;i++) cout<<setw(10)<<X1[i]; cout<<endl; cout<<"Chislo iter="<<k; return 0;}  
Метод Зейделя. Постановка задачи: Дана система линейных уравнений. Найти приближённое решение с точностью е. Программа на языке CИ #include <iostream> #include <cmath> #include <iomanip> using namespace std; int main() { double A[4][4]={{5,1,1,1},{1,7,1,1},{1,1,6,1},{1,1,1,4}}; double B[4]={8,10,9,7}; double X0[4],X1[4]; double eps,tochnost,max_tochnost,s; int k,kmax,i,j; cout<<"Vvedite tochnost"<<endl; cin>>eps; cout<<"Vvedite max chislo iter"<<endl; cin>>kmax; cout.precision(5); cout.setf(ios::left); for(i=0;i<4;i++) X0[i]=0; k=0; while(fabs(max_tochnost)>eps) { if(k>=kmax) break; k=k+1; cout<<setw(5)<<k; max_tochnost=-100; for(i=0;i<4;i++) {s=0; for(j=0;j<4;j++) if(i!=j) s=s+A[i][j]*X0[j]; X1[i]=(B[i]-s)/A[i][i]; cout<<setw(10)<<X1[i]; tochnost=fabs(X1[i]-X0[i]); if(tochnost>max_tochnost) max_tochnost=tochnost; X0[i]=X1[i]; } cout<<endl; } cout<<endl; cout<<"Otvet"<<endl; for(i=0;i<4;i++) cout<<setw(10)<<X1[i]; cout<<endl; cout<<"Chislo iter="<<k; return 0;}  
       

Лабораторная работа №3

Метод наименьших квадратов

Название метода Система для нахождения коэффициентов полинома Ответ
Метод наименьших квадратов (аппроксимация) полином 1 степени полином 2 степени P1(x)=a0+a1*x     P2(x)=a0+a1*x+a2*x2

Программа на языке СИ

#include <iostream.h> #include <iomanip.h> #include <math.h> void gauss(double **c, int n) { int i,j; cout.precision(3); int k; for (k=0; k<n; k++){ for (j=n; j>=k; j--) c[k][j]/=c[k][k]; for (i=k+1; i<n; i++) for (j=n; j>=k; j--) c[i][j]-=c[k][j]*c[i][k]; } double *a; a=new double[n*sizeof(double)]; //Обратный ход for (i=0; i<n; i++) a[i]=c[i][n]; for (i=n-2; i>=0; i--) for (j=i+1; j<n; j++) a[i]-=a[j]*(c[i][j]); //Печать результата cout<<"Koeff\n"; for (j=0; j<n; j++) cout<<"a"<<j<<"="<<a[j]<<endl; delete[] a; } void vvod(double *a, int n) { for(int i=0;i<n;i++) cin>>a[i]; } int main() { int n,i,j; cout<<"kol-vo tochek"<<endl; cin>>n; double **c; double *x, *y; x= new double[n]; cout<<"vvod x"<<endl; vvod(x,n); y= new double[n]; cout<<"vvod y"<<endl; vvod(y,n); cout<<endl<<"prover'te koord tochek"<<endl; for(i=0;i<n;i++) cout<<"("<<x[i]<<","<<y[i]<<")"<<endl; int m; cout<<"stepen polinoma m"<<endl; cin>>m; m=m+1; //esli m=1, to yr-ya 2 c= new double *[m]; for(i=0;i<m;i++) c[i]=new double[m]; int k; double s; for(i=0;i<m;i++) for(j=0;j<m;j++){ s=0; for(k=0;k<n;k++) { s=s+pow(x[k],(i+j));} c[i][j]=s;} for(i=0;i<m;i++){s=0; for(k=0;k<n;k++) { s=s+y[k]*pow(x[k],i);} c[i][m]=s;} cout<<"Matritsa C+Y"<<endl; for(i=0;i<m;i++) {for(j=0;j<m+1;j++) cout<<setw(5)<<c[i][j]<<" "; cout<<endl; } cout<<endl; gauss(c,m); delete[] x; delete[] y; // for(i=0;i<n;i++) // delete c[i]; delete[] c; cin.get(); cin.get(); return 0;}

Программа на языке СИ

#include <iostream.h> #include <iomanip.h> #include <math.h>     void gauss(double **c, int n) { int i,j;     cout.precision(3);   int k;   for (k=0; k<n; k++){ for (j=n; j>=k; j--) c[k][j]/=c[k][k]; for (i=k+1; i<n; i++) for (j=n; j>=k; j--) c[i][j]-=c[k][j]*c[i][k]; }   double *a; a=new double[n*sizeof(double)];   //Обратный ход for (i=0; i<n; i++) a[i]=c[i][n];     for (i=n-2; i>=0; i--) for (j=i+1; j<n; j++) a[i]-=a[j]*(c[i][j]);     //Печать результата cout<<"Koeff\n"; for (j=0; j<n; j++) cout<<"a"<<j<<"="<<a[j]<<endl;   delete[] a;   }     void vvod(double *a, int n) { for(int i=0;i<n;i++) cin>>a[i]; }   int main()     { int n,i,j; cout<<"kol-vo tochek"<<endl; cin>>n; double **c; double *x, *y;     x= new double[n*sizeof(double)];   cout<<"vvod x"<<endl; vvod(x,n);     y= new double[n*sizeof(double)];   cout<<"vvod y"<<endl; vvod(y,n);   cout<<endl<<"prover'te koord tochek"<<endl;   for(i=0;i<n;i++) cout<<"("<<x[i]<<","<<y[i]<<")"<<endl;   c= new double *[n]; for(i=0;i<n;i++) c[i]=new double[n];     for(i=0;i<n;i++) { for(j=0;j<n;j++) c[i][j]=pow(x[i],j); c[i][n]=y[i]; }   cout<<"Matritsa C+Y"<<endl; for(i=0;i<n;i++) {for(j=0;j<n+1;j++) cout<<setw(7)<<c[i][j]; cout<<endl;} cout<<endl;   gauss(c,n);   delete[] x; delete[] y;   // for(i=0;i<n;i++) // delete c[i];   delete[] c; cin.get(); cin.get();   return 0; }

 

 

Лабораторная работа №4

Метод трапеций

Программа на языке СИ   #include <iostream.h> #include <math.h> double F(double x) {return(x);}   int main() {double I0,I1,h,eps,a,b,x; int n,j;   cout<<"Vvefite a i b"<<endl; cin>>a>>b;   cout<<"Vvedite cislo razbieniy [a,b]"<<endl; cin>>n;   cout<<"Vvedite tochnost"<<endl; cin>>eps;   I0=1E+10; I1=0; while(fabs(I1-I0)>eps) { h=(b-a)/n; I1=0; for(j=1;j<n;j++) {x=a+j*h; I1=I1+F(x)*h; } I1=I1+h*(F(a)+F(b))/2; n=2*n; I0=I1;} cout<<"Otvet I="<<I1<<endl; return 0;}  

Метод Симпсона.

Программа на языке СИ #include <iostream.h> #include <math.h> double F(double x) {return(x);}   int main() {double I0,I1,S1,S2,h,eps,a,b,x; int n,j;   cout<<"Vvefite a i b"<<endl; cin>>a>>b;   cout<<"Vvedite cislo razbieniy [a,b]"<<endl; cin>>n;     cout<<"Vvedite tochnost"<<endl; cin>>eps;   I0=1E+10; I1=0; while(fabs(I1-I0)>eps) { h=(b-a)/n; S1=0; for(j=1;j<=n-1;j+2) {x=a+j*h; S1=S1+F(x); } S2=0; for(j=2;j<n;j+2) {x=a+j*h; S2=S2+F(x); }   I1=(h/6)*(F(a)+F(b)+2*S1+4*S2); n=2*n; I0=I1;} cout<<"Otvet I="<<I1<<endl; return 0;}

Лабораторная работа №5

Содержание

 

Решение нелинейного уравнения с одной неизвестной. Методы отделения и уточнения корней. 3

Шаговый метод. 4

Метод половинного деления. 5

Метод Ньютона. 6

Метод простой итерации. 7

Решение систем линейных уравнений. Прямые и итерационные методы. 8

Метод Гаусса. 8

Метод простой итерации. 10

Метод Зейделя. 10

Аппроксимация и Интерполяции. 12

Метод наименьших квадратов. 12

Метод неопределённых коэффициентов. 14

Вычисление определённого интеграла. 17

Метод центральных прямоугольников. 18

Метод трапеций. 19

Метод Симпсона. 20

Обыкновенные дифференциальные уравнения. Численное решение задач с начальными условиями Коши. 21

Метод Эйлера. 22

Модифицированный метод Эйлера. 23

Модифицированный метод Эйлера. 235

Литература

1.Павловская Т.А. C/C++Программирование на языке высокого уровня: Учебник для вузов/ Павловская Т.А СПб. Изд.-во «Питер», 2007.

2. Павловская Т.А. C/C++Структурное программирование:практикум./: Павловская Т.А, Ю.В.Щупак СПб.: Изд.-во «Питер», 2007.

ЛАБОРАТОРНАЯ РАБОТА №1

Решение нелинейного уравнения с одной неизвестной. Методы отделения и уточнения корней.

Постановка задачи. Для данного нелинейного уравнения y(x)=0 с одной неизвестной величиной на промежутке [a,b] отделить корни с шагом h (Шаговым методом)и уточнить корень с точностью ε:

  • методом половинного деления
  • методом Ньютона
  • методом простой итерации

Идея метода

Название метода Выбор начального значения Итерационная формула Окончание процесса вычисления
Шаговый метод x=a y=f(x) – значение функция в точке x x1=x+h – следующее значение переменной x y1=f(x1) - значение функция в точке x1 y*y1<0 - признак интервала изоляции x1<=b
Метод половинного деления [a,b] – интервал изоляции x=(a+b)/2 – середина интервала f(a) – значение функции в точке a f(x) – значение функции в точке x если f(a)*f(x)<0, то выбираем [a,x] если f(a)*f(x)>0, то выбираем [x,b] |f(x)|<ε
Метод Ньютона x0 = a или x0 = b f2(x)- вторая производная функции f(x) f(x0)*f2(x0)>0 f1(x) – первая производная функции f(x) xi+1 = xi - f(xi)/f1(xi) |f(xi)|<ε
Метод простой итерации (1 способ) привести уравнение к виду x= φ(x) x0 = a или x0 = b |φ(a)|<1 |φ(b)|<1 если |φ(a)| > |φ(b)|, то x0=a если |φ(a)| < |φ(b)|, то x0=b xi+1= φ(xi) |f(xi)|<ε
Метод простой итерации (2 способ) f1(x) – первая производная функции f(x) если |f1(a)| > |f1(b)|, то x0=a если |f1(a)| < |f1(b)|, то x0=b с=1/max(|f1(a)|;|f1(b)|) xi+1 = xi – c*f(xi) |f(xi)|<ε

Шаговый метод .

Постановка задачи: шаговым методом найти интервал изоляции корня нелинейного уравнения ln(x) - 2·x + 2,5 = 0 на интервале [1; 2], шаг h = 0,1.

Программа на языке CИ #include <iostream.h> #include <iomanip.h> #include <math.h>   double F (double x) { return (log(x)-2*x+2.5);}   int main() { double a,b,x0,x1,h; int N;   cout<<"Vvedite a b"<<endl; cin>>a>>b; cout<<"Vvedite chislo razbien"<<endl; cin>>N;   h=(b-a)/N;   cout.precision(5); cout.setf(ios::left);   cout<<"_____________________________________"<<endl;   cout<<setw(12)<<"x"<<setw(12)<<"F(x)"<<endl;   cout<<"_____________________________________"<<endl;   x0=a; cout<<setw(12)<<x0<<setw(12)<<F(x0)<<endl;   while(x1<=b) { x1=x0+h; cout<<setw(12)<<x1<<setw(12)<<F(x1)<<endl;   if(F(x0)*F(x1)<0) cout<<"na interv ["<<x0<<","<<x1<<"] est koren"<<endl;   x0=x1; }   return 0;}

Метод половинного деления

Постановка задачи: найти корень нелинейного уравнения

ln(x) - 2·x + 2.5 =0

на отрезке [1; 2] методом половинного деления с точностью е = 0,001.

 

Программа на языке CИ #include <iostream.h> #include <iomanip.h> #include <math.h>   double F (double x) { return (log(x)-2*x+2.5);}   int main() { double a,b,x,eps; int k=0;   cout<<"Vvedite a b"<<endl; cin>>a>>b; cout<<"Vvedite tochnost"<<endl; cin>>eps;   cout.precision(5); cout.setf(ios::left);   cout<<"___________________________"<<endl;   cout<<setw(12)<<"a"<<setw(12)<<"x"<<setw(12)<<"b" <<setw(12)<<"F(a)"<<setw(12)<<"F(x)"<<setw(12)<< "F(b)"<<endl;   cout<<"___________________________"<<endl;   while(fabs(a-b)>eps) {x=(a+b)/2; cout<<setw(12)<<a<<setw(12)<<x<<setw(12)<<b <<setw(12)<<F(a)<<setw(12)<<F(x)<<setw(12)<< F(b)<<endl; if(F(a)*F(x)<0) b=x; else a=x; k++; }   cout<<endl<<"koren="<<x<<" F("<<x<<")="<<F(x); cout<<endl<<"max chislo iter"<<k;   return 0;}

Метод Ньютона

Постановка задачи: найти корень нелинейного уравнения

ln(x) - 2·x + 2,5 = 0

на отрезке [1; 2 ] методом Ньютона с точностью е = 0,001.

 

Программа на языке CИ   #include <iostream.h> #include <iomanip.h> #include <math.h>   double F (double x) { return (log(x)-2*x+2.5);}   double F1 (double x) { return (1/x-2);}   int main() { double x0,x1,eps; int k=0;   cout<<"Vvedite nachal znach"<<endl; cin>>x0; cout<<"Vvedite tochnost"<<endl; cin>>eps;     cout.precision(5); cout.setf(ios::left);   cout<<"______________________________"<<endl;   cout<<setw(12)<<"x0"<<setw(12)<<"F(x0)"<<setw(12) <<"x1"<<setw(12)<<"F(x1)"<<endl;     cout<<"______________________________"<<endl;   while(fabs(F(x0))>eps) { x1=x0-F(x0)/F1(x0);   cout<<setw(12)<<x0<<setw(12)<<F(x0)<<setw(12) <<x1<<setw(12)<<F(x1)<<endl; x0=x1; k++; }   cout<<endl<<"koren="<<x1<<" F("<<x1<<")="<<F(x1)<<endl; cout<<"vipolneno iter"<<k; return 0;}

Метод простой итерации

Постановка задачи: найти корень нелинейного уравнения

ln(x) - 2·x + 2,5 = 0

на отрезке [1; 2 ] методом Ньютона с точностью е = 0,001.

 

Программа на языке CИ #include <iostream.h> #include <iomanip.h> #include <math.h>   double F (double x) { return (log(x)-2*x+2.5);} double S (double x) { return ((log(x)+2.5/2);} int main() { double x0,x1,eps; int k,kmax;   cout<<"Vvedite nachal znach"<<endl; cin>>x0;   cout<<"Vvedite tochnost"<<endl; cin>>eps; cout<<"Vvedite max chislo iter"<<endl; cin>>kmax; cout.precision(5); cout.setf(ios::left); cout<<"______________________________"<<endl; cout<<setw(12)<<"x0"<<setw(12)<<"F(x0)"<<setw(12)<< "x1"<<setw(12)<<"F(x1)"<<endl; cout<<"_______________________________"<<endl; k=0; while(fabs(F(x0))>eps) { x1=S(x0); cout<<setw(12)<<x0<<setw(12)<<F(x0)<<setw(12)<<x1 <<setw(12)<<F(x1)<<endl; if(k>kmax) {cout<<"vipolneno max iter"<<endl; break;} x0=x1; k++; } cout<<endl<<"koren="<<x1<<" F("<<x1<<")="<<F(x1); cout<<endl<<"chislo iter"<<k; return 0;}

Лабораторная работа №2



Поделиться:


Последнее изменение этой страницы: 2016-04-08; просмотров: 711; Нарушение авторского права страницы; Мы поможем в написании вашей работы!

infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 3.149.251.155 (0.055 с.)