声振论坛

 找回密码
 我要加入

QQ登录

只需一步,快速开始

查看: 4002|回复: 16

[编程技巧] 多项式求解问题

[复制链接]
发表于 2007-8-2 16:32 | 显示全部楼层 |阅读模式

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

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

x
问题如图,谢谢大家!

[ 本帖最后由 eight 于 2007-8-3 11:47 编辑 ]
question.jpg
回复
分享到:

使用道具 举报

 楼主| 发表于 2007-8-2 16:44 | 显示全部楼层
系数如附件

xi shu.mat

199 Bytes, 下载次数: 11

发表于 2007-8-2 16:53 | 显示全部楼层
我从你mat文件读出来的是这个,不知道对不?才3个数呀,不是abcd4个系数么?
p: [2.0603e-006 0.0204 69.8999]
发表于 2007-8-2 17:54 | 显示全部楼层
--------------------------------------------程序-------------------------------------------
close all;clc;clear;
a=1;b=3;c=-5;d=7;%定义系数
k=solve('x^4+2*x^3-5*x^2+7*x-a');
for i=1:length(k)
    figure(i)
    fplot(inline(char(k(i))),[0 4000*pi]);
end
----------------------------------------------------------------------------------------------
Warning: Imaginary parts of complex X and/or Y arguments ignored.
> In fplot at 153
  In Untitled2 at 6
Warning: Imaginary parts of complex X and/or Y arguments ignored.
> In fplot at 153
  In Untitled2 at 6
>>
算起来有点慢,可能是我内存小。2个警告说明出现复数根,绘图的时候略去了虚部。
在我定的这4个参数里,递增的就只有一个跟(应该都是如此)。也就是第三个根,
绘制的图形加figure(3)

[ 本帖最后由 花如月 于 2007-8-2 18:09 编辑 ]
temp.PNG

评分

1

查看全部评分

发表于 2007-8-2 18:00 | 显示全部楼层
Elapsed time is 45.457076 seconds.:@L
电脑实在是不行了
发表于 2007-8-2 21:07 | 显示全部楼层
虽然不知道程序具体啥意思,不过算出的结果如以下的四个图!

提示的warning如下:
Warning: Imaginary parts of complex X and/or Y arguments ignored.
> In fplot at 158
  In Untitled444 at 6
Warning: Imaginary parts of complex X and/or Y arguments ignored.
> In fplot at 158
  In Untitled444 at 6

图1

图1

图2

图2

图3

图3

图4

图4

评分

1

查看全部评分

发表于 2007-8-2 21:21 | 显示全部楼层
想了一下,觉得还是画在一张图上直观些。可能代码烦琐了些,还好实现了
---------------------------------------------------------------
close all;clc;clear;
a=1;b=3;c=-5;d=7;%定义系数
k=solve('x^4+2*x^3-5*x^2+7*x-a');
for i=1:length(k)
    hold on;
    [a,b]=fplot(inline(char(k(i))),[0 4000*pi]);
    plot(a,b,'color',rand(1,3),'LineWidth',i)
end
-----------------------------------------------------------------

[ 本帖最后由 花如月 于 2007-8-2 21:40 编辑 ]
temp.jpg

评分

1

查看全部评分

 楼主| 发表于 2007-8-2 21:35 | 显示全部楼层

回复 #4 花如月 的帖子

非常感谢花如月和octopussheng 的热情帮助!
还有一个问题
  fplot(inline(char(k(i))),[0 4000*pi]);

这个是画图,如果我想得到[0:2*pi/30:4000*pi],这个区间上各点对应的inline(char(k(i)))函数值,进一步该怎么操作呢?
发表于 2007-8-2 21:42 | 显示全部楼层

回复 #8 zhlong 的帖子

呵呵,我再想想。当时之所以用fplot是因为比较方便,不用求值。符号表达式求函数值好像有些麻烦的样子
 楼主| 发表于 2007-8-2 21:46 | 显示全部楼层

回复 #9 花如月 的帖子

k=solve('x^4+2*x^3-5*x^2+7*x-a');


里面的a是不是改为别的符号比较合适,以免和上面的系数a=1混淆?(对计算结果应该是没有影响的)
发表于 2007-8-2 22:27 | 显示全部楼层

回复 #10 zhlong 的帖子

那个是笔误,关系不大可以改成其他的符号(下面用的是t)。由于解的形式没有办法用矢量化编程,所以必须加循环,加上你给的数据取得太密。把我电脑给算死了,p4 2.93gcpu+256M内存。如果确实需要那个数据,那你用一台好的电脑算吧。我该了数据:
--------------------------------------------------------------------------
close all;clc;clear;
tic
a=1;b=3;c=-5;d=7;%定义系数
k=solve('x^4+2*x^3-5*x^2+7*x-t');
%a=(0:2*pi/30:4000*pi);
a=(0:2:4000);
N=length(a);
for i=1:length(k)
    hold on;
    for j=1:N
        f=inline(char(k(i)));
        y(j)=f((j-1)*pi/30);
    end
    plot(a,y,'color',rand(1,3),'LineWidth',i)
end
toc
---------------------------------------------------------------------
Warning: Imaginary parts of complex X and/or Y arguments ignored.
> In Untitled2 at 14
Warning: Imaginary parts of complex X and/or Y arguments ignored.
> In Untitled2 at 14
Elapsed time is 129.634194 seconds.

[ 本帖最后由 花如月 于 2007-8-2 22:30 编辑 ]
temp.PNG

评分

1

查看全部评分

 楼主| 发表于 2007-8-3 07:42 | 显示全部楼层

回复 #11 花如月 的帖子

呵呵,我昨天也试了一下循环,不过循环很慢。
发表于 2007-8-3 08:50 | 显示全部楼层
直接ezplot可以吗?
 楼主| 发表于 2007-8-3 08:53 | 显示全部楼层

回复 #13 无水1324 的帖子

谢谢,我想得到给定点的数据。
发表于 2007-8-3 08:56 | 显示全部楼层

回复 #13 无水1324 的帖子

隐函数绘图,能绘制解的曲线么?我没有用过呀,还望指点。我的程序很慢,都是比较笨的办法。有好办法当然再好不过了
您需要登录后才可以回帖 登录 | 我要加入

本版积分规则

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

GMT+8, 2024-12-25 14:45 , Processed in 0.091529 second(s), 28 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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