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

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

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

Восстановить пароль
Повторная активизация e-mail

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

Ответ
 
Опции темы Поиск в этой теме
Старый 12.12.2010, 14:16   #1
Topotun
Новичок
Джуниор
 
Регистрация: 12.12.2010
Сообщений: 2
По умолчанию Метод Секущих для решения уравнения с несколькими(!!) неизвестными

Здравствуйте. Есть уравнение: x^4 + 96.43*x^3 -3539.81*x^2 + 4406.94*x +1023.75. Мне необходимо получить методом секущих все (!!) корни данного уравнения (очевидно, что их должно быть 4 =)). Сама реализация метода секущих не проблема, но для того чтобы реализовать решение для нахождения 4-х корней, то нужно знать отрезок, на котором применять метод секущих. Юзал поиск по форуму - не помогло =( Если кто знает, как реализовать метод секущих для нахождения 4-х корней - помогите пожалуйста. Спасибо заранее.

Код:
#include <stdio.h>
#include <math.h>
#include <conio.h>

#define e 0.000001

double func (double x) //исходная функция
{
return (x*x*x*x + 96.43*x*x*x - 3539.81*x*x + 4406.94*x+1023.75);
}

void main ()
{
FILE *res;
res=fopen ("sekushih. txt","w");
int k=0,x1=-140,x2=50; //k - счётчик итераций, х1, х2 - начало и конец отрезка, для которого 
						//применяем метод секущих
double a,b,c;
double kor = 0;
a=x1;
b=x2;
double h = 1; //шаг с которым изменяется отрезок
int kolvo = 0;
while(kolvo == 0){

	if(func(a)<0 && func(b) > 0){ 
		while (fabs (a-b) >e) //цикл метода секущих
	{

	c= (a*func (b) - b*func (a)) / (func (b) - func (a));
	a=b;
	b=c;
	k++;
	
	}
printf ("Funkciya prinimaet znachenie na intervale: [%d,%d] \n",x1,x2);
printf ("Otvet:%f\n",a);
printf ("Kol-vo iteraciy:%d \n",k);
printf ("Takge smotri otvet v file sekushih. txt\n");

kolvo++;
	}
	else {a += h;}
	if(a==b)
	{
		b +=h;
	}
	if(kolvo == 4){break;}
	}
fprintf (res,"Результат решения уравнения методом секущих! \n");
fprintf (res,"Корень уравнения x =%f\nКоличество итераций =%d",a,k);

fclose (res);
getch ();
}
P.S. При реализации данного кода - выводится только один корень...сам не могу додуматься, как скорректировать программу так, чтобы выводился полный результат (4 корня).

Последний раз редактировалось Topotun; 12.12.2010 в 14:22.
Topotun вне форума Ответить с цитированием
Старый 12.12.2010, 17:46   #2
Topotun
Новичок
Джуниор
 
Регистрация: 12.12.2010
Сообщений: 2
По умолчанию

Плохо, что никто не может помочь..
Topotun вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
помогите сделать программу для решения уравнения на C в Linux Ambrous Помощь студентам 1 15.04.2009 10:48
текст программы для решения нелинейного уравнения методом простых итераций Dyst Помощь студентам 2 14.05.2008 22:00
Метод секущих +решение рус.яз для DEV C++ Толик Общие вопросы C/C++ 1 27.04.2008 15:00