| Labfans是一个针对大学生、工程师和科研工作者的技术社区。 | 论坛首页 | 联系我们(Contact Us) | 
![]()  | 
	
| 		
			
			 | 
		#1 | 
| 
			
			 初级会员 
			
			
			
			注册日期: 2008-02-21 
				
				年龄: 41 
				
					帖子: 4
				 
				
				
				声望力: 0 ![]()  | 
	
	
	
		
		
			
			 
			
			我要用ode45求解一个常微分方程 
		
		
		
		
		
		
		
	比如:x'=-x.^2;x(0)=1 创建一个函数并保存文件名为xprimt的m文件 function xprim=xprim1(t,x) xprim1=-x.^2; 一运行就提示x未定义,x该怎么定义  | 
| 
		 | 
	
	
	
		
		
		
		
			 
		
		
		
		
		
		
		
			
		
		
		
	 | 
| 		
			
			 | 
		#2 | 
| 
			
			 高级会员 
			
			
			
				
			
			注册日期: 2008-02-26 
				
				年龄: 39 
				
					帖子: 158
				 
				
				
				声望力: 25 ![]() ![]() ![]()  | 
	
	
	
		
		
			
			 
			
			你没有发现你定义的函数很奇怪吗,输入变量中还要有个t,但你下面根本没有用到。你看看问题应该是处在这。
		 
		
		
		
		
		
		
			
				__________________ 
		
		
		
		
	学我想学,用我所学。:lovely:  | 
| 
		 | 
	
	
	
		
		
		
		
			 
		
		
		
		
		
		
		
			
		
		
		
	 | 
| 		
			
			 | 
		#3 | 
| 
			
			 初级会员 
			
			
			
			注册日期: 2008-02-21 
				
				年龄: 41 
				
					帖子: 4
				 
				
				
				声望力: 0 ![]()  | 
	
	
	
		
		
			
			 
			
			t去掉后结果还是一样,它只是一个时间变量
		 
		
		
		
		
		
		
		
	 | 
| 
		 | 
	
	
	
		
		
		
		
			 
		
		
		
		
		
		
		
			
		
		
		
	 | 
| 		
			
			 | 
		#4 | 
| 
			
			 高级会员 
			
			
			
				
			
			注册日期: 2008-02-26 
				
				年龄: 39 
				
					帖子: 158
				 
				
				
				声望力: 25 ![]() ![]() ![]()  | 
	
	
	
		
		
			
			 
			
			不会呀,你试一下。 
		
		
		
		
		
		
			去掉m文件中的分号, >> xprim1(1) xprim1 = -1 
				__________________ 
		
		
		
		
	学我想学,用我所学。:lovely:  | 
| 
		 | 
	
	
	
		
		
		
		
			 
		
		
		
		
		
		
		
			
		
		
		
	 | 
| 		
			
			 | 
		#5 | 
| 
			
			 初级会员 
			
			
			
			注册日期: 2008-02-21 
				
				年龄: 41 
				
					帖子: 4
				 
				
				
				声望力: 0 ![]()  | 
	
	
	
		
		
			
			 
			
			我错了,我一开始就没明白创建函数的意思,我把创建的函数按F5运行,:( 
		
		
		
		
		
		
		
	创建的函数在调用的时候会有值传递给函数里的变量,所以创建时不用定义变量,因此单独运行创建的函数肯定会显示变量没有定义 ps:t是不能去掉的,因为我用ode45调用该函数,去掉后ode45没法运行, 可以这样 >> xprim1(1,1) ans = -1 t只要随便给一个值就行,反正函数是-x.^2跟t没有关系 一直以来困扰我多日的问题终于解决了,好轻松啊  | 
| 
		 | 
	
	
	
		
		
		
		
			 
		
		
		
		
		
		
		
			
		
		
		
	 |