找回密码
 注册
关于网站域名变更的通知
查看: 488|回复: 1
打印 上一主题 下一主题

编写的plot语句报错了。

[复制链接]

该用户从未签到

跳转到指定楼层
1#
发表于 2020-11-25 18:25 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

EDA365欢迎您登录!

您需要 登录 才可以下载或查看,没有帐号?注册

x

8 l3 w( V( g4 W/ D6 v' O. T" O& \4 W: J! U6 {+ M
我用一个调用函数来计算一个区间上的函数值并画图。此调用函数的输出是x = [x1;  x2;  x3];我想要把三个值的图像都画出来,编写的plot语句却都错了。错误信息:
9 ~1 Z2 [4 s* Y# a错误使用 plot。' a+ U: i7 @" z  [# o
数据必须为可转换为双精度值的数值、日期时间、持续时间或数组。
1 m9 d( X& p; H/ ]# A# j( I; t* b: X/ Q' s8 Z, I+ j
出错 Untitled3 (line 3)  `' T2 _  ?$ J$ W/ E
plot(y,c(:,1));* Q' \, e& `8 b* t6 G

+ a4 t+ d+ h/ E* A' J0 [3 R以下是程序,使用的64位R2018。. c! A1 N9 l& r( u
y=9.9:0.01:10.1;
3 e! W! X& @3 A% Dc=Solve3Polynomial(1,2.*k-20,power(k-10,2)+0.00005,-0.000001);% E1 ]0 N* V# H7 D
plot(y,c(:,1));
& h& \- O' f8 E' j, fplot(y,c(:,2));6 Z1 N2 g" N% N
plot(y,c(:,3));
( c# n% M3 V% wfunction x = Solve3Polynomial(a,b,c,d): `! p! J2 T  L5 i+ X
% 范盛金. 一元三次方程的新求根公式与新判别法[J]. 海南师范学院学报,1989,2(2):91-98.! A- s) n" U3 F# w/ }
syms x1 x2 x3;
+ Q$ V% o" S' O& v  `% dA = b.*b - 3.*a.*c;   if abs(A) < 1e-14;    A = 0;  end
) b0 N8 ]/ V# VB = b.*c - 9.*a.*d;   if abs(B) < 1e-14;    B = 0;  end  E1 I* ]0 B' y( e) a
C = c.*c - 3.*b.*d;   if abs(C) < 1e-14;    C = 0;  end  + g. B0 o1 Q' v
DET = B.*B - 4.*A.*C; if abs(DET) < 1e-14;  DET = 0;  end  ! t" c5 b8 |8 S4 p8 y* s
if (A==0)&(B==0)" t' N8 L; X4 S8 R, Y$ C
    x1 = -c./b;      x2 = x1 ;    x3 = x1;
) Q: H7 j5 w. k- G! U! h6 k+ Iend
- \/ z' B; F; R( z7 S5 _$ U2 Jif DET > 0' c$ x+ Y6 A" V7 f
    Y1 = A.*b + 1.5.*a.*(-B + sqrt(DET));
# K3 ]. P; i5 @- @    Y2 = A.*b + 1.5.*a.*(-B - sqrt(DET));+ g$ N/ {! G% }) a
    y1 = nthroot(Y1,3);  y2 = nthroot(Y2,3);
6 W& E) |2 |6 p2 ~    x1 = (-b-y1-y2)./(3.*a);5 q5 D: f- y) h5 V, X
    vec1 = (-b + 0.5.*(y1 + y2))./(3.*a);  ! j: x0 T( x& W2 W  D1 o
    vec2 = 0.5.*sqrt(3).*(y1 - y2)./(3.*a);* B7 w# `, k9 _, P. l* u2 t# v
    x2 = 0;
! S* j; v6 K, A" m    x3 = 0;
# R2 C, J( o0 u( Q# K  K6 E! Y; L/ I    clear Y1 Y2 y1 y2 vec1 vec2;
; i2 S: Z0 @: P: v4 ]end0 }, a, O, f7 F) l; `0 L2 Z
if DET == 0 & (A ~= 0) & (B ~= 0)
1 N9 U( ?$ j/ L    K = (b.*c-9.*a.*d)./(b.*b - 3.*a.*c); K = round(K,14);% j! H3 i9 l3 Y4 u4 f
    x1 = -b./a + K;   x2 = -0.5.*K;   x3 = x2;
0 l7 x8 o; N  M+ p$ K3 {5 z1 uend# f* |; ^8 q4 N( r/ j: S& r+ ]3 h
if DET < 0
2 H) E% E3 W( N; }  ^4 e, T    sqA = sqrt(A);
: n( [6 c3 b, @5 S/ A" w& b4 H: w4 F    T = (A.*b - 1.5.*a.*B)./(A.*sqA);3 X8 o% }" i+ t! v' A) d6 y/ K
    theta = acos(T);
8 H; {& C  k) m& {& j  G    csth  = cos(theta./3);
' {1 c8 m0 H3 M    sn3th = sqrt(3).*sin(theta./3);; Y: B$ J" t* A; q' N
    x1 = (-b - 2.*sqA.*csth)./(3.*a);& W- S2 R9 L# r$ b5 X; m% H9 K' S
    x2 = (-b + sqA.*(csth + sn3th))./(3.*a);
% r# A! }9 h- v    x3 = (-b + sqA.*(csth - sn3th))./(3.*a);1 @7 W4 Z4 H1 U: V4 g) n1 C
    clear sqA T theta csth sn3th;9 l; \7 k: @& }0 [- U
end3 [, l5 y8 T0 z
x = [x1;  x2;  x3];# M* h& w* i) q) W; t9 q6 I/ ^  V
end$ a- @9 P6 Y2 q' w

1 _( a6 L; w) T麻烦大神帮忙指点一下,非常感谢!

该用户从未签到

2#
发表于 2020-11-25 18:40 | 只看该作者
提示说,数据必须为可转换为双精度值的数值、日期时间、持续时间或数组。 所以你的数据是什么类型?
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

推荐内容上一条 /1 下一条

EDA365公众号

关于我们|手机版|EDA365电子论坛网 ( 粤ICP备18020198号-1 )

GMT+8, 2025-11-24 04:05 , Processed in 0.125000 second(s), 23 queries , Gzip On.

深圳市墨知创新科技有限公司

地址:深圳市南山区科技生态园2栋A座805 电话:19926409050

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