查看: 439|回复: 9|关注: 0

[已解决] matlab dsolve求解微分方程怎样让结果随着输入参数的改变而改变?

[复制链接]

新手

7 麦片

财富积分


050


2

主题

8

帖子

0

最佳答案
代码:
syms t;
syms Uc;
U0=input('请输入0+时刻电压:');
I0=input('请输入0+时刻电流:');
R=input('请输入等效串联电阻:');
L=input('请输入电感:');
C=input('请输入电容:');
Uc=dsolve('L*C*D2Uc+R*C*DUc+Uc=0','Uc(0)=U0','DUc(0)=-I0/C','t');
ezplot(Uc)

结果:
Uc =
(exp(-(t*((-C*(- C*R^2 + 4*L))^(1/2) + C*R))/(2*C*L))*(U0*(-C*(- C*R^2 + 4*L))^(1/2) + 2*I0*L - C*R*U0))/(2*(-C*(4*L - C*R^2))^(1/2)) + (exp((t*((-C*(- C*R^2 + 4*L))^(1/2) - C*R))/(2*C*L))*(U0*(-C*(- C*R^2 + 4*L))^(1/2) - 2*I0*L + C*R*U0))/(2*(-C*(4*L - C*R^2))^(1/2))
我想要这个表达式中的符号全由输入的值来代替,有办法吗?

MATLAB 基础讨论
版块优秀回答者

入门

161 麦片

财富积分


50500


0

主题

96

帖子

18

最佳答案
  • 关注者: 1
发表于 2019-11-19 21:40:26 | 显示全部楼层
本帖最后由 hhh619 于 2019-11-19 22:19 编辑

请输入0+时刻电压:1
请输入0+时刻电流:1
请输入等效串联电阻:1
请输入电感:1
请输入电容:1
Uc

Uc =

(exp(-(t*((-C*(- C*R^2 + 4*L))^(1/2) + C*R))/(2*C*L))*(U0*(-C*(- C*R^2 + 4*L))^(1/2) + 2*I0*L - C*R*U0))/(2*(-C*(4*L - C*R^2))^(1/2)) + (exp((t*((-C*(- C*R^2 + 4*L))^(1/2) - C*R))/(2*C*L))*(U0*(-C*(- C*R^2 + 4*L))^(1/2) - 2*I0*L + C*R*U0))/(2*(-C*(4*L - C*R^2))^(1/2))


eval(Uc)

ans =

- (3^(1/2)*exp((t*(- 1 + 3^(1/2)*1i))/2)*(- 1 + 3^(1/2)*1i)*1i)/6 - (3^(1/2)*exp(-(t*(1 + 3^(1/2)*1i))/2)*(1 + 3^(1/2)*1i)*1i)/6

我随便输的值,,所以式子可能不是很对

新手

7 麦片

财富积分


050


2

主题

8

帖子

0

最佳答案
 楼主| 发表于 2019-11-19 22:06:08 | 显示全部楼层
hhh619 发表于 2019-11-19 21:40
试一下vpa(Uc)之类的命令

还是不行。

新手

7 麦片

财富积分


050


2

主题

8

帖子

0

最佳答案
 楼主| 发表于 2019-11-19 22:08:12 | 显示全部楼层
问题简述
输入U0,I0,L,R,C
微分方程:L*C*D2Uc+R*C*DUc+Uc=0','Uc(0)=U0','DUc(0)=-I0/C,求的是Uc对t的导数
想要画出Uc的图像

MATLAB 基础讨论
版块优秀回答者

入门

161 麦片

财富积分


50500


0

主题

96

帖子

18

最佳答案
  • 关注者: 1
发表于 2019-11-19 22:20:42 | 显示全部楼层
本帖最后由 hhh619 于 2019-11-19 22:25 编辑

我把二楼的答案改了一下(我电脑总显示没人回复,就直接改了二楼的回答;P )

新手

7 麦片

财富积分


050


2

主题

8

帖子

0

最佳答案
 楼主| 发表于 2019-11-19 22:41:36 | 显示全部楼层
hhh619 发表于 2019-11-19 22:20
我把二楼的答案改了一下(我电脑总显示没人回复,就直接改了二楼的回答 ) ...

非常感谢。是显示出来了,但为什么画图失败(ezplot(Uc)报错)呢?

MATLAB 基础讨论
版块优秀回答者

入门

161 麦片

财富积分


50500


0

主题

96

帖子

18

最佳答案
  • 关注者: 1
发表于 2019-11-19 22:43:00 | 显示全部楼层
本帖最后由 hhh619 于 2019-11-19 22:44 编辑
善丿良 发表于 2019-11-19 22:41
非常感谢。是显示出来了,但为什么画图失败(ezplot(Uc)报错)呢?

函数画图推荐用fplot 吧,如果函数太复杂还是向量化用plot画图比较好

新手

7 麦片

财富积分


050


2

主题

8

帖子

0

最佳答案
 楼主| 发表于 2019-11-19 23:02:05 | 显示全部楼层
hhh619 发表于 2019-11-19 22:43
函数画图推荐用fplot 吧,如果函数太复杂还是向量化用plot画图比较好

使用fplot()
fplot(Uc),axis([0,10])
报错:fplot()输入必须为一个或多个包含单个变量的函数
PS.这个函数的向量化我不太会。。。

MATLAB 基础讨论
版块优秀回答者

入门

161 麦片

财富积分


50500


0

主题

96

帖子

18

最佳答案
  • 关注者: 1
发表于 2019-11-20 09:54:15 | 显示全部楼层 |此回复为最佳答案
善丿良 发表于 2019-11-19 23:02
使用fplot()
fplot(Uc),axis([0,10])
报错:fplot()输入必须为一个或多个包含单个变量的函数

1.f=@(t) Uc
   fplot(f)  %fplot要用函数句柄画图
2.用plot画图。。可以参考下面这个帖子,生成可以对向量中元素运算的函数,方便得到系列Uc的值
https://www.ilovematlab.cn/thread-260310-1-1.html

新手

7 麦片

财富积分


050


2

主题

8

帖子

0

最佳答案
 楼主| 发表于 2019-11-20 14:48:53 | 显示全部楼层
hhh619 发表于 2019-11-20 09:54
1.f=@(t) Uc
   fplot(f)  %fplot要用函数句柄画图
2.用plot画图。。可以参考下面这个帖子,生成可以对向 ...
:loveliness: 谢谢
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

站长推荐上一条 /4 下一条

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