matlab用二分法求解 20
编写matlab的一个程序用二分法求解出sinx-cosx在[02pi]上面的所有解,并存到数组P中...
编写matlab的一个程序用二分法求解出sinx-cosx在[0 2pi]上面的所有解,并存到数组P中
展开
展开全部
function [P]=zhidao7()
%%
% 二分法求解方程sinx-cosx在[0 2pi]上面的所有解,并存到数组P中
% 首先对方程做一些处理,如求导之类的。然后知道了有2个解。大致在什么范围【a,b】
% 或者,先分很多个区间,找出有值的区间。但这种理论上不一定准确
% 程序使用命令:[P]=zhidao7()
%%
%初值
precision = 1e-6; %精度
a =[0, pi];%因为f(0)*f(pi)<0
b = [pi,2*pi];
P(1) = twofind(a(1),a(2),1,precision);
P(2) = twofind(b(1),b(2),-1,precision);
end
function y = twofind(a,b,para,precision)
%para =1时,f(min)<0,f(max)>0;para =-1,f(min)>0,f(max)<0;
t =0;
while abs(b-a) > precision
x = (a +b)/2;
if f(x)*para > 0
b = x;
else
a = x;
end
t = t+1;
end
fprintf('迭代次数:%d\n',t);
y = x;
end
function y = f(x)
y=sin(x)-cos(x);
end
%%
% 二分法求解方程sinx-cosx在[0 2pi]上面的所有解,并存到数组P中
% 首先对方程做一些处理,如求导之类的。然后知道了有2个解。大致在什么范围【a,b】
% 或者,先分很多个区间,找出有值的区间。但这种理论上不一定准确
% 程序使用命令:[P]=zhidao7()
%%
%初值
precision = 1e-6; %精度
a =[0, pi];%因为f(0)*f(pi)<0
b = [pi,2*pi];
P(1) = twofind(a(1),a(2),1,precision);
P(2) = twofind(b(1),b(2),-1,precision);
end
function y = twofind(a,b,para,precision)
%para =1时,f(min)<0,f(max)>0;para =-1,f(min)>0,f(max)<0;
t =0;
while abs(b-a) > precision
x = (a +b)/2;
if f(x)*para > 0
b = x;
else
a = x;
end
t = t+1;
end
fprintf('迭代次数:%d\n',t);
y = x;
end
function y = f(x)
y=sin(x)-cos(x);
end
追问
[P]=zhidao7()这个是什么,运行了下系统在这里报错
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询