LINUX.ORG.RU

Ответ на: комментарий от yvv

– Поручик, о чем вы мечтаете, глядя на этот кирпич?
– О бабах, конечно!
– Но почему?!
– Да я всегда о них мечтаю…

AntonI ★★★★★
()
Ответ на: комментарий от no-such-file

Собрал. Оно не все плагины видит. Как минимум надо разбираться почему.

deep-purple ★★★★★
()
Ответ на: комментарий от system-root

Пусть gnome midnight commander от первого гнума портирует.

anon1984
()
Ответ на: комментарий от AntonI
Напишите программу которая суммирует ряд x+x**3/5+x**5/5+... из хотя бы 10^10 членов.

Но зачем?? Если уже первые 10-20 членов ряда дают 15 значащих цифр

def f(x,n):
    return sum(x**(2*k+1)/(2*k+1) for k in range(0, n))
    
for p in range(20):
    print(p, f(0.1, p))
0 0
1 0.1
2 0.10033333333333334
3 0.10033533333333335
4 0.10033534761904764
5 0.10033534773015874
6 0.10033534773106784
7 0.10033534773107552
8 0.1003353477310756
9 0.1003353477310756
10 0.1003353477310756
11 0.1003353477310756
12 0.1003353477310756
13 0.1003353477310756
14 0.1003353477310756
Crocodoom ★★★★★
()
Ответ на: комментарий от Crocodoom

не при |x| стремящемся к единице.

Ну и ТС вот тут Читали ли вы монографию Дональда Кнута «Искусство программирования»? (комментарий) и ниже рвал рубаху на груди что дескать теория (программистам) нинужна. Я с-но хотел на небольшом примере показать ему как знание теории помогает обогнать на слоупочном питоне сверхбыстрый параллельный С++ код - если бы он конечно взялся его написать;-)

AntonI ★★★★★
()
Ответ на: комментарий от tz4678

Алгоритмы сортировки это часть теории. Я привел пример, и я не брался ничего Вам доказывать - если Вы не умеете пользоваться местным поиском то это Ваши сложности а не мои.

AntonI ★★★★★
()
Ответ на: комментарий от beastie

Дяденька, мы сами не местные, всех этих ваших программистких университетов не заканчивали… мне вольфрама, питона и плюсов как то хватает. Хотя вот последнюю неделю потратил на взятие одного многомерного интеграла, на кластере что даже считал компьютерной алгеброй. А сення утром проснулся и в уме взял;-(

Хотя надо будет на ВМК студентам эту задачу кинуть, интересно допетрит кто нить или нет;-)

Кстати небольшое замечание предыдущим ораторам - если не хотите страдать от ошибки округления то такие ряды надо суммировать таки с конца при |x|<1.

AntonI ★★★★★
()
Ответ на: комментарий от AntonI

Для 10^10 не будет бесконечность. А готовой формулы нет. Вот для x > 1 это уже справедливый челендж :)

С другой стороны, изначальный ряд с постоянной пятёркой сводится к геометрической прогрессии.

Kogrom
()
Последнее исправление: Kogrom (всего исправлений: 1)
Ответ на: комментарий от Kogrom

Для 10^10 будет, и для 1000 членов может быть - все зависит от x.

Для ограниченного числа членов можно кстати подумать - но лень. Производная от этой штуки сводится к сумме геометрической прогрессии;-)

Ну и с исходной пятеркой - да, спасибо, тоже хороший пример.

А еще оно легко факторизуется - это помогает если с конца суммировать.

AntonI ★★★★★
()
Ответ на: комментарий от AntonI

Не, при |x| стремящемся к единице суммировать 10 миллиардов членов тоже не надо.

Ваш ряд — это функция f(x) = atanh(x) - x = 1/2 (log(1+x) - log(1 - x)) - x

Короче всё сводится к тому, как вычислять логарифм около нуля.

А вычисляется он очень просто. Представляете число через мантиссу и порядок, тогда log(a 10^{-n}) = -n log(10) + log(a). Поскольку 1 <= a < 10, то его можно считать обычным тейлором, хватит 10-15 членов.

Crocodoom ★★★★★
()
Ответ на: комментарий от Crocodoom

Это если знать что за функция, то есть чуть подумать и знать теорию (которая с т.з. ТС ненужна:-))

Обратите внимание как Вы раскладываете логарфм и как он разлоден в исходном ряде. Если считать его в лоб - то при х стремящемся к единице он очень плохо сходится. Что бы бесконечность по единичке набрать для дабла нужно очень много членов:-)

AntonI ★★★★★
()
Ответ на: комментарий от deep-purple

Чем Carla или AlsaModularSynth не устраивают?

kott ★★★★★
()
Ответ на: комментарий от AntonI

Вольфрам откроют, если не глупые. А если чуть поглупее, то будут допетривать.

ЗЫ

Глянул ТС-а по ссылке, лучше бы он ничего не брался писать. Полурабочего мусора на питоне валяется на гитхабе вагон и маленькая тележка.

peregrine ★★★★★
()
Последнее исправление: peregrine (всего исправлений: 1)

А вообще определись что тебе самому нужно и чем ты сам будешь пользоваться,иначе даже не начнёшь писать.

