我在 Octave 中编写了一个二分方法,但它不能使用另一个函数。
我的二分方法代码如下:
function[x,b] = bisection(f,a,b)
t = 10e-8
while abs(b-a) > t;
c = (a+b)/2;
if f(a) * f(b) <= 0
a = a;
b = c;
else
b = b;
a = c
endif
endwhile
x = (a+b)/2
endfunction
Run Code Online (Sandbox Code Playgroud)
我已经有一个文件 f1.m:
function y = f1(x)
y = x^2 - 4;
endfunction
Run Code Online (Sandbox Code Playgroud)
但是当我打电话时[x,v] = bisection[f1,0,5],我得到:
>> [t,v] = bisection(f1,0,5)
error: 'x' undefined near line 2 column 5
error: called from
f1 at line 2 column 3
error: evaluating argument list element number 1
Run Code Online (Sandbox Code Playgroud)
你想要的是将一个指针传递f1给你的函数bisection,这样正确的调用就是
[t,v] = bisection(@f1,0,5)
Run Code Online (Sandbox Code Playgroud)
其输出:
t = 1.0000e-07
a = 0.62500
a = 0.93750
a = 1.0938
a = 1.1719
a = 1.2109
a = 1.2305
a = 1.2402
a = 1.2451
a = 1.2476
a = 1.2488
a = 1.2494
a = 1.2497
a = 1.2498
a = 1.2499
a = 1.2500
a = 1.2500
a = 1.2500
a = 1.2500
a = 1.2500
a = 1.2500
a = 1.2500
a = 1.2500
a = 1.2500
a = 1.2500
x = 1.2500
t = 1.2500
v = 1.2500
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
7179 次 |
| 最近记录: |