问个解方程组的问题
用符号运算求解一个方程组,8个未知数,8个方程得到的结果有6个未知数为零,把结果代入其中一个方程,明显不满足方程
请诸位大侠解释一下,问题有可能处在哪里?
用的是solve
PS:这些解并不是所有的方程都不符合,只有一些不符合
[ 本帖最后由 ChaChing 于 2009-7-27 22:56 编辑 ] 建议楼主说清楚些, 并给齐完整格式:出错代码! %%初始化
clear
clc
syms p_00_I p_10_I ; %p_00_II p_10_IIp_00_III p_10_III ; %定义系数
syms Y_00_I Y_10_IY_00_III Y_10_III; %定义本征函数归一化的结果
syms k_00_I k_10_Ik_00_II k_10_II k_00_III k_10_III ; %定义波数
syms X_0000_II_IX_1000_II_IX_0010_II_IX_1010_II_I; %定义积分结果
syms X_0000_II_IIIX_1000_II_IIIX_0010_II_IIIX_1010_II_III; %定义积分结果
syms omega dentheta ; %定义角速度,密度,角度
%%列方程
e1=sym('(1+A_00)*p_00_I*Y_00_I=(1+B_00)*p_00_II*X_0000_II_I+(1+B_10)*p_10_II*X_1000_II_I');
e2=sym('(1+A_10)*p_10_I*Y_10_I=(1+B_00)*p_00_II*X_0010_II_I+(1+B_10)*p_10_II*X_1010_II_I');
e3=sym('(1-A_00)*p_00_I*Y_00_I*k_00_I=(1-B_00)*p_00_II*X_0000_II_I*k_00_II+(1-B_10)*p_10_II*X_1000_II_I*k_10_II');
e4=sym('(1-A_10)*p_10_I*Y_10_I*k_10_I=(1-B_00)*p_00_II*X_0010_II_I*k_00_II+(1-B_10)*p_10_II*X_1010_II_I*k_10_II');
e5=sym('p_00_III*Y_00_III=(exp(-j*k_00_II*theta)+B_00*exp(j*k_00_II*theta))*p_00_II*X_0000_II_III+(exp(-j*k_10_II*theta)+B_10*exp(j*k_10_II*theta))*p_10_II*X_1000_II_III');
e6=sym('p_10_III*Y_10_III=(exp(-j*k_00_II*theta)+B_00*exp(j*k_00_II*theta))*p_00_II*X_0010_II_III+(exp(-j*k_10_II*theta)+B_10*exp(j*k_10_II*theta))*p_10_II*X_1010_II_III');
e7=sym('p_00_III*Y_00_III*k_00_III=(exp(-j*k_00_II*theta)-B_00*exp(j*k_00_II*theta))*p_00_II*X_0000_II_III*k_00_II+(exp(-j*k_10_II*theta)-B_10*exp(j*k_10_II*theta))*p_10_II*X_1000_II_III**k_10_II');
e8=sym('p_10_III*Y_10_III*k_10_III=(exp(-j*k_00_II*theta)-B_00*exp(j*k_00_II*theta))*p_00_II*X_0010_II_III*k_00_II+(exp(-j*k_10_II*theta)-B_10*exp(j*k_10_II*theta))*p_10_II*X_1010_II_III**k_10_II');
%%解方程组
=solve(e1,e2,e3,e4,e5,e6,e7,e8)
我觉得写不写代码也没什么用
[ 本帖最后由 hebut 于 2009-7-28 10:15 编辑 ]
回复 楼主 hebut 的帖子
直接数值离散求解算了,用符号求解慢,而且,你也不知道你的结果是不是有解析解。也不是所有非线性方程组都可以有解析解的。不想自己编程,试一下fsolve,把你的方程写成f{(x)=0的方程组形式。x1..x8为你的8个未知量,f(x)为你每个方程的的形式。[ 本帖最后由 ChaChing 于 2009-7-29 18:52 编辑 ] 原帖由 hebut 于 2009-7-28 10:14 发表 http://www.chinavib.com/forum/images/common/back.gif
...我觉得写不写代码也没什么用...
个人以为资讯越充足, 别人回覆较容易切题! 整理电脑档案, 发现这帖, 顺便学习练习下, 并help solve
发现LZ可能solve使用错误!
=solve(e1,e2,e3,e4,e5,e6,e7,e8)
solve解出的变数可能并非如LZ的排列!
建议使用g = solve(eq1,eq2,...,eqn,var1,var2,...,varn)格式试试!
页:
[1]