Это для моего курса по числовым методам. Я очень стараюсь понять MATLAB и его синтаксис, но я на 100% самоучка, поэтому, пожалуйста, несите меня, если мои попытки кажутся смешными.Выполнение функции, чувствительной к векторному вводу
Я написал эту очень легко функцию, чтобы приблизить число е
function e= calcEulerLimit(n)
e = (1 + 1./n).^n;
end
Это «основной» определение числа е, используя предел п к бесконечности подхода. Для MATLAB я определил следующий вектор (когда я говорю о п в последнем, я всегда со ссылкой на этот вектор n
)
n=[1:1:10]=[ 1 2 3 4 5 6 7 8 9 10 ]
и выходных работает просто отлично, как я и ожидал, он чувствителен к вектору n
ввод, когда я вызываю свою функцию в MATLAB.
>> calcEulerlimit(n)
ans =
2.0000 2.2500 2.3704 2.4414 2.4883 2.5216 2.5465 2.5658 2.5812 2.5937
Теперь я хочу, чтобы сделать точно такой же, как и выше с подхода Тейлора, используя бесконечную формулу суммирования описать е, вот где я застрял, следующий простой код работает:
function e = calcEulerSum(n)
e=1; % base-case, start variable
for i=1:1:n % for loop with step size one
e=e+1/factorial(i)
end
end
но этот вход, конечно, не работает, когда я хочу ввести вектор, такой как n
, который вычисляет все переменные.
Я пытался что-то вдоль линии с другой цикл, и время цикла, но цикл в то время как кажется, никогда не прекращается:
function e = calcEulerSum3(n)
while n
e=1;
e = e + 1./cumprod(n);
end
end
Использование cumprod(n)
, чтобы получить факторный значение каждого элемента столбца моего вектора n
.
Спасибо за ваш ответ, я буду читать о cumsum, До сих пор я в для I = п, е = 1, е = е + 1./factorial(n); , который мне казался понятным, но выход, который я получаю, равен 2, 1.5, 1.1667, 1.0417 , так что кажется, что он «работает» помимо добавочной части. – Spaced
@Spaced: 'n' - вектор. Если вы используете цикл 'for', вам, вероятно, потребуется индексировать его:' n (i) '. И вам, вероятно, также понадобится сохранить выходы в векторе: 'e (i)'. – horchler
См. Приведенный выше пример псевдокода. Выход 'e' будет вектором, не так ли? Вы можете рассчитать первый элемент 'e'? Учитывая первый элемент, можете ли вы рассчитать второй ('i = 2')? И так далее ... Вы можете сделать это в цикле 'for', а затем вы можете увидеть, как все это можно реализовать только в одной строке кода, используя' cumsum'. – horchler