查看完整版本 : [求助]为何没定义为符号变量的变量也成了符号变量
为何没定义为符号变量的变量也成了符号变量
程序如下:
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这样的变量很多,如果都要转换符号变量为数值变量的话那就太麻烦了!
这里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)的结构没变,比较有效率的做法是在函数中直接给出偏导函数,可以省去每次求偏导的运算量。
现在又遇到新的问题,求完导数之后还要对此导数进行最优化(如题自变量x,y,k,k不赋值了),没法求,根本不认识,这个难道matlab都没法处理吗?我问了好几个同学,他们都说导数处理起来很麻烦,应该先手动求导,再对此倒数进行最优化。我的函数形式很复杂,要是手动求导的话非常麻烦!希望各位大侠予以指导!不胜感激!:lovely:
现在又遇到新的问题,求完导数之后还要对此导数进行最优化(如题自变量x,y,k,k不赋值了),没法求,根本不认识,这个难道matlab都没法处理吗?我问了好几个同学,他们都说导数处理起来很麻烦,应该先手动求导,再对此倒数进行最优化。我的函数形式很复杂,要是手动求导的话非常麻烦!希望各位大侠予以指导!不...
只要被求导函数结构不变,就应该直接使用求导后的函数。至于你说的函数形式复杂,人工求导麻烦,我想diff等函数就是应付这种情况的吧,可以先通过diff让matlab帮你把导数求出来嘛。另外用maple也可以,毕竟matlab的符号运算核心是maple,只是上手比较难,工作量不是很大的话,不推荐。
vBulletin® v3.8.3,版权所有 ©2000-2025,Jelsoft Enterprises Ltd.