Официальный сайт студ.городка НГТУ
Программирование и БД » [Подскажите плиз] Как сделать из двух методов комбинированный? 

#1  28.11.07 00:18

[Подскажите плиз] Как сделать из двух методов комбинированный?

Вот есть два метода решения нелинейных уравнений:

Код::

//Метод хорд
	float Xp;
	int i=0;
             double d;	
       	do
	{
		Xp=Xn-Fun(Xn)*(Xv-Xn)/(Fun(Xv)-Fun(Xn));
		if(Fun(Xp)*Fun(Xn)>0) Xn=Xp;
		else if(Fun(Xp)*Fun(Xv)>0) Xv=Xp;
		i++;
                d =fabs(Fun(Xp));
	}
	while(fabs(Fun(Xp))>E);

	
//Метод Ньютона
	double Xp, df, d=0.05;
	int i = 0;
	do
	{
		df=(Fun(Xp+d)-Fun(Xp))/d;
		Xp = Xp - Fun(Xp)/df;
		i++;
	}
	while(fabs(Fun(Xp)>E));     


float Fun(float X)
{ 
  float otv;
  switch(fg)
  { case 0: otv=X*X-5*X+6;
    break;
  case 1: otv=2*X-3*log(X)-5;
    break;
  case 2: otv=exp(X)+X-4.9;
    break;
  case 3: otv=X*X*X+3*X*X-4*X-6;
    break;
  }
  return otv;
}

И из них нужно сделать комбинированный метод решения нелинейных уравнений, а точнее нужно чтоб с одного конца отрезка "шел" один метод, а с другого второй метод.

Описание методов:
Метод касательных (Ньютона-Рафсона)
Данный метод широко используется при построении итерационных алгоритмов. Это обусловлено тем, что на этапе отделения корня не обязательно находить интервал, на котором заключен корень. Достаточно задать некоторое начальное значение Хр. Это возможно по той причине, что в методе Ньютона-Рафсона осуществляется экстраполяция с помощью касательной к кривой в данной точке. Затем, начиная о начального приближения  Хр, осуществляется процесс уточнения значения корня. Вычисление уточнённого значения корня производится по формуле
Хр+1=Хр-f(Хр)/f’(Xp)
где f”(Xp) значение первой производной f(x) в точке Xp.
Если полученное значение по модулю f(Хр+1) больше E, то вся процедура повторяется, но при этом вместо Xp используется значение Хр+1.
Необходимо отметить следующие особенности метода:
быстрота сходимости в большой степени зависит от удачного выбора значения Xp;
метод не всегда обеспечивает сходимость, поэтому необходимо задавать допустимое число итераций;
выражение для f’(Xp)  может оказаться слишком сложным.


Метод хорд (ложного положения)
В основе метода лежит линейная интерполяция по двум значениям функции, имеющим противоположные знаки.
Пусть на этапе отделения корней найдены последовательные значения функции f(Хн) и f(Хв), имеющие противоположные знаки. Прямая, проведенная через эти две точки, пересекает ось X при значении Xp, определяемом по формуле Xp=Xн-f(Xн)*(Xв-Xн)/(f(Хв)-f(Xн))
Затем вычисляется значение функции f(Xp), которое сравнивается со значениями функции f(Xн) и f(Xв),. На следующей итерации f(Xp) используется вместо того из них, с которым совпадает по знаку. Процесс уточнения прекращается, если выполняется условие по модулю f(Xp) меньше Е.



PS: в программировании понимаю мало, сама что-то "налепила" - получилась полная чушь.

Исправлено LuckyLove (28.11.07 16:04)

Offline

#2  28.11.07 10:43

Я
Профиль

Re: [Подскажите плиз] Как сделать из двух методов комбинированный?

Хоть бы краткое описанием методов дала. А то реверс инженерингом заниматься не охото.

Offline

#3  01.12.07 22:40

Re: [Подскажите плиз] Как сделать из двух методов комбинированный?

что никто не может помочь?

Offline

Программирование и БД » [Подскажите плиз] Как сделать из двух методов комбинированный? 

ФутЕр:)

© Hostel Web Group, 2002-2025.   Сообщить об ошибке

Сгенерировано за 0.045 сек.
Выполнено 14 запросов.