Найти корни нелинейного уравнения вида x^2=e^(-(x)^2) - C (СИ)
Формулировка задачи:
Найти корни нелинейного уравнения вида x^2=e^(-(x)^2). Поиск приближенного значения хотя бы одного корня уравнения f(x)= 0 на отрезке [а; b] осуществлять методами перебора и хорд. В функции, которые реализуют алгоритмы, передавать указатели на тип float.
Решение задачи: «Найти корни нелинейного уравнения вида x^2=e^(-(x)^2)»
textual
Листинг программы
#include <iostream>
#include <math.h>
using namespace std;
int n;
double a;
double b;
double result;
bool* error=false;
double precision = 0.01;
double (*f)(double,double);
double func(double x)
{
return x*x - exp(-x*x);
}
double enumeration(double a,double b)
{
double c;
int i=1;
do
{
c = func(a)*func(a+precision);
a+=precision;
i++;
if(i==200)
{
cout<<"solution is to far from the point you have entered!\n";
return false;
}
}while(c>0);
return a;
}
double chord(double a,double b)
{
double c;
int i=1;
do
{
void main()
{
cout<<"choose approach to get solution\n";
cout<<"1 - chord method\n";
cout<<"2 - enumeration method\n";
do
{
cin>>n;
}
while(((int)n!=1)&&((int)n!=2));
if(n==1)
{
cout<<"enter borders:\n";
cout<<"a:";
cin>>a;
cout<<"b:";
cin>>b;
f = &chord; // initial f -> method
}
else
{
cout<<"enter left point:\n";
cout<<"a:";
cin>>a;
b = 0;
f = &enumeration; // initial f -> method
}
Объяснение кода листинга программы
- Программа находит корни нелинейного уравнения x^2=e^(-(x)^2) с помощью методов интервала (сглаживание, отсечение, приращение) и метода численного извлечения корней.
- При запуске программы, она предлагает пользователю выбрать метод решения (1 - метод хорд, 2 - метод перечисления).
- Если выбран метод хорд, программа запрашивает у пользователя границы интервала, в котором предполагается наличие корня.
- Если выбран метод перечисления, программа запрашивает у пользователя левую точку интервала.
- В обоих случаях программа начинает процесс поиска корня с помощью выбранного метода.
- В процессе поиска корня программа выводит промежуточные результаты на экран.
- Если поиск корня не увенчался успехом, программа выводит сообщение об ошибке.
- Если поиск корня был успешным, программа выводит найденный корень на экран.