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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 14.03.2009, 13:30   #1
Dimoff80
 
Регистрация: 24.02.2009
Сообщений: 6
Восклицание помогите найти ошибку (си выч.мат)

не могу найти ошибку:решить снау методом ньютона
sin(x+y)-1.6x
x^2+y^2=1
подскажите пожалуйста!

Код:
#inclue<stdio.h>
# include <math.h>
const e=0.001;
main()
{
int n=0;
float x,y,xn,yn,dW,f1,f2;
float wx1,wx2,wy1,wy2;
printf("\n\t Vvedite x y \n");
scanf("%f%f",&xn,&yn);
do
{
n++;
x=yn;
y=yn;
f1=sin(x+y)-1.6*x;
f2=(x*x+y*y)-1;
wx1=cos(x+y);
wx2=1;
wy1=2*x;
wy2=2*y;
dW=wx1*wy2-wx2*wy1;
if (dW>0){printf("stop\n");}
 xn=x-((f1*wy2+wx2*f2)/dW);
xn=y-((wx1*f2+f1*wy1)/dW);
}while ((fabs(xn)>e && fabs(yn)>e));
printf ( "\n x=%f y=%f n=%d",xn,yn,n);
}
Dimoff80 вне форума Ответить с цитированием
Старый 14.03.2009, 14:34   #2
Svetlag
Пользователь
 
Аватар для Svetlag
 
Регистрация: 24.02.2009
Сообщений: 85
По умолчанию

Может нужно так:
Код:
do
{
n++;
x=xn;
y=yn;
f1=sin(x+y)-1.6*x;
f2=(x*x+y*y)-1;
wx1=cos(x+y);
wx2=1;
wy1=2*x;
wy2=2*y;
dW=wx1*wy2-wx2*wy1;
if (dW>0){printf("stop\n");}
 xn=x-((f1*wy2+wx2*f2)/dW);
yn=y-((wx1*f2+f1*wy1)/dW);
}while ((fabs(xn)>e && fabs(yn)>e));
Svetlag вне форума Ответить с цитированием
Старый 14.03.2009, 15:08   #3
Dimoff80
 
Регистрация: 24.02.2009
Сообщений: 6
По умолчанию

извини старый текст дал. компилятор выдаёт Invalid floating point operation
Dimoff80 вне форума Ответить с цитированием
Старый 14.03.2009, 15:53   #4
Svetlag
Пользователь
 
Аватар для Svetlag
 
Регистрация: 24.02.2009
Сообщений: 85
По умолчанию

у меня вот это компилируется в Visual C++. Но выдает некорректные результаты.Напишите формулы,по которым патаетесь написать программу. Тогда можно и говорить.
Код:
#include<stdio.h>
#include<math.h>
const double e=0.001;
int main()
{
	int n=0;
	float x,y,xn,yn,dW,f1,f2;
	float wx1,wx2,wy1,wy2;
	printf("\n\t Vvedite x y \n");
	scanf("%f%f",&xn,&yn);
	do
	{
	n++;
	x=xn;
	y=yn;
	f1=sin(x+y)-1.6*x;
	f2=(x*x+y*y)-1;
	wx1=cos(x+y);
	wx2=1;
	wy1=2*x;
	wy2=2*y;
	dW=wx1*wy2-wx2*wy1;
	if (dW>0){printf("stop\n");}
	 xn=x-((f1*wy2+wx2*f2)/dW);
	yn=y-((wx1*f2+f1*wy1)/dW);
	}while ((fabs(xn)>e && fabs(yn)>e));
	printf ( "\n x=%f y=%f n=%d",xn,yn,n);
	return 0;
}

Последний раз редактировалось Svetlag; 15.03.2009 в 09:41.
Svetlag вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
помогите найти ошибку LyaLyaLya Помощь студентам 6 15.12.2008 20:59
help!!! Помогите найти ошибку!!! linker13 Общие вопросы Delphi 2 07.07.2007 23:15