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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 25.02.2009, 19:52   #1
AlinAA
 
Регистрация: 19.02.2009
Сообщений: 5
По умолчанию Метод хорд. Тейлор

Здравствуйте! Помогите,пожалуйста,проверить и объяснить доступно и доходчиво ошибки и недочёты..

(язык С)
В следующих задачах требуется оформить решение в виде функции, получающей в качестве параметра указатель на функцию double (*f) (double x)

1. Вычислить корень уравнения f(x) на данном отрезке c заданной точностью ε методом Ньютона(касательных). простите за неточность в названии...
Написать тест, в котором вывести количество итераций и сравнить результат с точным ответом.
так: x(i+1)=xi - f(x)/f'(x)
нулевое приближение берётся так если на отрезке [a;b] f'(x)*f''(x)>0,то x0=a, если наоборот, то x0=b.(это можно сделать с помощью while ?) я не очень понимю,как написать это условие(( (пока начальное приближение у меня задаётся вручную(((
вот что есть у меня пока что

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

double newton(double( *f)(double x), double( *f1)(double x), double x0,double x,double e)
// f1  первая  производная

{
double n=0;

do {
x0 = x;
x = x0 - f(x0)/f1(x0);

n++;
}
while ( fabs(x0-x)>e);
return n;
}

int main()
{double x,
double e,
double n,

printf("x*x - sin(x)=0 \n");
printf("Vvedite pogreshnost\n");
scanf("%lf",&e);
printf("Vvedite nachalnoe priblishenie\n");
scanf("%lf",&x0);

n=newton(f,f1,x,x0,e);
printf("Koren:"%d",x\n");
printf("kolichestvo shagov:"%d",n\n");
printf("pogresnost:"%d",root(f,x)\n");

}
double f(double x)
      {return x*x - sin(x);}
double f1(double x)
      {return 2*x - cos(x);
}
2вычисление sinx в заданной точке с заданной точностью ε с помощью ряда тейлора.
Код:
#include<stdio.h>
#include<math.h>
double sinx(double x,double eps)
{  double snx=x, xn=x, n=1.0, x2=-x*x;
while( fabs(xn)>eps)
{n+=2.0;
xn *=x2/n/(n-1.0);
snx +=xn;
}
return snx
}
int main()
{double a, eps;
printf("Vvedite chislo\n");
scanf("%lf",&a);
printf("Vvedite priblishenie\n");
scanf("%lf",&eps);

printf("Znachenie "%d",sinx(a,eps);
printf("Pogreshost "%d",abs(sinx(a,eps) - sina)\n");

return 0
  }
p.s. есть ли библиотечная формула интеграла?

заранее спасибо

Последний раз редактировалось AlinAA; 25.02.2009 в 20:52. Причина: перепутано название. метод Ньютона
AlinAA вне форума Ответить с цитированием
Старый 26.02.2009, 00:31   #2
AlinAA
 
Регистрация: 19.02.2009
Сообщений: 5
По умолчанию

пожалуйста,ПОМОГИТЕ!!!!
AlinAA вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Метод вижинера Ghost_Dante Помощь студентам 12 01.12.2011 21:58
Метод Хорд , Касательных и Половинного деления DieHard Помощь студентам 4 13.09.2011 19:05
Решение нелинейных уравнений методом хорд, pascal Антонова Анна Помощь студентам 3 09.12.2007 19:24