我注意到在评估向量时,对我来说是一种不可预测的行为。直接在循环中进行索引似乎真的不同。谁能给我一些帮助呢? 我知道可能会解释它是如何进行每个操作的,所以我需要一些关于如何查找的关键
感谢您的建议 提前谢谢
示例:
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
答案 0 :(得分:6)
你想要的是:
y1 = (8*x-1)./(x)-(exp(x)); % note the ./
而不是:
y1 = (8*x-1)/(x)-(exp(x));
作为旁注,您可以键入help /
以查看原始第一个语句的确实在做什么。它实际上是(x'\(8*x-1)')'
(注意反斜杠)。
答案 1 :(得分:3)
错误出现在y1的第一个向量计算中。问题在于除以x的部分。向量/矩阵除法与单个元素除法不同,将返回向量/矩阵结果。
解决方案是对这些向量进行逐元素划分。矢量符号快捷方式是使用./(点分隔):
y3 = (8*x-1)./(x)-(exp(x));
现在您应该发现y2和y3完全相同。