matlab中用solve解参数方程没有解析解,但将参数改成数值就能解出,因此改用fsolve来求解,但初值又不确定用matlab运行[k1,x]=solve('n*k1+m*tan(k1*x)','k1-sqrt(k^2-log(R1/R2)*log(R1/R2)/x^2)','k1','x')没有解析解,其
来源:学生作业帮助网 编辑:作业帮 时间:2024/08/28 07:33:44
matlab中用solve解参数方程没有解析解,但将参数改成数值就能解出,因此改用fsolve来求解,但初值又不确定用matlab运行[k1,x]=solve('n*k1+m*tan(k1*x)','k1-sqrt(k^2-log(R1/R2)*log(R1/R2)/x^2)','k1','x')没有解析解,其
matlab中用solve解参数方程没有解析解,但将参数改成数值就能解出,因此改用fsolve来求解,但初值又不确定
用matlab运行[k1,x]=solve('n*k1+m*tan(k1*x)','k1-sqrt(k^2-log(R1/R2)*log(R1/R2)/x^2)','k1','x')没有解析解,其中n、m、k、R1、R2是变量,但将变量换成数值就能解出数值解,如果改用fsolve求解,由于n、m、k、R1、R2的值是变化的,所以初值无法确定,我现在程序前半部分可以把n、m、k、R1、R2的值算出来,希望后面可以直接把他们的数值代到方程中,或者怎么解我上述的方程?
matlab中用solve解参数方程没有解析解,但将参数改成数值就能解出,因此改用fsolve来求解,但初值又不确定用matlab运行[k1,x]=solve('n*k1+m*tan(k1*x)','k1-sqrt(k^2-log(R1/R2)*log(R1/R2)/x^2)','k1','x')没有解析解,其
我也遇到同样的问题,试出来如下方法,不知现在晚了没有?
假设其他变量都已经赋值了,你接下来只需要
syms k1 x equa1 equa2
equa1=n*k1+m*tan(k1*x);
equa2=k1-sqrt(k^2-log(R1/R2)*log(R1/R2)/x^2);
[k1,x]=solve(equa1,equa2,'k1','x');
kk1=double(k1);
xx=double(x); %这两个是把符号解变换成数值解
然后就可以继续了
使用vpa和digits函数
或用subs将其中的符号变量替换掉
1、程序开始的syms 里面别写 n、m、k、R1、R2 或者将n、m、k、R1、R2的值赋值给一些新的没有syms 定义过的参数试试。
2、在solve 或者fsolve里面最好别用字符变量。谢谢你的回答。但如果syms里不先定义变量就会出错;尝试过将值赋给其他参数,不行;不用字符变量那用什么,我需要的就是一些变量,那matlab有其他计算字符变量的函数吗?可以将计算的结果复制到另一个m...
全部展开
1、程序开始的syms 里面别写 n、m、k、R1、R2 或者将n、m、k、R1、R2的值赋值给一些新的没有syms 定义过的参数试试。
2、在solve 或者fsolve里面最好别用字符变量。
收起