Гость
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Возведение больших чисел в степень VBA / 4 сообщений из 4, страница 1 из 1
17.04.2016, 11:55
    #39217491
Volodbka
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Возведение больших чисел в степень VBA
Примеры нахождения алгебраических функций для длинных чисел f(x)= ln(x), f(x)= exp(x), f(x)=x^n.
1 Используются все основные арифметические функции для работы с длинными числами 19067087 .
2 Массивы хранения чисел, они используются при счёте рядов:
- ReciprocalInteger(n), хранит массив чисел 1/n;
- ReciprocalPeriod(n), массив (1/1)*(1/2)*(1/n),
где n – натуральные числа.
3 С помощью арифметических функций можно рассчитывать геометрические, алгебраические функции, для чего их необходимо разложить в ряды:
- логарифм - Ln(x), f(x) =… (вид ряда ищите в справочниках);
- экспонента - Exponent(х) ,f(x) =1+x/(1)+(x^2)/(1*2)+(x^3)/(1*2*3)+…;
4 Возведение в степень Powerd(x;k).
x^y=exp(y*ln(x))
Естественно x, k любые положительные или отрицательные числа.
Время на расчёты данные функции затрачивают очень много (десятки минут!!!), а результат по точности не ахти.

Код: vbnet
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.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
76.
77.
78.
79.
80.
81.
82.
83.
84.
85.
86.
87.
88.
89.
90.
91.
92.
93.
94.
95.
96.
97.
98.
99.
100.
101.
102.
103.
104.
105.
106.
107.
Option Explicit

Dim RecPeriod$(300)
Dim IRP%

Dim RecInteger$(300)
Dim RI%

Public Function ReciprocalInteger$(ByVal inkI%)
Dim ik%
Dim m$
Dim w$
''Dim h$

If Val(RI%) = 0 Then
w$ = "1"
For ik% = 1# To 200# Step 1#
m$ = MathQuotient$("1", CStr(Int(ik%)))
''w$ = product(m$, w$)
''w$ = h$
RecInteger$(ik%) = m$
Next ik%
End If

If Val(RI%) = 0 Then RI% = 1
ReciprocalInteger$ = RecInteger$(inkI%)
End Function

Public Function ReciprocalPeriod$(ByVal ink%)
Dim ik%
Dim m$
Dim w$
''Dim h$

If Val(IRP%) = 0 Then
w$ = "1"
For ik% = 1# To 200# Step 1#
m$ = MathQuotient$("1", CStr(Int(ik%)))
w$ = product(m$, w$)
''w$ = h$
RecPeriod$(ik%) = w$
Next ik%
End If

If Val(IRP%) = 0 Then IRP% = 1
ReciprocalPeriod$ = RecPeriod$(ink%)
End Function

Public Function exponent$(ByVal ova$)
Dim ima$
Dim i%
Dim w$
Dim h$
Dim m$
Dim uguu$

ova$ = Trim(ova$)
uguu$ = "1"
w$ = "1"
h$ = "1"
ima$ = "0"
'1+C68/(1)+(C68^2)/(1*2)+(C68^3)/(1*2*3)+(C68^4)/(1*2*3*4)+(C68^5)/(1*2*3*4*5)+(C68^6)/(1*2*3*4*5*6)+(C68^7)/(1*2*3*4*5*6*7)

For i% = 1# To 200# Step 1#
  w$ = product$(ova$, w$)
  m$ = product$(w$, ReciprocalPeriod$(i%))
  uguu$ = TotalPluss$(uguu$, m$)
Next i%
exponent$ = uguu$

End Function


Public Function Lno$(ByVal smova$)

Dim hLno$
Dim kim$
Dim Gno$
Dim iLno%
Dim phLno$
Dim mLno$

smova$ = FormatNumbe(smova$)

mLno$ = "0"
hLno$ = "1"
kim$ = "0"
Gno$ = Totalminuss$(smova$, "1")
Gno$ = MathQuotient$(Gno$, smova$)

For iLno% = 1 To 200 Step 1
hLno$ = product$(hLno$, Gno$)
phLno$ = product$(hLno$, ReciprocalInteger$(iLno%))
mLno$ = TotalPluss$(mLno$, phLno$)
Next iLno%

Lno$ = mLno$
End Function

Public Function Powerd$(ByVal base$, ByVal degree$)
Dim awq$
Dim bwq$

awq$ = Lno$(base$)
bwq$ = product$(degree$, awq$)
Powerd$ = exponent$(bwq$)
End Function
...
Рейтинг: 0 / 0
17.04.2016, 11:58
    #39217492
Volodbka
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Возведение больших чисел в степень VBA
Просто публикация
...
Рейтинг: 0 / 0
17.04.2016, 12:09
    #39217495
ПЕНСИОНЕРКА
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Возведение больших чисел в степень VBA
Volodbkaалгебраических функций для длинных чисел

о какой длине идет речь 15-30-50-999 знаков
...
Рейтинг: 0 / 0
17.04.2016, 12:23
    #39217498
Volodbka
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Возведение больших чисел в степень VBA
ПЕНСИОНЕРКА,
с настоящими настройками если возвести 2^2 то результат будет приблизительно 3,999 девятки до 60 знака.
Можно открутить до скольки угодно было бы время и моща
...
Рейтинг: 0 / 0
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Возведение больших чисел в степень VBA / 4 сообщений из 4, страница 1 из 1
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]