Поиск:

Ответ в темуСоздание новой темы Создание опроса
> не могу запустить программу! 
:(
    Опции темы
molodzo
Дата 9.3.2009, 23:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 35
Регистрация: 18.11.2007

Репутация: нет
Всего: нет



Ничего. Это все условие... Но так наш препод пишет по памяти число "П" с огромным количеством знаков! А также говорит о погрешностях, возникающих из-за этих длинных чисел, то я думаю это логично...
PM MAIL   Вверх
Anikmar
Дата 9.3.2009, 23:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2513
Регистрация: 26.11.2006
Где: Санкт-Петербург

Репутация: 34
Всего: 59



Цитата(molodzo @  9.3.2009,  23:05 Найти цитируемый пост)
Но так наш препод пишет по памяти число "П" с огромным количеством знаков! А также говорит о погрешностях, возникающих из-за этих длинных чисел, то я думаю это логично... 

Хорошо, я рад за препода и изменю свой вопрос:
В каком виде должен быть ответ?
При к таком-то и х- таком-то? либо в виде таблицы? Если последнее то ответ может превратиться в книжку.
PM MAIL ICQ   Вверх
molodzo
Дата 9.3.2009, 23:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 35
Регистрация: 18.11.2007

Репутация: нет
Всего: нет



При k таком-то, x - таком-то. Ну и еще right и left.
PM MAIL   Вверх
Anikmar
Дата 9.3.2009, 23:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2513
Регистрация: 26.11.2006
Где: Санкт-Петербург

Репутация: 34
Всего: 59



Цитата(molodzo @  9.3.2009,  23:24 Найти цитируемый пост)
Ну и еще right и left. 

А это зачем? Для контроля? Что х задан правильно?

Не в даваясь в математику - можно и перебором сделать - раз х задан, перебираем тоько к, думаю там не особо много будет. А у вас в программе перебирается х. Зачем его перебирать, если он задан фиксировано? Надо перебирать к. Надеюсь, что до бесконечности дело не дойдет

Добавлено через 57 секунд
Цитата(molodzo @  9.3.2009,  23:24 Найти цитируемый пост)
При k таком-то

 Минутку, если и к задан, то что искать-то? Или я туплю?
PM MAIL ICQ   Вверх
molodzo
Дата 9.3.2009, 23:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 35
Регистрация: 18.11.2007

Репутация: нет
Всего: нет



Как это k задан??? smile  Да и x надо тож перебирать в этом интервале для каждого k (вроде так)!

А может задача уже решена  smile  smile 

Это сообщение отредактировал(а) molodzo - 9.3.2009, 23:37
PM MAIL   Вверх
Anikmar
Дата 9.3.2009, 23:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2513
Регистрация: 26.11.2006
Где: Санкт-Петербург

Репутация: 34
Всего: 59



Цитата(molodzo @  9.3.2009,  23:36 Найти цитируемый пост)
Как это k задан???   Да и x надо тож перебирать в этом интервале для каждого k (вроде так)!


Цитата(molodzo @  9.3.2009,  23:24 Найти цитируемый пост)
При k таком-то, x - таком-то. Ну и еще right и left.


Опять вернулись к интервалу. Если ответ выдавать для х от [-0.25 до 0.25) с шагом 10^(-15) то получится таблица с триллионами значений. Вот я и интересуюсь, может все-таки у х шаг какой-то более адекватный должен быть?


Цитата(molodzo @  9.3.2009,  23:36 Найти цитируемый пост)
А может задача уже решена     

 smile 
PM MAIL ICQ   Вверх
molodzo
Дата 9.3.2009, 23:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 35
Регистрация: 18.11.2007

Репутация: нет
Всего: нет



Ну хорошо... я завтра постараюсь уточнить!  smile 
Даже если брать с другим шагом, то как исправить ошибки?
PM MAIL   Вверх
Dmi3ev
Дата 9.3.2009, 23:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1698
Регистрация: 28.11.2007

Репутация: 16
Всего: 41



http://www.wikiznanie.ru/ru-wz/index.php/%...%81%D0%BB%D0%B0
вот факториал дробного числа... может у Вас в задаче к - целое?


--------------------

PM MAIL   Вверх
molodzo
Дата 10.3.2009, 00:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 35
Регистрация: 18.11.2007

Репутация: нет
Всего: нет



Да... я это упустил! K, видимо, целое. Ну даже не в этом сейчас суть... Пусть пока K- целое, x- изменяется с любым шагом... даже при таких условиях появляются ошибки...
PM MAIL   Вверх
Anikmar
Дата 10.3.2009, 00:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2513
Регистрация: 26.11.2006
Где: Санкт-Петербург

Репутация: 34
Всего: 59



Цитата(molodzo @  9.3.2009,  22:10 Найти цитируемый пост)
k изменяется от 0 до бесконечности ((4k+1)! / [(2k)!]^2) * x^2k = =1/2*[(1-4x)^(-3/2) + (1+4x)^(-3/2)]

X принадлежит интервалу [-1/4 ; 1/4)


Берем начальный х:
-1/4

Берем указанную формулу (вернее часть)
(1+4x)^(-3/2)
1+4*(-1/4) = 0
0 в отрицательной степени вообще существует?
PM MAIL ICQ   Вверх
Dmi3ev
Дата 10.3.2009, 00:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1698
Регистрация: 28.11.2007

Репутация: 16
Всего: 41



Цитата

0 в отрицательной степени вообще существует? 

будет давать бесконечность...


--------------------

PM MAIL   Вверх
Anikmar
Дата 10.3.2009, 00:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2513
Регистрация: 26.11.2006
Где: Санкт-Петербург

Репутация: 34
Всего: 59



Цитата(Dmi3ev @  10.3.2009,  00:10 Найти цитируемый пост)
Цитата

0 в отрицательной степени вообще существует? 

будет давать бесконечность... 

Значит левая граница изначально бессмыслена?
PM MAIL ICQ   Вверх
molodzo
Дата 10.3.2009, 00:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 35
Регистрация: 18.11.2007

Репутация: нет
Всего: нет



Ну вы меня окончательно запутали!  smile
Все... завтра попробую уточнить!

Спасибо.

Это сообщение отредактировал(а) molodzo - 10.3.2009, 00:29
PM MAIL   Вверх
Dmi3ev
Дата 10.3.2009, 00:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1698
Регистрация: 28.11.2007

Репутация: 16
Всего: 41



Цитата

Все... завтра попробую уточнить! 

совет, у тебя много расчетов, поэтому постарайся помочь себе
1) вот твое выражение
((4k+1)! / [(2k)!]^2) * x^2k
х постоянно меняется с шагом 10^(-15) поэтому выражение x^2k считать надо каждый раз, а вот выражение (4k+1)! / [(2k)!]^2) относительно постоянное, те на его изменение влияет к, а к меняется только когда х пройдет от -0.25 до 0.25 с шагом  10^(-15), представь насколько будет быстрее твоя программа, если вот этот расчет (4k+1)! / [(2k)!]^2) ты будешь делать не каждый раз... а один раз для к=1, потом будешь пересчитывать только когда к будет 2... гораздо рациональнее просто ты порядка 2*10^15 раз лишних вот это выражение, а это немало...

