0 / 0 / 0
Регистрация: 25.09.2011
Сообщений: 4
1

Вычислить значение выражения

25.09.2011, 20:08. Показов 2801. Ответов 26
Метки нет (Все метки)

https://www.cyberforum.ru/atta... 1316966829

Example:
Input:
65
Output:
0.452665
Миниатюры
Вычислить значение выражения  
__________________
Помощь в написании контрольных, курсовых и дипломных работ здесь
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
25.09.2011, 20:08
Ответы с готовыми решениями:

Вычислить значение выражения
Помогите с этой ф-й y=2 {\sin}^{2}\frac{1}{{(\pi +z)}^{3}}

Вычислить значение выражения
Даны числа s и t.Вычислить: f(x,y)=log|x||y|+ln(xy)^2/xy x=x(s,f)=Σ15 j=I...

Вычислить значение выражения
В общем написал программку, а она не коректно работает. Объясните, что не так написано,...

Вычислить значение выражения
4 W=5(M+O2)-(3L+4K)*N/2, где

26
Olga_
25.09.2011, 21:52
  #2

Не по теме:

Придется на калькуляторе вам эту сумму считать). Поймите, легче самому обучиться, чем искать помощи все время

0
Заблокирован
Автор FAQ
25.09.2011, 22:00 3
akimbladina, в
Цитата Сообщение от akimbladina Посмотреть сообщение
Example:
Input:
для ввода нужен не только предел последовательности 65, но и само х
Вот алгоритм на плюсах
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
#include <iostream>
#include <conio.h>
 
using namespace std;
 
int main () 
{
    int i,n;
    double x,upsum,downsum;
    do
    {
        std::cout<<"Enter x : ";
        std::cin>>x;
        std::cout<<"Enter max power in sequence : ";
        std::cin>>n;
        //Начальные счётчики сумм в ноль
        upsum = 0;
        downsum = 0;
        for(i = 1; i < n; i++)
        {
            if(i % 2 == 0)
                upsum += (x - i);
            else
                downsum += (x - i);
        }
        std::cout <<"answer : "<<upsum/downsum<<std::endl;
        std::cout<<"\r\nPress Y to new input\r\n";
    }
    while(toupper(getch()) == 'Y');
    return 0;
}
Результат работы
Enter x : 5.64
Enter max power in sequence : 65
answer : 1.03794

Press Y to new input
1
Эксперт С++
4259 / 2233 / 203
Регистрация: 26.08.2011
Сообщений: 3,802
Записей в блоге: 5
25.09.2011, 22:03 4
Как вариант:


C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#include<iostream>
int main()
{
   double x, rez;
   int i, flag;
   std::cin >> x;
   flag = rez = 1;
   for (i = 2; i <= 64 && flag; i += 2)
      if (x - i + 1 == 0)
         flag = 0;
      else
         rez *= (x - i)/(x - i + 1);
   flag ? std::cout << rez : std::cout << "incorrect x";
   std::cin.get();
   return 0;
}
2
Заблокирован
Автор FAQ
25.09.2011, 22:09 5
akimbladina, учитывая пост Thinker, предложенный мной алгоритм можно ускорить в 2 раза записав этот цикл
Цитата Сообщение от -=ЮрА=- Посмотреть сообщение
for(i = 1; i < n; i++)
* * * * * * * * {
* * * * * * * * * * * * if(i % 2 == 0)
* * * * * * * * * * * * * * * * upsum += (x - i);
* * * * * * * * * * * * else
* * * * * * * * * * * * * * * * downsum += (x - i);
* * * * * * * * }
таким образом
C++
1
2
3
4
5
for(i = 2; i < n; i += 2)
        {
            upsum   += (x - i);
            downsum += (x - (i - 1));
        }
