Labfans是一个针对大学生、工程师和科研工作者的技术社区。 | 论坛首页 | 联系我们(Contact Us) |
![]() |
![]() |
#1 |
初级会员
注册日期: 2008-10-02
年龄: 16
帖子: 6
声望力: 0 ![]() |
![]()
请问怎么求出 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,不理解的过程很难过 。大家的任何帮助我都万分感激! |
![]() |
![]() |
![]() |
#2 |
高级会员
注册日期: 2008-05-31
年龄: 38
帖子: 104
声望力: 19 ![]() |
![]()
你再把cosxy^4这句写明白点,是cosx*y^4还是什么,你想得到一个用x表示y的表达式就得用符号解法,对这个方程可能不太好解啊,根据我的知识是很难解出来的。要是数值解就好办了。
![]() |
![]() |
![]() |
![]() |
#3 |
初级会员
注册日期: 2008-10-02
年龄: 16
帖子: 6
声望力: 0 ![]() |
![]()
是 cosx*y^4. 那请问用数值解怎么解? 谢谢!!!
__________________
我才学Matlab,不理解的过程很难过 。大家的任何帮助我都万分感激! |
![]() |
![]() |
![]() |
#4 |
普通会员
注册日期: 2007-08-07
帖子: 64
声望力: 20 ![]() |
![]()
你上面的解释还是不清楚,是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]) |
![]() |
![]() |
![]() |
#5 |
高级会员
注册日期: 2008-05-31
年龄: 38
帖子: 104
声望力: 19 ![]() |
![]()
楼主好像不是这个意思啊,他想得到的是符号解,这个方程数值解没什么意义吧,怎么能求出符号解啊?
|
![]() |
![]() |
![]() |
#6 |
初级会员
注册日期: 2008-10-02
年龄: 16
帖子: 6
声望力: 0 ![]() |
![]()
谢谢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,不理解的过程很难过 。大家的任何帮助我都万分感激! |
![]() |
![]() |
![]() |
#7 |
高级会员
注册日期: 2008-05-31
年龄: 38
帖子: 104
声望力: 19 ![]() |
![]()
如果你只想画图的话就好办了:ezplot('x^3+x*y+y^3=0',[0 2 0 -2])
|
![]() |
![]() |
![]() |
#8 |
初级会员
注册日期: 2008-10-02
年龄: 16
帖子: 6
声望力: 0 ![]() |
![]()
谢谢!但是老师只想让我们运用bisection 的方法做图。。。。
我不知道我的程序哪里错了。。。
__________________
我才学Matlab,不理解的过程很难过 。大家的任何帮助我都万分感激! |
![]() |
![]() |
![]() |
#9 |
高级会员
注册日期: 2008-05-31
年龄: 38
帖子: 104
声望力: 19 ![]() |
![]()
在两个disp前加一句x=0:0.01:2;还有你在检查一下xc的计算过程,怎么每次循环后的值都是2,画出的图是错的。
|
![]() |
![]() |
![]() |
#10 |
初级会员
注册日期: 2008-10-02
年龄: 16
帖子: 6
声望力: 0 ![]() |
![]()
谢谢!
我觉得现在的问题是怎么把 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,不理解的过程很难过 。大家的任何帮助我都万分感激! |
![]() |
![]() |