Форум программистов, компьютерный форум, киберфорум
C для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.92/13: Рейтинг темы: голосов - 13, средняя оценка - 4.92
0 / 0 / 0
Регистрация: 05.08.2013
Сообщений: 19
1

Определить с точностью до 0.1 точку пересечения функции с осью X

29.08.2013, 20:40. Показов 2406. Ответов 10
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Имеется задача:
Определить с точностью до 0.1 точку пересечения с осью X функции y=x-arctg(x-pi), изменяя значение x от 2 до 5 с шагом 0.1. Изменение знака функции является признаком пересечения оси X. При x=2 функция отрицательная.

Написал код, но мне непонятно:
1) Где должно прописываться x=2?
2) И нужно ли здесь вводить X с клавиатуры?
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
 
const double PI = 3.14159265;
double x, y;
 
int main(void)
{
    for ( x>2; x<=5; x+=0.1)
    y=x-atan(x-PI);
    printf("Tochka peresechenia = %lf \n", y);
    system("pause");
}
В этом коде точка пересечения получилась 3.9.....



Оффтоп

У всех форум полурусский полуанглийский?
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
29.08.2013, 20:40
Ответы с готовыми решениями:

Найти точку пересечения функции с нулем
И снова здравствуйте,уважаемые.на этот раз-уравнение.собственно,в комментариях кода все описано....

Определить точку пересечения диагоналей четырехугольника
Задача Выпуклый четырехугольник задан координатами своих вершин x1, y1, x2, y2, x3, y3, x4, y4,...

Определить с точностью 0,1 точку пересечения функции с осью X
Здравствуйте) помогите решить задачу) Определить с точностью 0,1 точку пересечения функции y = x -...

Определить с точностью до 0,2 точку пересечения функции
Определить с точностью до 0,2 точку пересечения функции y=x-exp(-ax2) с осью x при изменении...

10
6 / 6 / 4
Регистрация: 09.11.2011
Сообщений: 131
29.08.2013, 21:31 2
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
 
#define PI 3.14159265
 
int main(void)
{
    double x, y;
    
    for (x = 2; x <= 5; x += 0.1) {
        y = x-atan(x-PI);
        printf("Tochka peresechenia = %lf \n", y);
    }
    system("pause");
    return 0;
}
1)см. цикл for
2)см. цикл for
0
19 / 19 / 13
Регистрация: 17.05.2013
Сообщений: 32
29.08.2013, 21:43 3
Ошибка в задании?
0
0 / 0 / 0
Регистрация: 05.08.2013
Сообщений: 19
29.08.2013, 22:15  [ТС] 4
Получается, программа готова или я чего-то не понял?
это и есть мой вопрос 1) ?
C
1
for (x = 2;


изменяя значение x от 2 до 5 с шагом 0.1
т.е. на экране как раз и выводятся точки пересечения с каждым значением из
C
1
for (x = 2; x <= 5; x += 0.1)
?
0
6 / 6 / 4
Регистрация: 09.11.2011
Сообщений: 131
29.08.2013, 22:27 5
1) да, присваивание в цикле.
При желание его можно опустить, если переменной до этого было присвоено значение, т.е. можно записать так
C
1
2
double x = 2;
for (; x <= 5; x += 0.1)
будет тоже что и
C
1
for (x = 2; x <= 5; x += 0.1)
2)По идеи да, если при x = 2 функция отрицательная, то и при других значениях тоже будет отрицательная.
1
9 / 9 / 0
Регистрация: 26.08.2013
Сообщений: 15
30.08.2013, 00:08 6
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
 
#define PI 3.14159265
 
int main(void)
{
    double x, y;
    
    for (x = 2; x <= 5; x += 0.1) {
        y = x-atan(x-PI);
        if ((y * ((x - 0.1) - atan((x - 0.1) - PI)) < 0) || (y = 0)) { /* точка пересечения - если поменялся знак (произведение текущего и прошлого отрицательно - признак смены знака) или непосредственно само значение равно нулю */
             printf("Tochka peresechenia = %lf \n", y);
        }
    }
    system("pause");
    return 0;
}
Отдельный вопрос, допустим, что знак переменной положителен в точках x1 и x2, но при этом существует некоторое количество точек пересечения на (x1, x2).
Ну а у данной функции вообще нет пересечения с Ox на [2, 5].

