生成并显示一系列分数

问题描述 投票:3回答:3

我想生成一个类似的系列:

1/2, -1/3, 1/4, -1/5, ..., 1/100 

我的代码没有以分数显示。

i= 2 : 100,  k=((-1).^(i+1)).*i, y= (1/k)
arrays matlab fractions
3个回答
0
投票

这是另一个解决方案:

k = 100;

num = repmat([1 -1],1,(k / 2)).';
num_str = num2str(num);

den = (1:k).';
den_str = num2str(den,'%-d');

disp([num_str repmat('\',k,1) den_str]);

输出:

 1\1  
-1\2  
 1\3  
-1\4  
 1\5  
-1\6  
 1\7  
-1\8  
 1\9  
-1\10 
...

3
投票

您应该在命令之间加上分号,并选择./而不是/进行除法。另外,你的表达中有一种谬误。 -1的力量应该是i

i= 2 : 100;  
k=((-1).^(i)).*i;
y= 1./k;

1
投票

如果你使用double,你会得到你的结果作为浮点数。如果你想要分数,你需要象征性地进行计算:

syms ii k y

for ii =  1 : 10
    k(ii) = ((-1).^(ii+1)).*ii;
    y(ii) = (1/k(ii));
end

y =

[ 1, -1/2, 1/3, -1/4, 1/5, -1/6, 1/7, -1/8, 1/9, -1/10]
© www.soinside.com 2019 - 2024. All rights reserved.