Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 16.01.2013, 23:50   #1
lullaby
Новичок
Джуниор
 
Регистрация: 16.01.2013
Сообщений: 2
По умолчанию Вычисление функции, используя улучшенный метод последовательных приближений (Вегстейн) на си

Уравнение задаётся в программе в виде функции f(x)=0. Задаётся случайное начальное значение x0. Первое приближенное значение считается по методу начальных приближений.Все последующие значения считаются по формуле Вегстейна до тех пор, пока разница между нынешним и предыдущим значениями найденных x не станет меньше заданной точности.
Помогите пожалуйста найти ошибку!

#include <stdio.h>
#include <conio.h>
#include <math.h>
#define formula(x) (x*x)-(3*x)+2

//Функция, высчитывающая функцию по методу Вегстейна
float vegstaine(float x0,float x1)
{
float f=(formula(x1)-x1)/(x1-x0);
return x1+(1/(1-f))*(formula(x1)-x1);
}

int main()
{
//x0-начальное приближение, x-промежуточный и конечный результат,e-погрешность tmp-хранение предыдущих результатов цикла
float x0,x,e,tmp;
scanf("%f %f",&x0,&e);
x=formula(x0);//Первая итерация
do
{
tmp=x;
x=vegstaine(x0,x);
x0=tmp;
}while(fabs(x-x0)>0);
printf("x=%f ",x);
getch();
}
lullaby вне форума Ответить с цитированием
Старый 17.01.2013, 02:09   #2
EUGY
Форумчанин
 
Аватар для EUGY
 
Регистрация: 11.07.2010
Сообщений: 914
По умолчанию

Цитата:
e-погрешность
Где она должна быть в вычислениях?
while ( fabs(x-x0) > e ); // тут ?
EUGY вне форума Ответить с цитированием
Старый 17.01.2013, 14:36   #3
lullaby
Новичок
Джуниор
 
Регистрация: 16.01.2013
Сообщений: 2
По умолчанию

Цитата:
Сообщение от EUGY Посмотреть сообщение
Где она должна быть в вычислениях?
while ( fabs(x-x0) > e ); // тут ?
Да. Нужно вычислять значения по формуле Вегстейна до тех пор, пока разница между нынешним и предыдущим значениями найденных x не станет меньше заданной точности.
Хотя вполне возможно, что можно сделать как-то подругому? Т.к. разница меньше точности может найтись, но вот значение при этом корню исходной функции не соответствует.
lullaby вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
вычисление значения функции и переменных, вычисление площади треугольника, определение расстояния между точками на турбо паскале _4Alex4_ Помощь студентам 2 14.12.2011 01:43
Как подменить адрес возврата функции func на адрес функции f используя переполнение буфера buf и функции gets dmitrii6120 Помощь студентам 6 14.11.2011 20:10
Метод послед. приближений. Pascal Кэмерон Помощь студентам 7 24.05.2009 15:39
Как нарисовать на Tchart график функции, заданной таблично(используя метод наименьших квадратов) Legion2008 Мультимедиа в Delphi 0 11.05.2009 16:00