- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第六章 非线性方程求根;MATLAB命令;例3:解非线性方程组
解:在MATLAB命令窗口输入命令:
E1=sym(x^x-4=0);E2=sym(2*x*y+x=1);
[x,y]=solve( E1,E2)
x1=double(x),y1=double(y)
或
syms x y
[x,y]=solve(x^x-4=0,2*x*y+x=1)
x1=double(x),y1=double(y)
结果为:
x = log(4)/lambertw(log(4))
y = -1/2*(log(4)-lambertw(log(4)))/log(4)
;
x1 =
2
y1 =
-0.2500
注:MATLAB系统只能做数值运算,并没有符
号运算功能,符号运算工具箱(symbolic math
Toolbox-点击matlab的start按钮,选择Toolboxes)扩充了MATLAB这方面的功能,它是
由Maple的核心来完成。
;例4:解方程
解:将方程化为 ,在matlab窗口
输入命令
fa=[8,0,0,0,0,0,17,0,-3,1];
xk=roots(fa)
运行后得所有根。
缺点:命令roots只能求 为多项式时方程
的根。
;一、图解法;程序如下:
x=0.01:0.01:2;
fx=x.*sin(1./x);
gx=0.2*exp(-x);
plot(x,fx,b,x,gx,g)
grid on
xlabel(x)
ylabel(y)
text(0.9,0.75, fx=xsin(1/x),Color,b)
text(1.25,0.1, gx=0.2e^{-x},Color,g)
;二、二分法;;当给定容许误差 时,所需最小迭代步数为:;else
while 1 %while后面为非零值时表示重复执行循环语句
it = it + 1;
b = (a + c)/2; Yb = feval(f_name, b );
fprintf(%3.0f %10.6f, %10.6f, it, a, b );
fprintf(%10.6f, %10.6f, %10.6f, %10.6f\n, c, Ya, Yb, Yc );
if ( abs(c-a)=tolerance )
fprintf(Tolerance is satisfied. \n);break%终止for或 %while循环,在嵌套循环中,只跳出内层循环
end
if ( itit_limit )
fprintf( Iteration limit exceeded.\n ); break
end
if( Ya*Yb = 0 ) c = b; Yc = Yb;
else a = b; Ya = Yb;
end
end
fprintf(Final result: Root = %12.6f \n, b );
end;例1 求函数 的零点。;2.bisec_n(fun_ex2,0.8,1.0)
function f=fun_ex2(x)
f=sqrt(1+x.^2)-tan(x);;三、不动点迭代法 ;迭代过程的几何表示 ;x0=1.5;err=1;fprintf( %f , x0);
while abs(err)0.000001
x1=(x0+1).^(1/3);
fprintf(%f ,x1);
err=x1-x0; x0=x1;
end;x0=1.5;err=1;fprintf( %f , x0);
for i=1:3
x1=x0.^3+1;
fprintf(%f ,x1);
err=x1-x0; x0=x1;
end; 收敛充分性定理 ;x=g(x);自动生成 的一个方法为:;例3 求方程 在 内的根。;给出迭代法的一个M文件:
function [k, piancha, xdpiancha, xk]=diedai(x0,k)
%输入量--x0是初
文档评论(0)