我在绘制3d函数时出现问题 - 当我输入数据时,我得到一个线性图,如果我手动执行计算,则值不会累加。我认为这个问题与使用矩阵有关。
INITIAL_VALUE=999999;
INTEREST_RATE=0.1;
MONTHLY_INTEREST_RATE=INTEREST_RATE/12;
# ranges
down_payment=0.2*INITIAL_VALUE:0.1*INITIAL_VALUE:INITIAL_VALUE;
term=180:22.5:360;
[down_paymentn, termn] = meshgrid(down_payment, term);
# functions
principal=INITIAL_VALUE - down_payment;
figure(1);
plot(principal);
grid;
title("Principal (down payment)");
xlabel("down payment $");
ylabel("principal $ (amount borrowed)");
monthly_payment = (MONTHLY_INTEREST_RATE*(INITIAL_VALUE - down_paymentn))/(1 - (1 + MONTHLY_INTEREST_RATE)^-termn);
figure(2);
mesh(down_paymentn, termn, monthly_payment);
title("monthly payment (principal(down payment)) / term months");
xlabel("principal");
ylabel("term (months)");
zlabel("monthly payment");
像我所说的第二个数字并不像我期望的那样。如何更改我的公式以使其正确呈现?
答案 0 :(得分:1)
我尝试了你的脚本,并收到以下错误:
error: octave_base_value::array_value(): wrong type argument `complex matrix'
...
您的monthly_payment
是一个复杂的矩阵(它不应该是)。
我猜问题是权力运算符^
。您应该使用.^
进行逐元素操作。
来自文档:
x ^ y
x ** y
电力运营商。如果x和y都是标量,则此运算符将x提升返回到幂y。如果x是标量而y是方阵,则使用特征值展开计算结果。如果x是方阵。如果y是整数,则通过重复乘法计算结果,如果y不是整数,则通过特征值展开计算结果。如果x和y都是矩阵,则会产生错误。需要改进此运营商的实施。
x。^ y
x。** y
元素功率运算符。如果两个操作数都是矩阵,则行数和列数必须一致。