# How can I make my function accept vectors instead of scalars(I'm Really New to Matlab)

9 ビュー (過去 30 日間)
Japoe25 2015 年 4 月 7 日
コメント済み: Julia 2015 年 4 月 7 日
I'm trying to make a taylor series expression for e^x = sum(x^n/n!) for n=0:50 and for x^n/n!>0.01 So far I have this:
function [ xs ] = myExpfuntion(x)
x=input('Enter x: ');
xl=zeros(51,1); %preallocation of the storage
for n= 1:50
if ((x^n)/factorial(n))>0.01
xl(n+1) = ((x^n)/factorial(n)); %save every iteration result
end
end
xs=1+sum(xl) ; %calculate the sum of the iteration results
end
I want to delete the line "x=input('Enter x: ');" and just place my value for x in the function i.e. myExpfunction(x) and also make the function work with x being a row vector i.e x=[1 2 3]
My current function wont allow me to do so and I don't get what I'm doing wrong. Please help!

サインインしてコメントする。

### 採用された回答

Julia 2015 年 4 月 7 日
Hi,
I modified you code so that vectors can be used as input.
However, I am not sure, if I did it in the right way. It should help you though to get what you want:
function [ xs ] = myExpfuntion(x)
xs=zeros(1,length(x));
xl=zeros(51,length(x)); %preallocation of the storage
for n= 1:50
if ((x.^n)/factorial(n))>0.01
xl(n+1,:) = ((x.^n)/factorial(n)); %save every iteration result
end
end
for i = 1:length(x)
xs(i)=1+sum(xl(:,i)) ; %calculate the sum of the iteration results
end
end
This code results in:
>> xs=myExpfuntion([1,2,3,4])
xs =
2.7083 7.0000 16.3750 34.3333
##### 3 件のコメント表示非表示 2 件の古いコメント
Julia 2015 年 4 月 7 日
Hello Japoe,
1/(5!) is smaller than 0.01. So for n greater than 4 the if statement is never true again. Perhaps you have to modify the if condition.

サインインしてコメントする。

### Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!