使用Octave绘制3D功能

时间:2011-06-03 05:40:35

标签: octave

我在绘制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");

像我所说的第二个数字并不像我期望的那样。如何更改我的公式以使其正确呈现?

1 个答案:

答案 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
  元素功率运算符。如果两个操作数都是矩阵,则行数和列数必须一致。