求解一个未知的方程,作为函数给出

时间:2016-10-15 19:16:41

标签: algorithm matlab equation-solving

我有一份家庭作业,我似乎无法弄明白该怎么做。我给了r以外的所有内容。我需要使用这个公式,因为它保存为上一个练习中的函数。功能是:

function t = annuitet( g , T , G , r , n )
%Et annuitetslån
%g  termingebyr på kr for hvert terminforfall
%T  annuitetslån på kr
%G  etablerings gebyr
%r  årlig rente
%n  antall terminer (=antall år ganger 12)

t = g + ((T+G)*((r/12)/100))/(1-(1+(r/12)/100)^(-n*12));

end

不要介意它是挪威语。

我得到了:

T = 2000000
n = 20
G = 3000
g = 50
t = 9500

我知道r必须是1.26%,但我不能为我的生活找出如何操纵这个来制作一个能让它发挥作用的脚本。

目前有:

T = input('Tast inn lånebeløp (kr):');
n = input('Løpetid (år):');
G = input('Etableringsgebyr (kr):');
g = input('Termingebyr (kr):');

disp('Absolutt minste terminbeløp (Rente = 0 %): 8396 kr');
t = input('Tast inn terminbeløpet du kan klare (kr):');

提前感谢任何提示/提示:)

1 个答案:

答案 0 :(得分:3)

您正在尝试解决1个未知的等式。在数字上进行此操作的方法是定义残差的等式(即“我对r进行猜测的误差有多差”,然后尝试最小化所述残差。

执行此操作的一种方法是使用fzero。另一种方法是使用一些精细网格(例如r)猜测0.001:0.001:100并查看哪个r为您提供最低残差。另一种方法是通过做前者,并绘制它(各种各样的“图形解决方案”)。

由于这是一项家庭作业,我将其余的解决方案作为“隐藏”文本。我鼓励你阅读文档并尝试自己解决,然后当你成功时,将它与我的答案进行比较:)

祝你好运!

  

r_sol = fzero(@(r)t-annuitet( g , T , G , r , n ), 1000);
-> r_sol = 1.264530947561246