0
Эксперт С++
4259 / 2233 / 203
Регистрация: 26.08.2011
Сообщений: 3,802
Записей в блоге: 5
25.09.2011, 22:12 6
-=ЮрА=-, а почему вы суммируете, если там произведения в числителе и знаменателе. Вечер сказывается
0
Заблокирован
Автор FAQ
25.09.2011, 22:40 7
Thinker, да точно уже совсем невнимателен стал...
0
Заблокирован
26.09.2011, 00:12 8
Thinker, да вечер на вас обоих сказывается
https://www.cyberforum.ru/cgi-bin/latex.cgi?f(x) =\frac{f_{1}(x)}{f_{2}(x)}= \frac{(x - n_{i - 1})  (x - n_{i }) (x - n_{i + 1})} {(x - m_{i - 1}) (x - m_{i } )(x - m_{i + 1})} при этом https://www.cyberforum.ru/cgi-bin/latex.cgi?n_{1} = 2, m_{1} = 1, m_{2} = 3 и дальше https://www.cyberforum.ru/cgi-bin/latex.cgi?n_{i}= 2^{i} \wedge n_{i} \leq 65 \Rightarrow i_{max} = 6 , https://www.cyberforum.ru/cgi-bin/latex.cgi? m_{i + 1} =m_{i - 1} + 2m_{i} я только не понимаю как получается https://www.cyberforum.ru/cgi-bin/latex.cgi?m = 63 ну, вообще - то я понял как при i = 6, m = 63 с кем поделиться? ладно, не буду выделываться :-) https://www.cyberforum.ru/cgi-bin/latex.cgi?m_{i+1} = 3m_{i} - 2m_{i - 1}

Добавлено через 59 минут
конечно чтобы скомпилировать в винде придется поработать головой немного
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 </usr/include/c++/4.5/iostream>
#include </usr/include/c++/4.5/cstdlib>
#include </usr/include/c++/4.5/cmath>
 
float up_rez(float rezult, float x, int stepen, int iter);
float down_rez(float rezult, float x, int iter);
 
int main(){
    float x = 65, up_rezult = 1, down_rezult = 1, rez;
 
    rez = up_rez(up_rezult, x, 1, 6) / down_rez(down_rezult, x, 6);
 
    std::cout << rez << "\n";
    return 0;
}
 
float up_rez(float rezult, float x, int stepen, int iter){
    if(iter > 0){
        rezult *= x - pow(2, stepen);
        return up_rez(rezult, x, ++stepen, --iter);
    }
    return rezult;
}
 
float down_rez(float rezult, float x, int iter){
    int dx = 1, x1 = 0, tmp;
    while(iter){
        rezult *= x - dx;
        tmp = dx;
        dx = 3 * dx - 2 * x1;
        x1 = tmp;
        --iter;
    }
    return rezult;
}
результат
Код
$ ./temp 
0.452665
был бы признателен, если бы показали вызов функции рекурсивно
C++
1
float down_rez(float rezult, float x, int iter)
1
magirus
26.09.2011, 09:44
  #9
 Комментарий модератора 
akimbladina, называйте темы информативно...
0
Заблокирован
Автор FAQ
26.09.2011, 09:51 10
Цитата Сообщение от alkagolik Посмотреть сообщение
float up_rez(float rezult, float x, int stepen, int iter);
float down_rez(float rezult, float x, int iter);
, можно вообще на каждой итерации считать отношение
C++
1
2
3
buf = 1;
for(i = 2; i < n; i += 2)
        buf *= (x - i)/(x - (i - 1));
и не считать ни верх ни низ

Не по теме:

Когда вчера сонным делал задачу грешным образом думал что и в числителе и в знаменателе суммы скобок, а в случае произведения лучше использовать свойства дробей.:D

