Форум программистов, компьютерный форум CyberForum.ru

Вычисление функции с заданным шагом на определённом отрезке - C++

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 10, средняя оценка - 4.90
MyAdm001
0 / 0 / 0
Регистрация: 12.11.2010
Сообщений: 24
26.11.2010, 15:31     Вычисление функции с заданным шагом на определённом отрезке #1
Всем привет. Помогите кодом программ (желательно с небольшим пояснением в виде комментариев).
Вобщем задания следущие:
1. Вычислить функцию y=x-tg(x) на отрезке [o,pi/2] с шагом h=pi/10. На каждом шаге выводить на экран значения переменных x,y.

2. Найти ср. арифметическое положительных значений функции y=(cos(x/3-tg(x))*e^-x на интервале изменения аргумента от Xn до Xk с шагом h.

Заранее спасибо за помощь!
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
26.11.2010, 15:31     Вычисление функции с заданным шагом на определённом отрезке
Посмотрите здесь:

C++ Вычислить функцию на заданном отрезке с заданным шагом
Построение таблицы значений функции y=f(x) для x на отрезке [a;b] с шагом h C++
функции у=2х на отрезке от а до b с шагом c C++
C++ Как вывести значение функции на отрезке с заданным шагом?
C++ построить таблицу приближенных значений функции f(x) на отрезке [a,b] с шагом h
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Vorox
 Аватар для Vorox
25 / 24 / 3
Регистрация: 26.11.2010
Сообщений: 57
26.11.2010, 16:21     Вычисление функции с заданным шагом на определённом отрезке #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
#include <iostream>
#include <conio.h>
#include <math.h>
using namespace std;
#define PI 3.14159265358979 // определяем константу пи
int main()
{
    double p=PI/2; // создаем переменные р и h
    double h=PI/10; // 
    double y;
    for(double i=0;i<p;i+=h) // создаем цикл, здесь i играет роль х в уравнении, с каждой новой итерацией к переменной 
    {                       // i будет прибавлятся h пока мы не выйдем за пределы отрезка.
                            // В задании есть неточность, а именно tg(PI/2) = бесконечности, поэтому считает программа на 
                            // полуинтервале [0,PI/2).
        y=i-tan(i); // собственно уравнение
        cout<<"x = "<<i<<"  "<<"y = "<<y<<endl; // вывод на экран
    }
    double x1, x2;
    cout<<"Enter Xn and Xk:\n"; 
    cin>>x1>>x2;
    double Sum=0; // переменная для хранения общей суммы положительных значений
    int count=0;
    for(double i=x1;i<=x2;i+=h)
    {
        double tmp=cos(i/3-tan(i))*exp(-i);
        if(tmp>0) // если функция больше 0 то прибавляем результат к сумме
        {
            Sum+=tmp;
            count++; // колличество положительных значений
        }
    }
    cout<<"The average arithmetic sum = "<<Sum/count<<endl; // вывод среднеого арифметического результата
    getch();
    return 0;
}
MyAdm001
0 / 0 / 0
Регистрация: 12.11.2010
Сообщений: 24
26.11.2010, 16:25  [ТС]     Вычисление функции с заданным шагом на определённом отрезке #3
Собственно говоря. Я посидел и подумал. Получилось что-то вроде:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#include <iostream>
#include "math.h"
using namespace std;
  int main ()
    {
        int x,y,h;
        h=3.14/10;
        x=0;
            if (x<=3.14/2)
                y=x-tan(x);
                cout<<"x: "<<x<<"y: "<<y<<endl;
                x=x+h;
            else
                cin<<"successfull, program completed"<<endl;
                system ("pause");
  }
запускаться и компиллироваться не хочет. В чем проблема?
Vorox
 Аватар для Vorox
25 / 24 / 3
Регистрация: 26.11.2010
Сообщений: 57
26.11.2010, 17:38     Вычисление функции с заданным шагом на определённом отрезке #4
Цитата Сообщение от MyAdm001 Посмотреть сообщение
Собственно говоря. Я посидел и подумал. Получилось что-то вроде:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#include <iostream>
#include "math.h"
using namespace std;
  int main ()
    {
        int x,y,h;
        h=3.14/10;
        x=0;
            if (x<=3.14/2)
                y=x-tan(x);
                cout<<"x: "<<x<<"y: "<<y<<endl;
                x=x+h;
            else
                cin<<"successfull, program completed"<<endl;
                system ("pause");
  }
запускаться и компиллироваться не хочет. В чем проблема?
1. Т.к. обьявленная тобой функция int main() имеет тип int, то она должна возвращать значение. Возврат происходит с помощью оператора return. Пример:
C++
1
2
3
4
5
int main()
{
//тело функции
 return 0;
}
В твоем случае следует изменить тип функции с int на void:
C++
1
2
3
4
void main()
{
//тело функции
}
2. Сразу бросается в глаза то, что у тебя нет обхода по всем х, а именно программа выполнится 1 раз при х=0; Нужно сделать зацикливание до тех пор пока мы не пройдем весь отрезок.
3. Вкорне не правильно писать int h=3.14/10, так как число которое мы будем записывать в h имеет вещественный тип данных. В результате ты получишь h=0, т.к. вся дробная часть проигнорируется.
Тоже самое для х и у. Ты присваеваешь им вещественное значение, хотя тип данных у тебя целочисленный.
Yandex
Объявления
26.11.2010, 17:38     Вычисление функции с заданным шагом на определённом отрезке
Ответ Создать тему
Опции темы

Текущее время: 17:33. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru