声振论坛

 找回密码
 我要加入

QQ登录

只需一步,快速开始

查看: 2461|回复: 5

[综合讨论] 三元一次方程的求解

[复制链接]
发表于 2012-9-8 10:51 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?我要加入

x
我的方程如Fig1然后我用fsolve求解:
clc
clear
a=1.86e-26;
b=125.4;
c=1.76e-25;
% y0=x+1+10.*(1-a.*x).*x./((1-a.*x).^2+(b+c.*x).^2);
y1=fsolve(@(x)x+1+10.*(1-a.*x).*x./((1-a.*x).^2+(b+c.*x).^2),-1)

结果命令窗口出现:

Equation solved.

fsolve completed because the vector of function values is near zero
as measured by the default value of the function tolerance, and
the problem appears regular as measured by the gradient.

<stopping criteria details>


y1 =

   -0.9994

估计这个y1值肯定是不对的,我这个函数是不是不能用fsolve来解?

Fig1

Fig1

点评

三元一次??  发表于 2012-9-8 21:30
回复
分享到:

使用道具 举报

发表于 2012-9-8 22:10 | 显示全部楼层

水平有限, 仅只工程判断
假设x在零附近求解
a=1.86e-26 => ax<<1 => 1-ax~=1
b=125.4; c=1.76e-25 => b+cx~=b
=> (1-ax)^2+(b+cx)^2 ~= 1+b^2 ~=b^2
10(1-ax)x/((1-ax)^2+(b+cx)^2) ~= 10x/b^2 ~=0
也就是说x~=-1, 难道LZ需要精确度很高吗
发表于 2012-9-9 08:46 | 显示全部楼层
数值求解还是对量级相当的数操作比较好,一看您的a,b,c相差那么大,数值结果不理想很正常,建议对数据作变换,或者归一化之后再求解
 楼主| 发表于 2012-9-9 11:37 | 显示全部楼层
回复 2 # ChaChing 的帖子

哦,错了,一元三次。x的值是在[-1,1]这个范围之间,后来我试了
y2=fzero(@(x)x+1+40*8/3.*x./(1+(b+a.*x).^2),[-1,1])

y2 =

   -0.9933

按理说,3次方程有3个根,我plot了一下这个方程,发现基本是条直线,与x轴只有一个交点,所以觉得里面还是有点儿小问题?
 楼主| 发表于 2012-9-9 11:40 | 显示全部楼层
回复 3 # VibrationMaster 的帖子

多谢指点。再问下,
变换是指类似于两边同取log这样吗?
归一化这个不是很理解?
发表于 2012-9-9 18:12 | 显示全部楼层
回复 5 # shuidixn 的帖子

1. 三次方程有三个复根,看图只能检查实根过零,看不到复根
2. 我所说的变换:因为根与-1非常接近,如果引如新变量 y=x+1,然后求解y可能更好; 如果有可能,在引入 z=afa y, 选择afa 使新的a b,c 大小接近, 等等
3. 你的方程可以变成一元三次方程, 解一元三次方程比你的分式方程容易一些

评分

1

查看全部评分

您需要登录后才可以回帖 登录 | 我要加入

本版积分规则

QQ|小黑屋|Archiver|手机版|联系我们|声振论坛

GMT+8, 2024-11-5 19:44 , Processed in 0.080791 second(s), 26 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表