0
Заблокирован
26.09.2011, 14:22 11
-=ЮрА=-, вы так и не поняли. там нет цикла с шагом 2. есть цикл числителя с шагом https://www.cyberforum.ru/cgi-bin/latex.cgi?n=2^{i},~i = 1, 2, 3, 4, 5, 6 и цикл знаменателя с шагом https://www.cyberforum.ru/cgi-bin/latex.cgi?m_{i+1} = 3m_{i}-2m_{i-1}, i = 1, 2, 3, 4, 5, 6 i - шаг и отрезок цикла, n, m - переменные. В вашем варианте это будет выглядеть так
C++
1
2
3
4
5
6
7
8
float rezult = 1, x = 65, dx = 1, x1 = 0;/*x1 = 0 это значение переменной m с индексом 0,
которое опускается т.к. i > 0*/
for(int i = 1; i < 6, ++i){
      rezult *= (x - pow(2, i)) / (x - dx);
      int tmp = dx;
      dx = 3 * dx - 2 * x1;
      x1 = tmp;
}
0
Заблокирован
Автор FAQ
26.09.2011, 14:24 12
alkagolik, посмотрите 10-й пост и сравните с вашим циклом
Цитата Сообщение от alkagolik Посмотреть сообщение
float rezult = 1, x = 65, dx = 1, x1 = 0;/*x1 = 0 это значение переменной m с индексом 0,
которое опускается т.к. i > 0*/
for(int i = 1; i <=6, ++i){
* * * rezult *= (x - pow(2, i)) / (x - dx);
* * * int tmp = dx;
* * * dx = 3 * dx - 2 * x1;
* * * x1 = tmp;
}
- смысл искать скрытые последовательности, если в лоб намного быстрей и понятней решать. PS:Я прекрасно понял о чём говорилось вами ранее...
0
Заблокирован
26.09.2011, 14:26 13
Цитата Сообщение от -=ЮрА=- Посмотреть сообщение
если в лоб намного быстрей и понятней решать
так я не спорю, я просто говорю что решаете вы не то что нужно решать ведь видно же что при х = 65 у меня результат верный, а ваш нет. значит что-то не так с алгоритмом, верно ведь?
0
Заблокирован
Автор FAQ
26.09.2011, 14:48 14
Цитата Сообщение от alkagolik Посмотреть сообщение
так я не спорю, я просто говорю что решаете вы не то что нужно решать ведь видно же что при х = 65 у меня результат верный, а ваш нет.
- с чего вы это взяли???

Добавлено через 1 минуту
Цитата Сообщение от -=ЮрА=- Посмотреть сообщение
for(i = 1; i < n; i++)
- цикл прекратиться при i = 64 < 65 или что вам не понятно в моём решении???

Добавлено через 2 минуты
Для избежания неверных трактовок предлагаю ТС в этих циклах заменить условие окончания цикла на следующее i <= n и вводить 64 по этому запросу
std::cout<<"Enter max power in sequence : ";
Цитата Сообщение от -=ЮрА=- Посмотреть сообщение
for(i = 1; i < n; i++)
* * * * * * * * {
* * * * * * * * * * * * if(i % 2 == 0)
* * * * * * * * * * * * * * * * upsum += (x - i);
* * * * * * * * * * * * else
* * * * * * * * * * * * * * * * downsum += (x - i);
* * * * * * * * }
Цитата Сообщение от -=ЮрА=- Посмотреть сообщение
buf = 1;
for(i = 2; i < n; i += 2)
* * * * buf *= (x - i)/(x - (i - 1));
Добавлено через 11 минут
alkagolik, вот листинг с выводом промежуточных результатов
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
int main () 
{
        int i,n;
        double x,buf;
        do
        {
                std::cout<<"Enter x : ";
                std::cin>>x;
                std::cout<<"Enter max power in sequence : ";
                std::cin>>n;
                //Начальные счётчики сумм в ноль
                for(buf = 1, i = 2; i <= n; i += 2)
                    std::cout<<(buf *= (x - i)/(x - (i - 1)))<<"\r\n";
                std::cout <<"answer : "<<buf<<std::endl;
                std::cout<<"\r\nPress Y to new input\r\n";
        }
        while(toupper(getch()) == 'Y');
    return 0;
}
Enter x : 65
Enter max power in sequence : 64
0.984375
0.968498
продолжение
0.952356
0.935936
0.919223
0.902201
0.884851
0.867154
0.849088
0.830629
0.811752
0.792424
0.772613
0.752282
0.731385
0.709874
0.68769
0.664767
0.641025
0.61637
0.590688
0.563839
0.535647
0.505889
0.474271
0.440394
0.403695
0.363325
0.31791
0.264925
0.198694
0.0993468
answer : 0.0993468