Добавлено через 4 минуты и 50 секунд
Цитата

//...
while (...pow(static_cast<double>(10), -15))

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

Добавлено через 8 минут и 32 секунды
Код

#include "stdafx.h"
#include <math.h>
#include <stdio.h>
#include <iostream>
using namespace std;

int fact(int val)
{
    if (val==0)
        return 1;
    else
        return (val*fact(val-1));
}
int _tmain()
{
    double x = -0.25;    
    int k = 1;
    double left = 0, right = left;        
    double step = pow(0.1, 5);
    cout<<"Step="<<step<<endl;
    do
    { 
        cout<<"x="<<x<<endl;
        left = (fact(4 * k + 1) / pow((float)fact(2 * k), 2)) * pow(x, 2 * k);    
        right = 0.5 * ( pow(1 - 4 * x, -1.5) + pow( (1 + 4 * x), -1.5) );        
        x += step;
        
        if (x >=0.25)
        {
            x = -0.25;
            k ++;
        }
    }
    while (fabs(right - left) >= step);
    cout<<k<<endl;
    system("pause");
    return 0;
}

шаг поменьше взял, вроде работает...
при этом еще учти то что говорит Anikmar про нули в отрицательной степени и посмотри, когда такое может получиться... 


--------------------

PM MAIL   Вверх
molodzo
Дата 10.3.2009, 17:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 35
Регистрация: 18.11.2007

Репутация: нет
Всего: нет



Уточнил:
1) препод изменил условия: x изменяется от (-1/4; 1/4). Следует 0 в знаменателе не будет!
2) x можно ввести самому в пределах интервала

Dmi3ev, а чем ты компилируешь, а то у меня возникает ошибка(в C++ Builder 2007): Floating point overflow...

Это сообщение отредактировал(а) molodzo - 10.3.2009, 18:08
PM MAIL   Вверх
Страницы: (4) Все 1 [2] 3 4 
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++ Builder"
Rrader

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по С++ Builder обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Настоятельно рекомендуем заглянуть в DRKB (Delphi Russian Knowledge Base) - крупнейший в рунете сборник материалов по Дельфи


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Rrader.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C++ Builder | Следующая тема »


 




[ Время генерации скрипта: 0.1295 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.