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

编写的plot语句报错了。

[复制链接]

该用户从未签到

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

EDA365欢迎您登录!

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

x
" m$ W* K8 D- D

, \; t. \, M7 B9 @我用一个调用函数来计算一个区间上的函数值并画图。此调用函数的输出是x = [x1;  x2;  x3];我想要把三个值的图像都画出来,编写的plot语句却都错了。错误信息:$ I( R0 n) F5 G7 y( b& d- c
错误使用 plot。3 j; ]- @7 \% L& S- y
数据必须为可转换为双精度值的数值、日期时间、持续时间或数组。
! u# e# _  Y6 u% s- [( R9 e/ S1 o4 ?* J( P' c! r- `
出错 Untitled3 (line 3). U$ K( O# E& u$ P$ c8 N' b) y. N  V
plot(y,c(:,1));+ W* w% ~  H5 [$ h
: j0 u* c) e/ n. X& _# R0 I3 _
以下是程序,使用的64位R2018。
/ n% ?5 r! c& m8 Ty=9.9:0.01:10.1;
8 c! X) m& b. J5 g8 I2 Bc=Solve3Polynomial(1,2.*k-20,power(k-10,2)+0.00005,-0.000001);2 P  m) r* F0 ~
plot(y,c(:,1));! S4 p- k7 ^2 ~: G- }% o6 W
plot(y,c(:,2));  p. O/ Z& ~1 z1 }4 N0 n* W
plot(y,c(:,3));( ]$ M+ Q& P* o$ X& G4 o) V
function x = Solve3Polynomial(a,b,c,d)
# g: f( \  w  T4 B% V# d% 范盛金. 一元三次方程的新求根公式与新判别法[J]. 海南师范学院学报,1989,2(2):91-98.7 ^* L" B! ?( e* d" X6 U5 Z4 I
syms x1 x2 x3;9 {( R  S' a4 R9 N
A = b.*b - 3.*a.*c;   if abs(A) < 1e-14;    A = 0;  end
5 a" n, F, R) t, vB = b.*c - 9.*a.*d;   if abs(B) < 1e-14;    B = 0;  end
" {  |# E$ R2 Z/ r! zC = c.*c - 3.*b.*d;   if abs(C) < 1e-14;    C = 0;  end  - _1 @2 G  O8 d3 C, O- F5 u0 U7 ]
DET = B.*B - 4.*A.*C; if abs(DET) < 1e-14;  DET = 0;  end  
# Y* u* H: Y' {; p9 rif (A==0)&(B==0)
7 [# H5 G: ?. |    x1 = -c./b;      x2 = x1 ;    x3 = x1;6 H( B" y0 D) b5 P
end9 A$ d( o# H* n# G2 m
if DET > 0
4 N7 t1 x5 |6 j    Y1 = A.*b + 1.5.*a.*(-B + sqrt(DET));4 e& O7 b) \, t
    Y2 = A.*b + 1.5.*a.*(-B - sqrt(DET));
8 \$ X, l5 k& [9 M' B% o5 `2 J- b    y1 = nthroot(Y1,3);  y2 = nthroot(Y2,3);% ]' \: }4 n7 |8 k
    x1 = (-b-y1-y2)./(3.*a);6 r5 V! v+ K/ J/ Y
    vec1 = (-b + 0.5.*(y1 + y2))./(3.*a);  
. K8 A" j+ d$ ?! H    vec2 = 0.5.*sqrt(3).*(y1 - y2)./(3.*a);
5 D7 A  B& j7 [    x2 = 0;
+ T: T7 k6 d+ Q8 T# g0 w7 x+ Q    x3 = 0;
; \; J1 M$ K- }  a- t    clear Y1 Y2 y1 y2 vec1 vec2;3 |2 k/ h; D/ g
end
3 F0 y# V9 {& G; I1 ]; J- ?- t( xif DET == 0 & (A ~= 0) & (B ~= 0). |' E5 D1 _9 d  `
    K = (b.*c-9.*a.*d)./(b.*b - 3.*a.*c); K = round(K,14);
7 g9 @# r2 N0 Z/ ]- S    x1 = -b./a + K;   x2 = -0.5.*K;   x3 = x2;9 P2 i% A1 I3 d2 M2 o# h* e
end% S- V1 c) c0 G$ p- H1 @- T
if DET < 0) r6 T& E1 q, h  K
    sqA = sqrt(A);+ k  w3 M! h/ t' D* S1 p5 [
    T = (A.*b - 1.5.*a.*B)./(A.*sqA);0 B2 e4 E; t3 i& e
    theta = acos(T);/ _9 E2 N) E  K. [( T+ u: X
    csth  = cos(theta./3);
% _9 o. S/ T- d# G: G    sn3th = sqrt(3).*sin(theta./3);1 k# @6 U; Q/ I, K+ O7 D
    x1 = (-b - 2.*sqA.*csth)./(3.*a);
5 M$ q5 W% B# v% [3 f, c+ b: S( P$ c2 |    x2 = (-b + sqA.*(csth + sn3th))./(3.*a);
2 F. Q' C/ i6 i' j3 e2 S/ v: q8 [    x3 = (-b + sqA.*(csth - sn3th))./(3.*a);
1 Y/ d; b& l: H: j( o1 p$ D/ L    clear sqA T theta csth sn3th;) W3 ]" ]2 x: G1 |# J7 K+ Q# a% F
end
7 D  }1 U+ K$ D5 o* W9 ox = [x1;  x2;  x3];% a% i6 R( z! I! B7 F
end" n/ {# N$ g7 {8 j
" N" ]6 R/ ^; m+ x* X
麻烦大神帮忙指点一下,非常感谢!

该用户从未签到

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

本版积分规则

关闭

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

EDA365公众号

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

GMT+8, 2025-6-20 18:58 , Processed in 0.078125 second(s), 23 queries , Gzip On.

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

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

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