Форум программистов, компьютерный форум, киберфорум
Наши страницы
C для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.65/34: Рейтинг темы: голосов - 34, средняя оценка - 4.65
agen13
4 / 3 / 1
Регистрация: 02.10.2008
Сообщений: 5
1

Найти корень функции методом хорд и касательных

28.11.2008, 23:50. Просмотров 6355. Ответов 4
Метки нет (Все метки)

Найти корень функции (квад.x + Inx - 2) методом хорд и касательных. Помогите ее подправить =)
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
#include <stdio.h>
#include <math.h>
main()
{
float a,b,eps,f(float),f1(float),f2(float),t,xk(float,float,float,float (*)(float),float (*)(float),float (*)(float));
printf("\ 3adaute predeli int i to4nost:\n";
scanf("%f%f%f",&a,&b,&eps);
t=xk(a,b,eps,f,f1,f2);
printf("\n otvet: %f",t);
getch();
}
 
float f(float t) [COLOR=slategray][B]/*как разбить и записать мою функцию ?*/[/B][/COLOR]
{return t*t*t+t*t+t-3 ;}
float f1(float t)
{return 3*t*t+2*t+1;} 
float f2(float t)
{return 6*t+2;}
 
float xk(float a,float b,float eps,float (*f)(float),float (*f1)(float),float (*f2) (float))
{
float x,t;
if(f(a)*f2(a)>0) {t=a;x=b;}
else {t=b;x=a;}
do{
t=t-f(t)/f1(t);
x=(t*f(x)-x*f(t))/(f(x)-f(t));
}while (fabs(x-t)>eps);
return 0.5*(x+t);
}
Добавлено через 13 часов 13 минут 5 секунд
0
Лучшие ответы (1)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
28.11.2008, 23:50
Ответы с готовыми решениями:

Найти корень уравнения методом хорд
2x + \ln(x+1) - 1

Вычислить корень уровнения методом хорд
x*x+3.8x-5.3=0 с точностью 0.01

Найти корень функции x*x*x+0.2*x*x+0.5x +1.5 методом Ньютона
Необходимо было найти корень функции x*x*x+0.2*x*x+0.5x +1.5 методом Ньютона. Не могу найти...

Найти корень функции методом дихотомии
функция: \frac{1}{3}*{\sin }^{4}x-x+1

Нахождения нуля функции методом хорд
Добрый день! мне нужен код программы для : Нахождения нуля функции методом хорд Буду очень...

4
BSV
0 / 0 / 0
Регистрация: 21.06.2015
29.11.2008, 02:23 2
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
#include <iostream>
#include <math.h>
 
using namespace std;
double f(double x)
{
    return x*x + log(x)-2;
}
double df(double x)
{
    return 2*x + 1/x;
}
double root_chord(double a, double b, double eps)
{
    double c;
    do
    {
        c = a - f(a)*(b-a)/(f(b)-f(a));
        if(f(a)*f(c)<0)
        {
            b = c;
        }
        else
        {
            a = c;
        }
    }while(abs(f(c))>eps);
    return c;
}
double root_Newton(double c, double eps)
{
    do
    {
        c = c - f(c)/df(c);
    }while(abs(f(c))> eps);
    return c;
}
void main()
{
    double a,b,eps;
    cout<<"a = ";cin>>a;
    cout<<"b = ";cin>>b;
    cout<<"eps = ";cin>>eps;
    cout<<"X_chord = "<<root_chord(a,b,eps)<<"\n";
    cout<<"X_Newton = "<<root_Newton(a,eps)<<"\n";
 
}
0
Maslova
0 / 0 / 0
Регистрация: 25.10.2015
18.12.2008, 19:53 3
я так понял эт на С++ поправили, а на С кто-нибудь сделайте плиз=)
0
agen13
4 / 3 / 1
Регистрация: 02.10.2008
Сообщений: 5
18.12.2008, 22:53  [ТС] 4
Лучший ответ Сообщение было отмечено как решение

Решение

C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
#include <stdio.h>
#include <math.h>
main()
{
float a,b,eps,f(float),f1(float),f2(float),t,xk(float,float,float,float (*)(float),float (*)(float),float (*)(float));
printf("\n 3adaute predeli int i to4nost:\n");
scanf("%f%f%f",&a,&b,&eps);
t=xk(a,b,eps,f,f1,f2);
printf("\n otvet: %f \n",t);
int getch();
return 0;
}
 
float f(float t)
{return t*t+exp(t)-2 ;}
float f1(float t)
{return 2*t+1/t;}
float f2(float t)
{return 2-1/(t*t);}
 
float xk(float a,float b,float eps,float (*f)(float),float (*f1)(float),float (*f2) (float))
{
float x,t;
if(f(a)*f2(a)>0) {t=a;x=b;}
else {t=b;x=a;}
do{
t=t-f(t)/f1(t);
x=(t*f(x)-x*f(t))/(f(x)-f(t));
}while (fabs(x-t)>eps);
return 0.5*(x+t);

/* Я конечно не уверен но вроде так */
3
SpeedyWizard
0 / 0 / 0
Регистрация: 06.11.2009
Сообщений: 1
09.11.2009, 18:47 5
Спасибо большое! Я зарегистрировался здесь для того, чтобы поблагодарить Программа очень помогла мне.
0
09.11.2009, 18:47
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
09.11.2009, 18:47

Реализация метода хорд и касательных (С++ -> Си)
Здравствуйте. Очень хочу разобрать алгоритм метода хорд и касательных на си. Но при попытке...

Найти корень уравнения методом простой итерации
Найти какой-нибудь корень уравнения 1.2x^3+10.56x^2+12.78x+46.98=0 метод простой итерации....

Найти корень уравнения методом половинного деления
В программе методом половинного деления необходимо найти корень уравнения. Загвоздка в том что при...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2019, vBulletin Solutions, Inc.
Рейтинг@Mail.ru