Помогите с программой на C++.

программирование математика C++ компьютер

Помогите понять, почему программа неправильно высчитывает корень?

Программу надо сделать методом итерации.

Сущность метода заключается в следующем. Пусть дано уравнение
f(x) = 0, (2.7)
и необходимо определить его действительные корни.
Представим уравнение (2.7) в форме
x = fi(х). (2.8)
Для такого преобразования необходимо исходную функцию f(x) «разорвать» на две части - x и fi(х), т.е. расписать f(x) как f(x) = x - fi(х).

Я "разрываю" исходную функцию arccos(x)-(1-0.3*x^3)^0.5 как x-[x-acos(x)+sqrt(1-0.3*pow(x,3))]

Вот моя программа:
#include <stdio.h>
#include <math.h>
float fi(float x)
{
return x-acos(x)+sqrt(1-0.3*pow(x,3));
}
float f(float x)
{
return x-fi(x);
}
void main()
{
int n=0;
float x=0, y=0, e=0, z=0;
printf ("\nVvedite nachalnoe priblizhenie x: ");
scanf ("%f", &x);
printf ("\nVvedite chislo tochonost' e: ");
scanf ("%f", &e);
do
{
y=fi(x);
z=fabs(y-x);
x=y;
}
while (z>e)
printf ("x=%f, f(x)=%f, n=%d", x, f(x), n);
}

Примечание:
night beast,
я тоже так подумал. Ведь у меня получается функция, графически, уходит вправо - от искомого значения. И ты предлагаешь направить функцию слева, чтобы она и "шла" вправо.
Но дело оказалось в другом: "уравнение f(x) = 0 привести к виду \phi(x) = x;". Я решил уравнение(выразил x), и получил другую функцию fi(x).
Сегодня днём мне подсказали, и я справился. Но всё равно спасибо, что постарался помочь мне. :)
Ответы:
тебе надо уравнение f(x) = 0 привести к виду \phi(x) = x;
прибавим к обоим частям уравнения x: f(x) + x = x
таким образом \phi(x) = f(x) + x;
float fi(float x) { return x + acos(x) - sqrt(1.-0.3*pow(x,3)); }
float f(float x) { return fi(x)-x; }


14 лет назад

RPI.su - самая большая русскоязычная база вопросов и ответов. Наш проект был реализован как продолжение популярного сервиса otvety.google.ru, который был закрыт и удален 30 апреля 2015 года. Мы решили воскресить полезный сервис Ответы Гугл, чтобы любой человек смог публично узнать ответ на свой вопрос у интернет сообщества.

Все вопросы, добавленные на сайт ответов Google, мы скопировали и сохранили здесь. Имена старых пользователей также отображены в том виде, в котором они существовали ранее. Только нужно заново пройти регистрацию, чтобы иметь возможность задавать вопросы, или отвечать другим.

Чтобы связаться с нами по любому вопросу О САЙТЕ (реклама, сотрудничество, отзыв о сервисе), пишите на почту [email protected]. Только все общие вопросы размещайте на сайте, на них ответ по почте не предоставляется.