网页
资讯
视频
图片
知道
文库
贴吧
地图
采购
进入贴吧
全吧搜索
吧内搜索
搜贴
搜人
进吧
搜标签
日
一
二
三
四
五
六
签到排名:今日本吧第
个签到,
本吧因你更精彩,明天继续来努力!
本吧签到人数:0
一键签到
可签
7
级以上的吧
50
个
一键签到
本月漏签
0
次!
0
成为超级会员,赠送8张补签卡
如何使用?
点击日历上漏签日期,即可进行
补签
。
连续签到:
天 累计签到:
天
0
超级会员单次开通12个月以上,赠送连续签到卡3张
使用连续签到卡
05月09日
漏签
0
天
美赛吧
关注:
6,228
贴子:
23,665
看贴
图片
吧主推荐
游戏
1
2
下一页
尾页
30
回复贴,共
2
页
,跳到
页
确定
<返回美赛吧
>0< 加载中...
微分方程的解析解
只看楼主
收藏
回复
32100004
美赛M
7
该楼层疑似违规已被系统折叠
隐藏此楼
查看此楼
尝试发个简易的教程,关于三大数学软件求解微分方程符号解。
送TA礼物
IP属地:河南
1楼
2014-05-23 11:11
回复
32100004
美赛M
7
该楼层疑似违规已被系统折叠
隐藏此楼
查看此楼
PS:数学软件不是万能的,只能求解 解存在的,或者可以用已知方法求解的。这点尤其要注意。当用多种方法求解都得到空集时,需要检查自己的方程是否有错误。
IP属地:河南
2楼
2014-05-23 11:12
回复
收起回复
广告
立即查看
32100004
美赛M
7
该楼层疑似违规已被系统折叠
隐藏此楼
查看此楼
Matlab
Matlab的长处是处理数值,但也可以求解符号形式的解析解。2014最新版本有在线的汉化。然而好像是2008版本之后,Matlab放弃了Maple内核,采用mupad运算符号语言。个人认为mupad不算太优秀。
IP属地:河南
3楼
2014-05-23 11:13
回复
收起回复
32100004
美赛M
7
该楼层疑似违规已被系统折叠
隐藏此楼
查看此楼
方法:
1. 直接求解
Matlab接受采用Dy的方式定义函数y的导数y’(t),其中默认变量为t;接受Dny的方式定义y的n阶导数y^(n)。这样可以直接求解方程而不需要定义变量。
特别注意,默认自变量为t。
IP属地:河南
4楼
2014-05-23 11:13
回复
收起回复
32100004
美赛M
7
该楼层疑似违规已被系统折叠
隐藏此楼
查看此楼
格式1
S = dsolve( ‘eqn’, ‘var’ )
输入的量:
eqn:常微分方程F(x,y,Dy,D2y,…,Dny)=0各个等式。
var:自变量。默认为t。
格式2
S = dsolve( ‘eqn1’, ‘eqn2’,…, ‘eqn_m’,‘var’ )
输入的量:
eqn:常微分方程eqn1, eqn2,…, eqn_m
var:自变量。默认为t。
IP属地:河南
5楼
2014-05-23 11:14
回复
收起回复
32100004
美赛M
7
该楼层疑似违规已被系统折叠
隐藏此楼
查看此楼
方法2:定义变量
Matlab中同时支持定义函数再进行运算。这种方法的优点是可以在定义时就声明自变量。
比如:
syms a y(t)
Dy = diff(y);
dsolve(diff(y, 2) == -a^2*y, y(0) == 1,Dy(pi/a) == 0)
上式中diff()命令为求导数,第一句话为声明变量。
对比用之前的方法
dsolve('D2y=-a^2*y', 'y(0)= 1', 'Dy(pi/a)== 0','x')
都可以得到结果。
IP属地:河南
7楼
2014-05-23 11:15
回复
收起回复
32100004
美赛M
7
该楼层疑似违规已被系统折叠
隐藏此楼
查看此楼
注意:两种方法的单引号使用不同,要特别的注意。
IP属地:河南
8楼
2014-05-23 11:16
回复
收起回复
32100004
美赛M
7
该楼层疑似违规已被系统折叠
隐藏此楼
查看此楼
求解方程组
声明变量求解
syms x(t) y(t)
z = dsolve(diff(x) == y, diff(y) == -x)
或采用直接书写
z = dsolve('Dx== y', 'Dy == -x','t')
也都可以。
不过解有可能返回结构体形式。要想得到解,可以用z.x,z.y展开,或者
[a,b] = dsolve('Dx== y', 'Dy == -x','t')
直接得到各个方程的解。
IP属地:河南
9楼
2014-05-23 11:16
回复
收起回复
广告
立即查看
32100004
美赛M
7
该楼层疑似违规已被系统折叠
隐藏此楼
查看此楼
Matlab绘图
现在来画图
最简单的例子:
s=dsolve('Dy=y')
得到s=C10*exp(t)
基本思路是用subs或eval命令替代常数,for循环绘制曲线族或者直接绘出某一特解
IP属地:河南
10楼
2014-05-23 11:17
回复
收起回复
32100004
美赛M
7
该楼层疑似违规已被系统折叠
隐藏此楼
查看此楼
syms t
s=dsolve('Dy=y')
s=char(s);
for i=-5:5
C10=i;%赋值。其中常数项要看你的解对应的是什么,就要改成什么
s1=eval(s);
ezplot(s1)
hold on
end
hold off
IP属地:河南
11楼
2014-05-23 11:17
回复
收起回复
32100004
美赛M
7
该楼层疑似违规已被系统折叠
隐藏此楼
查看此楼
IP属地:河南
12楼
2014-05-23 11:18
回复
收起回复
32100004
美赛M
7
该楼层疑似违规已被系统折叠
隐藏此楼
查看此楼
同理,对于方程组也是如此。
例如:
[a,b] = dsolve('Dx== y', 'Dy ==-x','t')
s=char(s);
for i=-5:5
C7=i;C8=2*i;%同样,这里在不同电脑对应常数项不同
a1=eval(a);
b1=eval(b);
ezplot(a1);ezplot(b1)
hold on
end
hold off
IP属地:河南
13楼
2014-05-23 11:18
回复
收起回复
32100004
美赛M
7
该楼层疑似违规已被系统折叠
隐藏此楼
查看此楼
ezplot简单但不友好。
也可构造函数,建立数据,并用plot绘制。
还是最简单的例子
s=dsolve('Dy=y');
C2=1;%同样
s=char(s);
s=inline(subs(s));
k=1:10;
y=s(k);
plot(k,y)
IP属地:河南
14楼
2014-05-23 11:19
回复
收起回复
32100004
美赛M
7
该楼层疑似违规已被系统折叠
隐藏此楼
查看此楼
提示:
当遇到
Warning: Explicit solution could not befound; implicit solution returned.
推荐换一种方法。虽然Matlab帮助文档中有关于这个的解决方法,但总觉得有点不方便和不靠谱。
IP属地:河南
15楼
2014-05-23 11:19
回复
收起回复
广告
立即查看
32100004
美赛M
7
该楼层疑似违规已被系统折叠
隐藏此楼
查看此楼
Mathematica
Mathematica是另一个强大的数学软件,符号语言相当强大。不过关于它的资料比较少。同时,Mathematica的语言与C语言有差别。这也是不太流行的原因之一。不过界面简洁,书写优美,界面漂亮。同时,汉化强大。
简单介绍一下语法:函数首字母大写,函数括号用[],shift+enter运行语句。推荐有时间的人去学习一下这个学习软件,最基础的入门几天就可以了,对于学工程的也就够用了。
IP属地:河南
16楼
2014-05-23 11:19
回复
收起回复
登录百度账号
扫二维码下载贴吧客户端
下载贴吧APP
看高清直播、视频!
贴吧热议榜
1
印巴上百架战机在空中激战数小时
1964700
2
韩棋院自嗨为柯洁事件改规则
1668689
3
369越来越会拉扯了
1635228
4
小米SU7Ultra限制马力版本推送
1460187
5
《幻兽帕鲁》选择向任天堂认怂
1434758
6
阵风VS歼10CE谁更强?
1299350
7
5090D卡贩子或将哭晕在厕所
1063896
8
吧友开贴回忆死去的青梅竹马
914894
9
海贼王1148话贾巴出手重伤他人
824120
10
哪款游戏把耐久度设定做得很好?
707658
贴吧页面意见反馈
违规贴吧举报反馈通道
贴吧违规信息处理公示