warrior_ngc
2011-06-09, 23:27
假如我编了个求二分法的M文件:demimethod.m
如下:function [x,k]=demimethod(a,b,f,emg)
% a,b :求解区间的两个端点
% f :所求方程的函数名
% emg :精度指标
% x:所求近似解
% k: 循环次数
fa=feval(f,a);
fab=feval(f,(a+b)/2);
k=0;
while abs(b-a)>emg
if fab==0
x=(a+b)/2;
return;
elseif fa*fab<0
b=(a+b)/2;
else
a=(a+b)/2;
end
fa=feval(f,a);
fab=feval(f,(a+b)/2);
k=k+1;
end
x=(a+b)/2;
然后运行命令行:
>> f=@(x)x^3-3*x+2-exp(x);
>> demimethod(-5,5,f,10^(-8))
ans =
-1.9846
但请注意如果我要求的函数含有矩阵符号怎么办??
比如:m=[1:1:99];
f=@(x)x^3-m*x+2-exp(x);
那如何求解这100个方程的解啊....
求详细答案。。。来讨论吧
如下:function [x,k]=demimethod(a,b,f,emg)
% a,b :求解区间的两个端点
% f :所求方程的函数名
% emg :精度指标
% x:所求近似解
% k: 循环次数
fa=feval(f,a);
fab=feval(f,(a+b)/2);
k=0;
while abs(b-a)>emg
if fab==0
x=(a+b)/2;
return;
elseif fa*fab<0
b=(a+b)/2;
else
a=(a+b)/2;
end
fa=feval(f,a);
fab=feval(f,(a+b)/2);
k=k+1;
end
x=(a+b)/2;
然后运行命令行:
>> f=@(x)x^3-3*x+2-exp(x);
>> demimethod(-5,5,f,10^(-8))
ans =
-1.9846
但请注意如果我要求的函数含有矩阵符号怎么办??
比如:m=[1:1:99];
f=@(x)x^3-m*x+2-exp(x);
那如何求解这100个方程的解啊....
求详细答案。。。来讨论吧