| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 2617 人关注过本帖
标题:matlab解方程时候出现的怪解问题
只看楼主 加入收藏
hrchy
Rank: 1
等 级:新手上路
帖 子:3
专家分:0
注 册:2006-6-12
收藏
 问题点数:0 回复次数:6 
matlab解方程时候出现的怪解问题
问题如下:
第一种代码如下:
q=solve('190.014*p-29.228*p^(3/2)=231');
q
求出解为
q =
[ 39.716461423194730766864016627548]
[ 1.4976108621303213878418505668174]

由于我需要用很多别的变量数据带入原来代码中代替其等式右边的231这个数据,所以不能用引号中的等号式形式~于是把代码改为如下第二种形式:

syms p;
a=231;
q=solve( 190.014*p-29.228*p^(3/2)-a );
q
有趣的事情发生了,求出解为:
q =
[ (1/106784498*(7579600445067569871399887+11746294780*i*696475019669707750440481549995^(1/2))^(1/3)+1002925561/2/(7579600445067569871399887+11746294780*i*696475019669707750440481549995^(1/2))^(1/3)+31669/14614)^2]
[
(-1/213568996*(7579600445067569871399887+11746294780*i*696475019669707750440481549995^(1/2))^(1/3)-1002925561/4/(7579600445067569871399887+11746294780*i*696475019669707750440481549995^(1/2))^(1/3)+31669/14614-1/2*i*3^(1/2)*(1/106784498*(7579600445067569871399887+11746294780*i*696475019669707750440481549995^(1/2))^(1/3)-1002925561/2/(7579600445067569871399887+11746294780*i*696475019669707750440481549995^(1/2))^(1/3)))^2]

我又把代码变成如下的第三种形式:
syms p;
q=solve( 190.014*p-29.228*p^(3/2)-231 );
q

还是出现了上述的奇怪的解,请问这是怎么回事啊?

并且我曾经试验过这个奇怪的解的正确性,把这个解带入第一种形式等号的左边,求解出其数据实部为231,其虚部为一个非常小的数,系数在10的负12次方左右.可见这个奇怪的解也是正确的.

高手帮忙看看,我希望能出现第一次那样的解~,该如何解决这个问题,多谢,多谢~
搜索更多相关主题的帖子: 解方程 matlab 解问题 变量 solve 
2006-06-12 09:05
abingchem
Rank: 6Rank: 6
等 级:贵宾
威 望:24
帖 子:716
专家分:0
注 册:2004-12-30
收藏
得分:0 
Matlab中有一个函数是vap()就可以得到与你第一个结果相似的形式

此人已消失
2006-06-12 12:25
zhangenter
Rank: 6Rank: 6
等 级:贵宾
威 望:25
帖 子:390
专家分:0
注 册:2006-6-5
收藏
得分:0 

二楼说的是vpa()吧

>> syms p;
a=231;
q=solve( 190.014*p-29.228*p^(3/2)-a );
vpa(q)

ans =

1.4976108621303213878418505668172+.20138842073197140514580664229866e-29*i
39.716461423194730766864016627547-.32770918767760929530249321920985e-29*i


OldHandle = findobj( \'Name\', \'悲伤\' ) ;if ~isempty(OldHandle),delete(OldHandle) ;end for Time = \'现在\':\'每一天\':\'永远\',set( gco, \'心情\', \'快乐\');end % 这段代码为你天天快乐而存在
2006-06-12 14:19
abingchem
Rank: 6Rank: 6
等 级:贵宾
威 望:24
帖 子:716
专家分:0
注 册:2004-12-30
收藏
得分:0 

不好意思,打错了


此人已消失
2006-06-12 17:06
zhangenter
Rank: 6Rank: 6
等 级:贵宾
威 望:25
帖 子:390
专家分:0
注 册:2006-6-5
收藏
得分:0 
呵呵,其实我都没听说过有这个函数,命令窗里help不到,去翻了下资料才发现的

OldHandle = findobj( \'Name\', \'悲伤\' ) ;if ~isempty(OldHandle),delete(OldHandle) ;end for Time = \'现在\':\'每一天\':\'永远\',set( gco, \'心情\', \'快乐\');end % 这段代码为你天天快乐而存在
2006-06-12 17:15
hrchy
Rank: 1
等 级:新手上路
帖 子:3
专家分:0
注 册:2006-6-12
收藏
得分:0 

谢谢高手,再请教高手,那个如何分解实部和虚部?如何解决只取一个小的解?

请问我遇到的怪解是如何产生的?如何让它产生数值解呢,就像第一个那样的解?

多谢高手,由于初学好多搞不懂,先多谢了.

2006-06-12 20:12
hrchy
Rank: 1
等 级:新手上路
帖 子:3
专家分:0
注 册:2006-6-12
收藏
得分:0 

还有我用如下代码:
a=2;b=3;c=20;d=100;
syms x;
p=solve( a*x^5+b*x^(3/2)-c*x^(1/3)+d );
p
解出来的解为:
p =
[ -2.1413534246514235654732997433538+.15092310484683572468899194571069*i]
[ -.56952027156967015096648976165944+1.9669529073416008045541330160303*i]
[ -.56952027156967015096648976165944-1.9669529073416008045541330160303*i]
[ 1.6868886584761321823776505802615-1.2386608167388567308502268849913*i]
[ 1.6868886584761321823776505802615+1.2386608167388567308502268849913*i]
[ -2.1413534246514235654732997433538-.15092310484683572468899194571069*i]

这个方城也带3/2次方 和1/3次方,但解出来就是这样的,而不是像以前出现的怪解,这是为什么?我试了好多方程都没有解出那样的怪解,请问高手下,这个是怎么回事啊?

2006-06-12 20:20
快速回复:matlab解方程时候出现的怪解问题
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.017417 second(s), 9 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved