请问怎么用matlab编这样一个程序

来源:百度知道 编辑:UC知道 时间:2024/06/06 12:32:23
G=x-2;
g=2-x;
G-g=0;
求x
由于G,g是用程序算出来的,用solve命令的话,要输入表达式,而表达式挺长,不便于直接输入,有没有好方法得到x,谢谢
主要循环用,循环一次分别得到一个G,g;G,g的右边都是一个很长的表达式,里面包含x,想得到G=g里面的x;
G=x-5也可以,G,g的真实表达式为
G=28032306261919604*log(1+exp(212965780747802752/5505597093446529*Ef-212965780747802752/5505597093446529))+28032306261919604*log(1+exp(212965780747802752/5505597093446529*Ef-226276142044540424/5505597093446529));
g=1800000000000000000000+exp(Ef-332306998946228968220627620551391075/332306998946228968225951765070086144)+exp(Ef-353076186380368278734749605868271459/332306998946228968225951765070086144);
每次循环都得到一个G,g.
相当于一元一次方程,左边包含x,右边也包含x.
我的意思是G=X-5,g=2-x是个例子,其实是G=很长表达式,g=长表达式;然后G=g,求Ef,对不住,表达错误
谢谢您……不过我按你的命令怎么算不出来,一直busy,是不是表达式有log的原因,还有一个问题想请教,为什么solve里面的g1-g2没加双引号?命令的具体意思是什么?麻烦了

syms的意思就是定义符号变量,这样g1,g2为符号变量,自然是不用加引号的
有log的时候是容易解不出来,不行你就试试ode45或ode23,用数值解法

你可以考虑用符号运算
syms g1 g2

g1='28032306261919604*log(1+exp(212965780747802752/5505597093446529*Ef-212965780747802752/5505597093446529))+28032306261919604*log(1+exp(212965780747802752/5505597093446529*Ef-226276142044540424/5505597093446529))';
g2='1800000000000000000000+exp(Ef-332306998946228968220627620551391075/332306998946228968225951765070086144)+exp(Ef-353076186380368278734749605868271459/332306998946228968225951765070086144)';
然后simple(solve(g1-g2,'Ef'))就行了