В крайнем случае начни с исправлений багов и реализаций фич интересного тебе существующего проекта.

grem ★★★★★
()
Ответ на: комментарий от AntonI

Да, контекст понятен. Я с общих позиций писал: в теории приближенных вычислений есть «rule of thumb» — если ряд плохо сходится (а если потребовалось 10^10 членов — это «плохо сходится»), то надо менять ряд, а не суммировать в лоб.

Crocodoom ★★★★★
()
Ответ на: комментарий от tz4678

Your account has been flagged.

Because of that, your profile is hidden from the public. If you believe this is a mistake, contact support to have your account status reviewed.

хз как ты там что-то посмотрел

tz4678 ★★
() автор топика
Ответ на: комментарий от AntonI

Мне интересны рассуждения такого эксперты как ты. Во т есть C++ код с твоими учебными алгоритмами (которые кроме как для зачетов нигде не нужны):

#include <iostream>
#include <stdlib.h>
#include <time.h>

template <typename T>
void swap(T &x, T &y)
{
  x = x ^ y;
  y = y ^ x;
  x = x ^ y;
}

template <typename T>
void sort(T *arr, int size)
{
  for (int i = 0; i < size; i++)
  {
    bool flag = true;
    for (int j = 0; j < size - (i + 1); j++)
    {
      if (arr[j] > arr[j + 1])
      {
        flag = false;
        swap(arr[j], arr[j + 1]);
      }
    }
    if (flag)
    {
      break;
    }
  }
}

int main()
{
  srand(time(NULL));
  int size = 1000;
  int arr[size];
  for (int i = 0; i < size; ++i)
  {
    arr[i] = rand() % 1000;
  }
  std::cout << "Before sorting:";
  for (int i = 0; i < size; ++i)
    std::cout << " " << arr[i];
  std::cout << std::endl;
  sort(arr, size);
  std::cout << "After:";
  for (int i = 0; i < size; ++i)
    std::cout << " " << arr[i];
  std::cout << std::endl;
}

Этот код написал я, человек, знания которого о C++ ограничиваются тем, что его синтаксис похож на JS либо PHP, ну и работой со ссылками и указателями в другмих языках.

Вот мы его скомпилировали и запустили:

❯ time ./bubble                                                                              
Before sorting: 274 ... 289 693 687
After: 0 1 1 ... 984 984 985 986 987 988 988 990 992 992 993 994 995 996 996 997 998 999
./bubble  0.01s user 0.00s system 96% cpu 0.012 total

А теперь запустили код на Python:

#!/usr/bin/env python
import random
from typing import Any, List


def bubble(arr: List[Any]) -> List[Any]:
    length = len(arr)
    changed = True
    while changed:
        changed = False
        for i in range(length - 1):
            if arr[i] > arr[i + 1]:
                arr[i], arr[i + 1] = arr[i + 1], arr[i]
                changed = True
    return arr


if __name__ == '__main__':
    nums = [random.randint(0, 1000) for _ in range(1000)]
    print('Before:', nums)
    bubble(nums)
    print('After:', nums)

Вышло в 32 раза медленее.

❯ time ./bubble.py                                                                             
Before: [...]
After: [...]
./bubble.py  0.39s user 0.06s system 116% cpu 0.395 total

А теперь с помощью встроенных функций отсортируем список ака массив:

❯ time python -c 'import random; print(sorted([random.randint(0, 1000) for _ in range(1000)]))'
[0, 2, 2, 3, 4, 6, 9, 10, ..., 936, 937, 938, 938, 939, 940, 940, 940, 941, 942, 942, 944, 944, 945, 946, 948, 948, 948, 948, 949, 952, 953, 954, 955, 955, 955, 956, 961, 962, 964, 964, 967, 968, 968, 970, 970, 970, 972, 972, 973, 973, 973, 973, 977, 977, 978, 979, 981, 982, 984, 984, 986, 986, 987, 987, 988, 989, 989, 989, 990, 994, 995, 998, 999, 1000]
python -c   0.19s user 0.08s system 129% cpu 0.206 total

Вышло всего 17 раз медленее… А вот теперь перепиши код на Питоне так чтобы он работал быстрее C++. Хотя я понимаю что это невозможно, но не представляюв какой ситуации Python может приблизиться по скорости даже к C++ (чистая сишка быстрее крестов). Ну хотя бы обгони по скорости встроенные функции. Отсюда вывод: на скриптовых языках нет смысла пытаться реализовать алгоритмы, нужно писать сишыне биндинги. Так же в Python не нужны почти все паттерны из GoF и т.д., так как это не кресты, не джава и даже не додиез.

tz4678 ★★
() автор топика
Последнее исправление: tz4678 (всего исправлений: 1)
Ответ на: комментарий от tz4678

А че меня бомбит? - А то что рачье, которое лезет из своей Джавы либо Матлаба и почей дрисни убивает язык. Мне тревожно уже от того, что для неэффектиных менегеров Python стал синонимом дата сасаенсу, и то что эти дегенераты с Pandas благодаря курсам от говнопараши под названием анСкиллбокс заполонили Интернет. Я против хайпа вокруг питона, я не хочу чтобы его убили как пхп или ноду. Шизики-математики и петухи на самокатах точно не должны изучать Python

tz4678 ★★
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.