怎么用matlab编程求解这个方程的数值解啊

来源:百度知道 编辑:UC知道 时间:2024/06/10 18:25:14
现在有方程 y*lgy=x ,如果已知x的值,比如x=3,问 怎么样用matlab 编程解出 y的数值阿?谢谢咯~~~~
两个人都回答的挺好的,可是你们能不能帮我解释一下所写的程序的意思啊,因为你们的程序我看不太懂。比如 @(x,y) , vpa ,fzero ,fsolve , fval ,fun=@(y)y*log10(y)-x; 分别都是什么意思啊? 能让我搞懂的我追加奖赏 50 分

fun=@(x,y)y.*log10(y)-x创建关于x,y的匿名函数
log10(x)由于Matlab中自然对数的符号是log(与我们数学上的不同),以10为底的对数符号是log10,同理有log2,但是没有log3等哦
vpa将得到的符号解转化为指定精度的小数,比如vpa('sqrt(2)',10)将sqrt(2)表示10位精度的小数
fzero是Matlab求解一元函数零点的内置函数
fsolve是Matlab中求解方程组解(可以求解复数)的内置函数,功能强于fzero
fval是返回fun(x)的值,也就是说fzero和fsolve返回方程的解x,那么此时的fun(x)就是fval

这个方法比较多 可以数值也可以解析求解

1.解析求解

>> solve('y*log10(y)=3','y')

ans =

3*log(10)/lambertw(3*log(10))

>> vpa(ans)

ans =

4.5555357051951280236911974082484

2.数值解法这个可以使用fsolve和fzero,前者的功能更加强大,但是对于这个问题fzero就可以了

>>x=3;
>>fun=@(y)y*log10(y)-x;
%使用fsolve
>> [x,fval]=fsolve(fun,rand)
Optimization terminated: first-order optimality is less than options.TolFun.

x =

4.5555

fval =

3.9620e-008

%使用fzero
>> [x,fval]=fzero(fun