2014 dxdy logo

Научный форум dxdy

Математика, Физика, Computer Science, Machine Learning, LaTeX, Механика и Техника, Химия,
Биология и Медицина, Экономика и Финансовая Математика, Гуманитарные науки




Начать новую тему Ответить на тему На страницу 1, 2, 3, 4  След.
 
 Matlab: символьное вычисление членов посл-ти A006206
Сообщение26.04.2020, 23:36 


26/09/17
346
При вычислении в Матлабе членов последовательности A006206 по любой из формул, которые указаны в OEIS, получаю неверный результат при n>83.
Код следующий:
Используется синтаксис Matlab M
function [a] = calcType1Long (n)
    % Вычисление членов последовательноси A006206
    % ВНИМАНИЕ!!! если n>83, то функция дает неверное значение
    s=0;
    for i=1:n
        if mod(n,i)==0
            s=s+moebius(n/i)*(fibonacci(i+1)+fibonacci(i-1));
        end
    end
    a=s/n;
end

Функцию Мебиуса реализовал так:
Используется синтаксис Matlab M
function mu = moebius(n)
    if n == 1
        mu = 1;
    else
        a=factor(n);
        b=length(a);
        mu = (prod([0 a]-[a 0])~=0)*((2*(floor(b/2)==b/2))-1);
    end
end
 

Есть ли возможность с помощью Symbol toolbox получить точные значения для членов последовательности А006206 при больших аргументах?
Если да - как именно?

 Профиль  
                  
 
 Re: Matlab: символьное вычисление членов посл-ти A006206
Сообщение26.04.2020, 23:48 


21/05/16
4292
Аделаида
maximkarimov в сообщении #1458107 писал(а):
A006206

A006206

 Профиль  
                  
 
 Re: Matlab: символьное вычисление членов посл-ти A006206
Сообщение26.04.2020, 23:50 
Заслуженный участник
Аватара пользователя


01/09/13
4666
А где тут символьные вычисления?

 Профиль  
                  
 
 Re: Matlab: символьное вычисление членов посл-ти A006206
Сообщение26.04.2020, 23:51 


21/05/16
4292
Аделаида
maximkarimov в сообщении #1458107 писал(а):
mu = (prod([0 a]-[a 0])~=0)*((2*(floor(b/2)==b/2))-1);

Что это значит?

 Профиль  
                  
 
 Re: Matlab: символьное вычисление членов посл-ти A006206
Сообщение26.04.2020, 23:56 
Заслуженный участник
Аватара пользователя


01/09/13
4666
И Вы как-то странно, на мой взгляд, квадраты ищите....

 Профиль  
                  
 
 Re: Matlab: символьное вычисление членов посл-ти A006206
Сообщение27.04.2020, 10:12 


26/09/17
346
kotenok gav в сообщении #1458109 писал(а):
maximkarimov в сообщении #1458107 писал(а):
A006206

A006206


https://oeis.org/search?q=A006206&sort= ... &go=Search

 Профиль  
                  
 
 Re: Matlab: символьное вычисление членов посл-ти A006206
Сообщение27.04.2020, 10:15 


21/05/16
4292
Аделаида
maximkarimov в сообщении #1458148 писал(а):

Тег oeis.

 Профиль  
                  
 
 Re: Matlab: символьное вычисление членов посл-ти A006206
Сообщение27.04.2020, 10:34 


26/09/17
346
Geen в сообщении #1458112 писал(а):
И Вы как-то странно, на мой взгляд, квадраты ищите....


Код взял здесь: https://www.mathworks.com/matlabcentral ... u-function
Он дает верные значения (в том числе для больших аргументов).
Точные значения для больших чисел Фибоначчи c помощью Symbol toolbox можно получить так:
Используется синтаксис Matlab M
n=sym(300);
a=fibonacci(n);
 


Проблема в том, что все вместе не получается - ошибка выскакивает на самой последней строчке:
Используется синтаксис Matlab M
a= s/n;
 

Крутил и так и эдак - не получается. Потому и прошу помощи.

 Профиль  
                  
 
 Re: Matlab: символьное вычисление членов посл-ти A006206
Сообщение27.04.2020, 10:36 


21/05/16
4292
Аделаида
maximkarimov в сообщении #1458153 писал(а):
a= s/n;

Мб это целочисленное деление?

 Профиль  
                  
 
 Re: Matlab: символьное вычисление членов посл-ти A006206
Сообщение27.04.2020, 10:38 


26/09/17
346
kotenok gav в сообщении #1458154 писал(а):
maximkarimov в сообщении #1458153 писал(а):
a= s/n;

Мб это целочисленное деление?

Да, результат всегда целочисленный.

 Профиль  
                  
 
 Re: Matlab: символьное вычисление членов посл-ти A006206
Сообщение27.04.2020, 10:44 


21/05/16
4292
Аделаида
maximkarimov в сообщении #1458156 писал(а):
Да, результат всегда целочисленный.

Я не про это. Попробуйте ввести 3/5.

 Профиль  
                  
 
 Re: Matlab: символьное вычисление членов посл-ти A006206
Сообщение27.04.2020, 10:50 


26/09/17
346
kotenok gav в сообщении #1458157 писал(а):
maximkarimov в сообщении #1458156 писал(а):
Да, результат всегда целочисленный.

Я не про это. Попробуйте ввести 3/5.


Куда? Аргумент n целочисленный. Результат деления целочисленный, потому что суммирование производится по индексам, которые делят аргумент нацело.
Попробовал вот так:
код: [ скачать ] [ спрятать ]
Используется синтаксис Matlab M
function [C] = calcType1Long (n)
   % Вычисление членов последовательноси A006206
   % ВНИМАНИЕ!!! если n>83, то функция дает неверное значение
    s=0;
    for i=1:n
        if mod(n,i)==0
            s=s+moebius(n/i)*(fibonacci(i+1)+fibonacci(i-1));
        end
    end
    A = int64(s);
    B = int64(n);
    C = idivide(A,B);
    %a=s/n;
end
 


Чуть лучше, но при n=89 результат все равно не верен.

 Профиль  
                  
 
 Re: Matlab: символьное вычисление членов посл-ти A006206
Сообщение27.04.2020, 10:52 


21/05/16
4292
Аделаида
maximkarimov в сообщении #1458159 писал(а):
Куда?

В "командную строку" матлаба.

-- 27 апр 2020, 18:22 --

maximkarimov в сообщении #1458159 писал(а):
Чуть лучше - при n=89 теперь получаю 2, раньше было 3.

Посмотрите, чему равно s.

 Профиль  
                  
 
 Re: Matlab: символьное вычисление членов посл-ти A006206
Сообщение27.04.2020, 10:58 


26/09/17
346
kotenok gav в сообщении #1458161 писал(а):
maximkarimov в сообщении #1458159 писал(а):
Куда?

В "командную строку" матлаба.

-- 27 апр 2020, 18:22 --

maximkarimov в сообщении #1458159 писал(а):
Чуть лучше - при n=89 теперь получаю 2, раньше было 3.

Посмотрите, чему равно s.


Используется синтаксис Matlab M
>> 3/5

ans =

   0.600000000000000
 



s=3.980154972736918e+18

 Профиль  
                  
 
 Re: Matlab: символьное вычисление членов посл-ти A006206
Сообщение27.04.2020, 11:01 


21/05/16
4292
Аделаида
maximkarimov в сообщении #1458162 писал(а):
s=3.980154972736918e+18

Это при $n=89$?

 Профиль  
                  
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 52 ]  На страницу 1, 2, 3, 4  След.

Модераторы: Karan, Toucan, PAV, maxal, Супермодераторы



Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group