| Labfans是一个针对大学生、工程师和科研工作者的技术社区。 | 论坛首页 | 联系我们(Contact Us) | 
![]()  | 
	
| 		
			
			 | 
		#1 | 
| 
			
			 初级会员 
			
			
			
			注册日期: 2015-12-02 
				
				年龄: 33 
				
					帖子: 1
				 
				
				
				声望力: 0 ![]()  | 
	
	
	
		
		
			
			 
			
			使用斯蒂文森迭代求解非线性方程,斯蒂文森迭代公式如下: 
		
		
		
		
		
		
		
	%Steffensen迭代解非线性方程 function[r,n]=Steffensen(x0,eps) %if nargin==2 % eps=1.0e-10; %默认迭代精度 %end y=myf(x0); z=myf(y); r=x0-(myf(x0)-x0)^2/(myf(y)-2*myf(x0)+x0); n=1; err=0.1; while err>eps x0=r; r=x0-(myf(x0)-x0)^2/(myf(y)-2*myf(x0)+x0); err=abs(r-x0); n=n+1; if(n>100000) disp('迭代步数太多,可能不收敛') return; end end end function f=myf(x) %f=3*x.^2-exp(x); f=2*log(x)+log(3); end %end f 在命令窗口输入[r,n]=Steffensen(3.5,1.0e-4)时能够输出正常的实数值,但当提高精度后例如输入[r,n]=Steffensen(3.5,1.0e-5)就开始输出0.9144+0.0000i,同是输入format long后再次运行[r,n]=Steffensen(3.5,1.0e-5),输出为0.914378007984216+0.000010915415698i,正常的迭代后解在3.7附近,求大神指教啊!  | 
| 
		 | 
	
	
	
		
		
		
		
			 
		
		
		
		
		
		
		
			
		
		
		
	 |