| Labfans是一个针对大学生、工程师和科研工作者的技术社区。 | 论坛首页 | 联系我们(Contact Us) | 
![]()  | 
	
| 
	 | 
| 		
			
			 | 
		#1 | 
| 
			
			 初级会员 
			
			
			
			注册日期: 2008-10-14 
				
				年龄: 45 
				
					帖子: 20
				 
				
				
				声望力: 18 ![]()  | 
	
	
	
		
		
			
			 
			
			为何没定义为符号变量的变量也成了符号变量 
		
		
		
		
		
		
		
	程序如下: function xyz clc clear all k=2; w=fun(2,3) function f=fun(x,y) syms x2 y2 g='k*2*x2^2*y2'; f=diff(x2*g,'x2'); f=subs(f,[x2,y2],[x,y]); 运行结果为w=72*k k为何成了符号变量,有没有办法让k成为数值变量啊? 我的程序里像k这样的变量很多,如果都要转换符号变量为数值变量的话那就太麻烦了!  | 
| 
		 | 
	
	
	
		
		
		
		
			 
		
		
		
		
		
		
		
			
		
		
		
	 | 
| 		
			
			 | 
		#2 | 
| 
			
			 高级会员 
			
			
			
			注册日期: 2008-04-02 
				
				年龄: 47 
				
					帖子: 175
				 
				
				
				声望力: 21 ![]()  | 
	
	
	
		
		
			
			 
			
			这里w是sym类型,maltab不会自动计算sym类型的值,要达到你的目的可以将function xyz的最后一行改为w=eval(fun(2,3))。 
		
		
		
		
		
		
		
	另外,function f=fun(x,y)的目的是对给定的(x,y)求解函数x*g(x,y)对x的偏导数的值。由于x*g(x,y)的结构没变,比较有效率的做法是在函数中直接给出偏导函数,可以省去每次求偏导的运算量。  | 
| 
		 | 
	
	
	
		
		
		
		
			 
		
		
		
		
		
		
		
			
		
		
		
	 | 
| 		
			
			 | 
		#3 | 
| 
			
			 初级会员 
			
			
			
			注册日期: 2008-10-14 
				
				年龄: 45 
				
					帖子: 20
				 
				
				
				声望力: 18 ![]()  | 
	
	
	
		
		
			
			 
			
			可以,看来得好好研究eval函数
		 
		
		
		
		
		
		
		
	 | 
| 
		 | 
	
	
	
		
		
		
		
			 
		
		
		
		
		
		
		
			
		
		
		
	 | 
| 		
			
			 | 
		#4 | 
| 
			
			 初级会员 
			
			
			
			注册日期: 2008-10-14 
				
				年龄: 45 
				
					帖子: 20
				 
				
				
				声望力: 18 ![]()  | 
	
	
	
		
		
			
			 
			
			现在又遇到新的问题,求完导数之后还要对此导数进行最优化(如题自变量x,y,k,k不赋值了),没法求,根本不认识,这个难道matlab都没法处理吗?我问了好几个同学,他们都说导数处理起来很麻烦,应该先手动求导,再对此倒数进行最优化。我的函数形式很复杂,要是手动求导的话非常麻烦!希望各位大侠予以指导!不胜感激!:lovely:
		 
		
		
		
		
		
		
		
	 | 
| 
		 | 
	
	
	
		
		
		
		
			 
		
		
		
		
		
		
		
			
		
		
		
	 | 
| 		
			
			 | 
		#5 | 
| 
			
			 高级会员 
			
			
			
			注册日期: 2008-04-02 
				
				年龄: 47 
				
					帖子: 175
				 
				
				
				声望力: 21 ![]()  | 
	
	
	
		
		
			
			 
			
			只要被求导函数结构不变,就应该直接使用求导后的函数。至于你说的函数形式复杂,人工求导麻烦,我想diff等函数就是应付这种情况的吧,可以先通过diff让matlab帮你把导数求出来嘛。另外用maple也可以,毕竟matlab的符号运算核心是maple,只是上手比较难,工作量不是很大的话,不推荐。
		 
		
		
		
		
		
		
		
	 | 
| 
		 | 
	
	
	
		
		
		
		
			 
		
		
		
		
		
		
		
			
		
		
		
	 |