Нелинейное уравнение (метод простых итераций) - C (СИ)
Формулировка задачи:
Решить нелинейное уравнение методом простых итераций с точностью до
Е
=0,0001 cos(x+0,5)=x3 Что то вообще не получается а скоро уже нужно сдавать Буду благодарен за помощь
Язык С
что то типа такого
#include<stdio.h>
#include<conio.h>
#include<math.h>
void main()
{
float p,pd,y=2.1,x0=0.1,q=0.6359;
int i=0;
clrscr();
pd=?????????;
for(;fabs(y-x0)>0.0001;)
{
x0=y;
y=????????????;
i++;
printf("y%i=%1.10f \n",i,y);
}
puts("\nResultat z tochnistyu E=0.0001 :");
printf("y=%1.10f \n\n",y);
p=((pow(q,i))*pd)/(1-q);
printf("Pohubka=%1.20f",p);
getch();
}Решение задачи: «Нелинейное уравнение (метод простых итераций)»
textual
Листинг программы
#include <stdio.h>
#include <math.h>
double Phi (double x);
double Oshibka(double x);
const double Eps = 0.0001;
int main ()
{
double x=1.0; // начальное приближение
double y=0.0;
int i;
while (Oshibka(y)>Eps)
{
y = Phi(x);
x=y;
}
printf("x= %f \n",x);
return 0;
}
// Функция нахождения нового х зная старый
double Phi (double x)
{
double y;
if(x==0) return 0.0001;
y = pow(cos(0.5+x),1.0/3);
return y;
}
// функция нахождения ошибки
double Oshibka(double x)
{
double y;
y = cos(x+0.5)-x*x*x;
if (y<0) y=-y;
return y;
}
Объяснение кода листинга программы
- Включаем необходимые заголовочные файлы для работы с математическими функциями и для отладки.
- Объявляем функции Phi и Oshibka, которые будут использоваться в основной программе.
- Задаем константу Eps, которая определяет требуемую точность решения.
- В функции main инициализируем начальное приближение x=1.0 и y=0.0.
- Запускаем цикл while, который будет выполняться до тех пор, пока значение функции Oshibka не станет меньше заданной точности Eps.
- Внутри цикла вычисляем новое значение y с помощью функции Phi, используя текущее значение x.
- Затем присваиваем новое значение x старому значению y.
- После выхода из цикла while выводим найденное значение x на экран.
- В функции Phi вычисляем новое значение y с помощью формулы y=pow(cos(0.5+x),1.0/3).
- В функции Oshibka вычисляем ошибку с помощью формулы y=cos(x+0.5)-xxx.
- Если значение ошибки отрицательное, то умножаем его на -1, чтобы ошибка всегда была положительной.
- Возвращаем значение ошибки из функции Oshibka.