Скорее всего, там в задании -2, потому что и точка пересечения есть, и значение при -2 отрицательно, а при 2 - положительно.
0
19 / 19 / 13
Регистрация: 17.05.2013
Сообщений: 32
30.08.2013, 00:13 7
Нет.
Вы просто нашли координаты y для множества точек x в промежутке от 2 до 5. И точки пересечения в этом промежутке нет. К тому же, при x=2 функция НЕ отрицательная (разве вы этого не увидели?) и при увеличении дальнейшем x, она не поменяет знак, т.к. стремится к бесконечности. Единственная точка пересечения этой функции 1.3.
В задании ошибка. Или в самой функции, или в начальном значении x (должно быть это -2, а не 2). Вы уверены, что правильно переписали?
1
9 / 9 / 0
Регистрация: 26.08.2013
Сообщений: 15
30.08.2013, 00:16 8
Цитата Сообщение от Revolver_45 Посмотреть сообщение
Нет.
Вы просто нашли координаты y для множества точек x в промежутке от 2 до 5. И точки пересечения в этом промежутке нет. К тому же, при x=2 функция НЕ отрицательная (разве вы этого не увидели?) и при увеличении дальнейшем x, она не поменяет знак, т.к. стремится к бесконечности. Единственная точка пересечения этой функции 1.3.
В задании ошибка. Или в самой функции, или в начальном значении x (должно быть это -2, а не 2). Вы уверены, что правильно переписали?
разве, что пересечение все-таки -1.35182, а так да, задание совсем в другом.
1
19 / 19 / 13
Регистрация: 17.05.2013
Сообщений: 32
30.08.2013, 00:33 9
Лучший ответ Сообщение было отмечено как решение

Решение

Samwosam, Да! Вот ведь и я минус позабыл ненароком.
В общем, если мы оказались правы, и ошибка заключается в этом, то вот решение:

C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
#include <stdio.h>
#include <math.h>
 
#define PI 3.14159265
 
double f(const double x) {
        return x - atan(x - PI);
}
 
int main () {
        double x, y;
        for (x = -2.0; x <= 5.0; x += 0.1) {
                y = f(x);
                if (y > 0) break;
        }
        printf("%.1f\n", x);
        return 0;
}
3
6 / 6 / 4
Регистрация: 09.11.2011
Сообщений: 131
30.08.2013, 01:07 10
, а я даже и не заметил. Потестил, плюсую
0
0 / 0 / 0
Регистрация: 05.08.2013
Сообщений: 19
30.08.2013, 02:10  [ТС] 11
Цитата Сообщение от Revolver_45 Посмотреть сообщение
Вы уверены, что правильно переписали?


И еще спасибо, что заметили ошибку)

Цитата Сообщение от Revolver_45 Посмотреть сообщение
(разве вы этого не увидели?)
увидел, но "не догнал" =)

Добавлено через 32 минуты
такой вопрос: если использовать код
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
#include <stdio.h>
#include <math.h>
 
#define PI 3.14159265
 
double f(const double x) {
        return x - atan(x - PI);
}
 
int main () {
        double x, y;
        for (x = -2.0; x <= 5.0; x += 0.1) {
                y = f(x);
                if (y > 0) break;
        }
        printf("%.1f\n", x);
        return 0;
}
то точка пересечения -1.3, а если вот этот -
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
 
const double PI = 3.14159265;
double x, y;
 
int main(void)
{
    for ( x=-2; x<=5; x+=0.1)
{   y=x-atan(x-PI);
    if (y>0) break;
}
    printf("Tochka peresechenia = %.1f \n", y);
    system("pause");
}
то точка 0.0. В чем/где ошибка? (спрашиваю ради интереса, неужели все из-за:
C
1
2
3
double f(const double x) {
        return x - atan(x - PI);
}
и в чем разница? Где про это можно прочитать, а лучше объясните понятным новичку языком =)

Добавлено через 1 минуту
а все, понял косяк где
C
1
printf("Tochka peresechenia = %.1f \n", y);
Нужно Х выводить, а я Y вывожу.
0
30.08.2013, 02:10
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
30.08.2013, 02:10
Помогаю со студенческими работами здесь

Определить с точностью ε точку пересечения функции
Определить с точностью ε точку пересечения функции y=ln(x2+1)с прямойy=1.

Найти точку пересечения графика с осью абцисс
Написал уравнение, указав в начальных параметрах единици измирения. Постороил график и пытаюсь...

Как отметить точку пересечения прямой с осью х
Код программы: Private Sub Command1_Click() Dim i As Double Picture1.Scale (-2.213,...

Найти точку пересечения прямой с осью абсцисс
Найти точку пересечения прямой с осью абсцисс, если эта прямая проходит через введенные точки....


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

Или воспользуйтесь поиском по форуму:
11
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru