Octave 用倍频程绘制三维函数

Octave 用倍频程绘制三维函数,octave,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_

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

我说的第二个数字并不像我预期的那样。如何更改公式以使其正确渲染?

我尝试了您的脚本,但出现以下错误:

error: octave_base_value::array_value(): wrong type argument `complex matrix'
...
您的
月付款
是一个复杂的矩阵(不应该如此)

我想问题出在电源操作员
^
。您应该使用
^
进行逐元素操作

从文件中:

x^y
x**y
电力操作员。如果x和y都是标量,则此运算符返回x,并将x提升为y的幂。如果x是标量,y是方阵,则使用特征值展开计算结果。如果x是一个方阵。如果y是整数,则通过重复乘法计算结果;如果y不是整数,则通过特征值展开计算结果。如果x和y都是矩阵,则会产生错误

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");
该操作员的实施需要改进

x.^y
x.**y
逐元素幂运算符。如果两个操作数都是矩阵,则行数和列数必须一致


谢谢你的回答-我会在我的八度音阶不再出错时试一试。。。