九、解非线性方程组的逐步搜索方法和二分法
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
一、编写函数作图的程序,通过图形求出方程的近似解。
1、>> clear
>> syms x y
>> x=-10:0.1:10;
>> y=2.*x.*sin(x)-3;
>> plot(x,y);
>> grid
>> gtext('y=2.*x.*sin(x)-3')
2、>> clear
>> syms x y1 y2
>> x=0:0.1:10;
>> y1=2.*sin(x);
>> y2=3./x;
>> plot(x,y1,x,y2);
>> grid
>> gtext('y1=2sin(x),y2=3/x')
3、>> clear
>> syms x y
>> x=-2:0.1:4;
>> y=4.*x.^5-8.*x.^4-26.*x.^3+30; >> plot(x,y);
>> grid
>> gtext('y=4*x^5-8*x^4-26*x^3+30')
>> x=solve('4*x^5-8*x^4-26*x^3+30=0','x'); >> x1=double(x)
x1 =
1.0000
3.7117
-1.9244
-0.3936 + 0.9461i
-0.3936 - 0.9461i
二、用逐步搜索的方法求解。
function [k,r]=zhubuss(a,b,h,tol)
X=a:h:b;Y=funs(X);
n=(b-a)/h+1;m=0;
X(n+1)=X(n);Y(n+1)=Y(n);
for k=2:n
X(k)=a+k*h;
Y(k)=funs(X(k));
sk=Y(k)*Y(k-1);
if sk<=0
m=m+1;
r(m)=X(k);
end
xielv=(Y(k+1)-Y(k))*(Y(k)-Y(k-1));
if (abs(Y(k)) m=m+1; r(m)=X(k); end end (1)function y=funs(x) y=2.*x.^3+2.*x.^2-3.*x-3 >> [k,r]=zhubuss(-2,2,0.001,0.0001) k = 4001 r = -1.2240 -1.0000 -1.0000 -0.9990 1.2250 (2)function y=funs(x) y=sin(cos(2.*x.^3)) >> [k,r]=zhubuss(-2,2,0.001,0.0001) k = 4001 r = -1.9190 -1.7640 -1.5770 -1.3300 -0.9220 0.9230 1.3310 1.5780 1.7650 1.9200 三、用二分法求解。 1、>> clear >> syms x y >> x=-4:0.1:4; >> y=x.^3-x+4; >> plot(x,y) >> grid;gtext('y=2*x^3+2*x^2-3*x-3') 2、>> x=-4:1:4,y=x.^3-x+4 x = -4 -3 -2 -1 0 1 2 3 4 y = -56 -20 -2 4 4 4 10 28 64 3、function [k,x,wucha,yx]=erfen(a,b,abtol) a(1)=a;b(1)=b; ya=fun(a(1));yb=fun(b(1)); if ya*yb>0 disp('ya*yb>0,重新调整区间端点a,b.') return end max1=-1+ceil((log(b-a)-log(abtol))/log(2)); for k=1:max1+1 a;ya=fun(a); b;yb=fun(b); x=(a+b)/2;yx=fun(x); wucha=abs(b-a)/2;k=k-1; [k,a,b,x,wucha,ya,yb,yx] if yx==0 a=x;b=x; elseif yb*yx>0 b=x;yb=yx; else a=x;ya=yx; end if b-a return end end k=max1;x;wucha;yx=fun(x); function y=fun(x) y=x.^3-x+4 >> [k,x,wucha,yx]=erfen(-2,-1,0.001) k = 9 x = -1.7959 wucha = 9.7656e-004 yx = 0.0037