matlab中用solve解参数方程没有解析解,但将参数改成数值就能解出,因此改用fsolve来求解,但初值又不确定

2024-11-29 14:56:14
推荐回答(3个)
回答1:

我也遇到同样的问题,试出来如下方法,不知现在晚了没有?
假设其他变量都已经赋值了,你接下来只需要
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); %这两个是把符号解变换成数值解
然后就可以继续了

回答2:

1、程序开始的syms 里面别写 n、m、k、R1、R2 或者将n、m、k、R1、R2的值赋值给一些新的没有syms 定义过的参数试试。
2、在solve 或者fsolve里面最好别用字符变量。

回答3:

使用vpa和digits函数
或用subs将其中的符号变量替换掉