Labfans是一个针对大学生、工程师和科研工作者的技术社区。 论坛首页 | 联系我们(Contact Us)
MATLAB爱好者论坛-LabFans.com
返回   MATLAB爱好者论坛-LabFans.com > 工程数学软件 > MATLAB论坛
MATLAB论坛 一切MATLAB相关问题在此讨论。
回复
 
主题工具 显示模式
旧 2008-10-02, 07:35   #1
木心
初级会员
 
注册日期: 2008-10-02
年龄: 16
帖子: 6
声望力: 0
木心 正向着好的方向发展
默认 bisection methods?

请问怎么求出 y在 y^5+cosxy^4+y+x=0 中的解

我只知道怎么求简单的显函数的,用 inline 定义
然后 。。。 c = (a + b)/2;
if ( f(c) == 0 )
break;
elseif ( f(a)*f(c) < 0 )
b = c;
else
a = c;
等等.....

但这个就不会了。。请问应该怎么做。

谢谢!
__________________
我才学Matlab,不理解的过程很难过
。大家的任何帮助我都万分感激!
木心 当前离线   回复时引用此帖
旧 2008-10-02, 16:38   #2
meteora1005
高级会员
 
注册日期: 2008-05-31
年龄: 38
帖子: 104
声望力: 19
meteora1005 正向着好的方向发展
默认 回复: bisection methods?

你再把cosxy^4这句写明白点,是cosx*y^4还是什么,你想得到一个用x表示y的表达式就得用符号解法,对这个方程可能不太好解啊,根据我的知识是很难解出来的。要是数值解就好办了。
meteora1005 当前离线   回复时引用此帖
旧 2008-10-02, 21:30   #3
木心
初级会员
 
注册日期: 2008-10-02
年龄: 16
帖子: 6
声望力: 0
木心 正向着好的方向发展
默认 回复: bisection methods?

是 cosx*y^4. 那请问用数值解怎么解? 谢谢!!!
__________________
我才学Matlab,不理解的过程很难过
。大家的任何帮助我都万分感激!
木心 当前离线   回复时引用此帖
旧 2008-10-03, 08:12   #4
xiezhh
普通会员
 
注册日期: 2007-08-07
帖子: 64
声望力: 20
xiezhh 是一个将要出名的人
默认 回复: bisection methods?

你上面的解释还是不清楚,是cos(x)*(y^4)还是cos(x*y^4),我当成cos(x)*(y^4),可以采用隐函数画图: ezplot('y^5+cos(x)*y^4+y+x=0',[-10 10])
利用图解法,从图上可以看出x固定时的y值

也可以通过下面命令求数值解,求出的解跟初值有关。
[xy,fval]=fsolve('x(2)^5+cos(x(1))*x(2)^4+x(2)+x(1)',[1 1])
xiezhh 当前离线   回复时引用此帖
旧 2008-10-03, 10:44   #5
meteora1005
高级会员
 
注册日期: 2008-05-31
年龄: 38
帖子: 104
声望力: 19
meteora1005 正向着好的方向发展
默认 回复: bisection methods?

楼主好像不是这个意思啊,他想得到的是符号解,这个方程数值解没什么意义吧,怎么能求出符号解啊?
meteora1005 当前离线   回复时引用此帖
旧 2008-10-03, 12:07   #6
木心
初级会员
 
注册日期: 2008-10-02
年龄: 16
帖子: 6
声望力: 0
木心 正向着好的方向发展
默认 回复: bisection methods?

谢谢meteora1005! 谢谢 xiezhh !
不好意思,我的方程没有表达清楚,我现在换一个f(x,y)=x^3+x*y+y^3, 用bisection的方法做出其在[0,2]的图像!
我没有学过符号解法。。。 ezplot , fsolve这些命令也不知道。。。
我想了一下,这样做,但运行出来是个空图。。。


x=zeros(1,200);
y=zeros(1,200); % set x,y to vector

a=0;b=2;
i=1;

for x=0:0.01:2 % given x, get value of y
% try 200 xs, get 200 ys
while (b-a)/2>10^(-12)
c=(a+b)/2;

if x^3+x*c+c^3== 0 %c is a solution, done
break
end
if (x^3+x*c+c^3)*(x^3+x*a+a^3)<0 %a and c make the new interval
b=c;
else %c and b make the new interval
a=c;
end
end

xc=(a+b)/2; %new midpoint is best estimate
y(i)=xc; i=i+1;
end

disp(x);
disp(y);
plot(x,y)

麻烦大家帮我分析一下。。。谢谢!!!
__________________
我才学Matlab,不理解的过程很难过
。大家的任何帮助我都万分感激!
木心 当前离线   回复时引用此帖
旧 2008-10-03, 13:30   #7
meteora1005
高级会员
 
注册日期: 2008-05-31
年龄: 38
帖子: 104
声望力: 19
meteora1005 正向着好的方向发展
默认 回复: bisection methods?

如果你只想画图的话就好办了:ezplot('x^3+x*y+y^3=0',[0 2 0 -2])
上传的图像
文件类型: jpg Snap1.jpg (10.3 KB, 15 次查看)
meteora1005 当前离线   回复时引用此帖
旧 2008-10-03, 13:51   #8
木心
初级会员
 
注册日期: 2008-10-02
年龄: 16
帖子: 6
声望力: 0
木心 正向着好的方向发展
默认 回复: bisection methods?

谢谢!但是老师只想让我们运用bisection 的方法做图。。。。
我不知道我的程序哪里错了。。。
__________________
我才学Matlab,不理解的过程很难过
。大家的任何帮助我都万分感激!
木心 当前离线   回复时引用此帖
旧 2008-10-03, 19:45   #9
meteora1005
高级会员
 
注册日期: 2008-05-31
年龄: 38
帖子: 104
声望力: 19
meteora1005 正向着好的方向发展
默认 回复: bisection methods?

在两个disp前加一句x=0:0.01:2;还有你在检查一下xc的计算过程,怎么每次循环后的值都是2,画出的图是错的。
meteora1005 当前离线   回复时引用此帖
旧 2008-10-03, 23:28   #10
木心
初级会员
 
注册日期: 2008-10-02
年龄: 16
帖子: 6
声望力: 0
木心 正向着好的方向发展
默认 回复: bisection methods?

谢谢!
我觉得现在的问题是怎么把 y 和 x 一一对应??

a=0;b=2;


for x=0:0.01:2 % given x, get value of y
% try 200 x, get 200 y
while (b-a)/2>10^(-12)
c=(a+b)/2;

if (x^3+x*c+c^3)*(x^3+x*c+c^3)== 0 , %c is a solution, done
break;
end
if (x^3+x*c+c^3)*(x^3+x*c+c^3)<0 %a and c make the new interval
b=c;
else %c and b make the new interval
a=c;
end
end

d=(a+b)/2; %new midpoint is best estimate

y=d;
disp(x);
disp('y=');
disp(y);
end

x=0:0.01:2
plot(x,y);
__________________
我才学Matlab,不理解的过程很难过
。大家的任何帮助我都万分感激!
木心 当前离线   回复时引用此帖
回复

主题工具
显示模式

发帖规则
不可以发表新主题
不可以发表回复
不可以上传附件
不可以编辑自己的帖子

启用 BB 代码
论坛启用 表情符号
论坛启用 [IMG] 代码
论坛禁用 HTML 代码



所有时间均为北京时间。现在的时间是 17:28


Powered by vBulletin
版权所有 ©2000 - 2025,Jelsoft Enterprises Ltd.