求解一个未知数的方程,作为函数给出
Solving an equation of one unknown, given as a function
我有一项家庭作业,但我似乎不知道该怎么做。除了 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):');
提前感谢任何 hints/tips :)
您正在尝试求解一个包含 1 个未知数的方程式。在数值上解决这个问题的方法是为残差定义一个方程(即 "how bad is my error given some guess for r
"),然后尝试最小化所述残差。
一种方法是使用 fzero
。另一种方法是使用一些精细网格(例如 0.001:0.001:100
)猜测 r
,然后查看哪个 r
给你的残差最小。另一种方法是做前者,然后绘制它("graphical solution" 之类的)。
由于这是家庭作业,我将解决方案的其余部分作为 "hidden" 文本。我鼓励您阅读文档并尝试自己弄清楚,然后当您成功时,将其与我的答案进行比较:)
祝你好运!
r_sol = fzero(@(r)t-annuitet( g , T , G , r , n ), 1000);
-> r_sol = 1.264530947561246
我有一项家庭作业,但我似乎不知道该怎么做。除了 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):');
提前感谢任何 hints/tips :)
您正在尝试求解一个包含 1 个未知数的方程式。在数值上解决这个问题的方法是为残差定义一个方程(即 "how bad is my error given some guess for r
"),然后尝试最小化所述残差。
一种方法是使用 fzero
。另一种方法是使用一些精细网格(例如 0.001:0.001:100
)猜测 r
,然后查看哪个 r
给你的残差最小。另一种方法是做前者,然后绘制它("graphical solution" 之类的)。
由于这是家庭作业,我将解决方案的其余部分作为 "hidden" 文本。我鼓励您阅读文档并尝试自己弄清楚,然后当您成功时,将其与我的答案进行比较:)
祝你好运!
r_sol = fzero(@(r)t-annuitet( g , T , G , r , n ), 1000);
-> r_sol = 1.264530947561246