Добавлено через 3 минуты
Проверка
Итерация 1
(64 - 2)/(64 - 1) = 62/63 = 0,9841
Итерация 2
0,9841*(64 - 4)/(64 - 3) = 0,9841*60/61 = 0,9841*0,9836 = 0,96796076 (~0,968)
0
Заблокирован
Автор FAQ
26.09.2011, 15:08 15
alkagolik, чтобы снять у вас все вопросы не поленился и добросовестно вбил 64 скобки в маткаде, прилагаю скрин и ответ 0.09935 , сравните его с этим
Цитата Сообщение от -=ЮрА=- Посмотреть сообщение
answer : 0.0993468
думаю все вопросы будут сняты
Миниатюры
Вычислить значение выражения  
0
Заблокирован
26.09.2011, 15:14 16
-=ЮрА=-, вы же видите что ваш результат не отвечает заданному... вывод: не так построено вычисление.
требуемый результат:
Input:
65
Output:
0.452665
представлю задачу иначе, немного проще.
дано:
https://www.cyberforum.ru/cgi-bin/latex.cgi?F(x, n, m) = \frac {\sigma(x, f_{1}(n))}{\omega (x, f_{2}(m))}<br />
\sigma (x, f_{1}(n)) = (x - f_{1}(n_{1}))(x - f_{1}(n_{2})) \dot ... \dot (x - f_{1}(n_{i}))<br />
\omega (x, f_{2}(m)) = (x - f_{2}(m_{1})) (x - f_{2}(m_{2})) \dot ... \dot (x - f_{2}(i))<br />
f_{1}(n) = n_{i} = 2^{i}<br />
f_{2}(m) = m_{i} = 3m_{i - 1} - 2m_{i - 2}<br />
в моем решении https://www.cyberforum.ru/cgi-bin/latex.cgi?F(x, n, m) была вычислена с помощью двух функций числителя https://www.cyberforum.ru/cgi-bin/latex.cgi?\sigma(x, f_{1}(n)) и знаменателя https://www.cyberforum.ru/cgi-bin/latex.cgi?\omega (x, f_{2}(m)) и что самое главное получен верный результат. Вы просто запутались в задаче, поэтому и неверно составили алгоритм, т.е. просто не то что надо вычисляете. Посмотрите внимательно уравнение функции в первом топике. Доказательство моей правоты - верный результат при исходном х = 65. Без обид, ничего дурного.
а где дано числитель
(x - 2)(x - 4)( x - 6)(x - 8)... ? я такого не видел в задании.
тоже касается и знаменателя. думаю все вопросы будут сняты
0
Заблокирован
Автор FAQ
26.09.2011, 15:22 17
alkagolik,в задании в числетеле даны чётные минусы в знаменателе нечётные, все их перебрал в маткад, и програмно, я уже не пойму почему спорим???
Цитата Сообщение от akimbladina Посмотреть сообщение
0.452665
не думали что данный ответ может быть взят из головы лишь для того чтобы показать как вводить и как выводить
0
Заблокирован
26.09.2011, 15:27 18
ага вот так

Добавлено через 2 минуты
Цитата Сообщение от -=ЮрА=- Посмотреть сообщение
alkagolik,в задании в числетеле даны чётные минусы в знаменателе нечётные, все их перебрал в маткад, и програмно, я уже не пойму почему спорим???
не думали что данный ответ может быть взят из головы лишь для того чтобы показать как вводить и как выводить
вас не смущает третий множитель числителя?
1
Заблокирован
Автор FAQ
26.09.2011, 15:28 19
Цитата Сообщение от alkagolik Посмотреть сообщение
ага вот так
- в смысле?Я уж думал что скобки сокращаются, но они не сократимы, вбил в ручную чтобы и себя проверить и вас переубедить -результаты програмного расчёта и маткад совпали до 3-го знака думаю вопросов не далжно уже возникать...
0
Заблокирован
26.09.2011, 15:41 20
-=ЮрА=-, почему в задании в числителе нету четного числа 6?
1
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
26.09.2011, 15:41

Вычислить значение выражения: (2n)!/(n-1)!
Помогите,пожалуйста, написать программу,которая выводит (2n)!/(n-1)!,n вводим через клавиатуру...

Вычислить значение выражения
Перед задачей поясню я чет тупой и не могу понять как вставить знак корня , поэтому изначально...

Вычислить значение выражения
дан массив действительных чисел размерности n. Вычислить значение выражения:...

Вычислить значение выражения
Помогите перевести математическую функцию на язык программирования C++


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

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

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