4

我注意到在评估向量时对我来说是一种无法预料的行为。直接执行它似乎与在循环中建立索引确实不同。谁能给我一些帮助?我知道可能解释了它是如何进行每个操作的,所以我需要一些关于如何查找它的键

感谢您的建议提前感谢

例子:

x=[0.05:.01:3];
n=size(x,2);
y1 = (8*x-1)/(x)-(exp(x));

for i=1:n
    y2(i)=(8*x(i)-1)/(x(i))-(exp(x(i)));
end

a1=[x;y1];
a2=[x;y2];

plot(x,y1, 'red')
hold on
plot(x,y2, 'blue')

这里的情节:http: //i.stack.imgur.com/qAHD6.jpg

结果:

a2:
0.05   -13.0513
0.06   -9.7285
0.07   -7.3582
0.08   -5.5833
0.09   -4.2053
0.10   -3.1052
0.11   -2.2072
0.12   -1.4608
0.13   -0.8311
0.14   -0.2931
0.15   0.1715
0.16   0.5765




a1:
0.05   6.4497
0.06   6.4391
0.07   6.4284
0.08   6.4177
0.09   6.4068
0.10   6.3958
0.11   6.3847
0.12   6.3734
0.13   6.3621
0.14   6.3507
0.15   6.3391
0.16   6.3274
4

2 回答 2

6

你想要的是:

 y1 = (8*x-1)./(x)-(exp(x));   % note the ./

代替:

 y1 = (8*x-1)/(x)-(exp(x)); 

作为旁注,您可以键入help /以查看您最初的第一个语句实际上在做什么。它正在有效地做(x'\(8*x-1)')'(注意反斜杠)。

于 2012-05-29T23:05:37.593 回答
3

错误出现在您对 y1 的第一次向量计算中。问题出在除以 x 的部分。向量/矩阵除法不同于单元素除法,将返回向量/矩阵结果。

解决方案是对这些向量进行逐个元素的划分。用于此的矢量符号快捷方式是使用 ./(点分隔):

y3 = (8*x-1)./(x)-(exp(x));

现在您应该发现 y2 和 y3 是相同的。

于 2012-05-29T23:05:36.753 回答