MATLAB用fsolve解方程
发布网友
发布时间:2022-05-15 17:08
我来回答
共2个回答
热心网友
时间:2022-05-19 19:11
fsolve要求所有内容都是double型,你这里r1,r2,r3
是sym变量,所以出错,改为下面:
f = @(n)sqrt(n2^2-n^2)*k0*H-atan(sqrt(n^2-n1^2)*k0/(sqrt(n2^2-n^2)*k0))-atan(sqrt(n^2-n3^2)*k0/(sqrt(n2^2-n^2)*k0));
>> fsolve(f,1.6)追问好,我还想问下,如果想要r1,r2,r3改如何改,这样可以让式子简单点,如果不能就算了。还有结果出现如下信息,是什么意思?
Equation solved.
solve completed because the vector of function values is near zero
as measured by the .......
这对结果有影响吗?
追答r1,r2,r3都有n,就不可能是double型,就没法代入fsolve中。
fsolve对解的区间有要求,不同的区间可能有不同的解,我这里的解是离1.6最近的,如果换成其他值有可能影响结果
热心网友
时间:2022-05-19 19:11
fun=@(n)(r2*H-atan(r1/r2)-atan(r3/r2))
这个函数定义的不对,自变量n根本就没出现在表达式里=_=