2014-11-04 3 views
0

Я новичок в VBA, и у меня вопрос, т.е. у меня есть математическая функция 1 + 2x¹ + 3x² + 4x³ + ... + 10x⁹, и мне нужно решить ее двумя способами:Функции VBA в MS Excel

  1. Я могу использовать операции по подъему (аналоговые pow в Pascal) и инструкцию IF;
  2. без роста операций и IF заявление ...

Я попытался это:

Public Function test(x) 


test = 1 + 2*x^1 + 3*x^2 + 4*x^3 + 5*x^4 + 6*x^5 + 7*x^6 + 8*x^7 + 9*x^8 + 10*x^9 


End Function 

, но я думаю, что он возвращает неправильный ответ - 2441406 с вызовом =test(5)

Так может кто-нибудь дает какие-либо советы или помогает с моей проблемой?

+1

Если вы хотите, чтобы серия х поднялась до степени от 0 до 9, ответ правильный. Ваша слегка некоторая проза описания того, что вы хотите, меня смущает (по 10x9, вы имеете в виду 10 раз х до 9 или что?). Кроме того, простите меня, но я не уверен, что вы подразумеваете под «IF statament»; 2 - без увеличения операций и утверждения IF. ' –

+2

Если 2441406 - неправильный ответ, тогда какой правильный ответ? – DeanOC

+0

Я вижу ваш отредактированный вопрос, но мои запросы остаются. Ваша функция возвращает ряд, для i = 0 - 9, Sum ((i + 1) * x^i). Если это не то, что вы хотите, то, возможно, вам нужно более четко определить алгебраический ряд. –

ответ

3

Вам потребуется * как multiper:

Public Function test(x) 
    test = _ 
     1 _ 
     + 2 * (x^1) _ 
     + 3 * (x^2) _ 
     + 4 * (x^3) _ 
     + 5 * (x^4) _ 
     + 6 * (x^5) _ 
     + 7 * (x^6) _ 
     + 8 * (x^7) _ 
     + 9 * (x^8) _ 
     + 10 * (x^9) 
End Function 
+0

, действительно, у него есть неправильный синтаксис, поэтому мне интересно, как он дал какой-либо ответ, не говоря уже о 2441406 :). Это приведет к синтаксической ошибке без вашей коррекции. –

+0

Там Cor_Blimey объяснил, что он сделал уравнение в другом месте и дал неправильный ответ. Поэтому я думаю, что здесь есть два вопроса: 1) Почему код не работает, 2) Если код работает, это правильное уравнение. Правильный ответ кажется 23803711, кстати, – Alex

+0

@alex, yeap, правильный ответ 23803711, но я не могу это решить VBA ( –

4

Если вы не можете использовать VBA для этого существует формула решения. Предполагая, что ваша переменная x находится в ячейке A1, вы должны использовать эту формулу в другую ячейку (я использовал B1):

=SUMPRODUCT(ROW($1:$10)*A1^(ROW($1:$10)-1)) 

Когда A1 = 5, он вернулся 23803711, как и ожидалось.

Смежные вопросы