24小时热门版块排行榜    

北京石油化工学院2026年研究生招生接收调剂公告
查看: 4918  |  回复: 12

匿名

用户注销 (小有名气)

本帖仅楼主可见
已阅   同方向广播   申请计算强帖   回复此楼   编辑   查看我的主页
回帖支持 ( 显示支持度最高的前 50 名 )

xcenxcen

银虫 (小有名气)

【答案】应助回帖


fegg7502: 金币+1, 应助指数+1, 鼓励交流 2014-05-13 09:17:07
function [y err] = soodesv(q1,q2,q3,alpha,beta,a,b,dx)
N = (b-a)/dx+1;
y = zeros(N,1);
D = zeros(N);
f = zeros(N,1);
for ir=1:N
    x = a+(ir-1)*dx;
    if ir==1
        D(ir,ir) = -q2(x)-2.0/(dx^2);
        D(ir,ir+1) = 2.0/(dx^2);
        f(ir) = 2.0*alpha/dx+q1(x)*alpha+q3(x);
    end
    if ir>1 && ir<N
        D(ir,ir) = -2.0/(dx^2)-q2(x);
        D(ir,ir+1) = 1.0/(dx^2)-q1(x)/(2.0*dx);
        D(ir,ir-1) = 1.0/(dx^2)+q1(x)/(2.0*dx);
        f(ir) = q3(x);
    end
    if ir==N
        D(ir,ir) = -q2(x)-2.0/(dx^2);
        D(ir,ir-1) = 2.0/(dx^2);
        f(ir) = q1(x)*beta+q3(x)-2.0*beta/dx;
    end
end
y = D\f;
t = a:dx:b;
err = norm(D*y-f);
fprintf('2rd order ode solver error: ||D*y-f||_{2}=%e\n',norm(D*y-f));
plot(t,y);

例子:
y''-3.0*y'+2.0*y-x=0 y'(0)=1 y'(1)=2
>>soodesv(@(x)3.0,@(x)(-2.0),@(x)x,1,2,0,1,0.01);
有限差分法 第二类边界条件
解的图像.jpg


有限差分法 第二类边界条件-1
结果.jpg

待我长发及腰,遮住一身肥膘。纵然虎背熊腰,也要高冷傲娇。
6楼2014-05-12 10:16:45
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
普通回帖

dbb627

荣誉版主 (著名写手)

【答案】应助回帖

★ ★ ★
感谢参与,应助指数 +1
fegg7502: 金币+3, 应助指数+1, 专家考核, 3ks 2014-05-13 09:16:37
这个可以考虑用bvp解算器做
BVP解算器
solinit = bvpinit(x, yinit, params)
sol = bvpsolver(odefun,bcfun,solinit,options)
由于边值问题可能有多解,为了便于我们确定那个解是我们需要的,所以必须使用bvpinit函数对初值进行估计
解算器(bvpsolver):Matlab中提供了bvp4c和bvp5c,后者误差控制更好些
输入参数:
x:需要计算的网格点,相当于ode**的tspan
yinit:猜测的值,可以是具体值,也可以是函数,类似与 ode**的 x0
params:其它未知参数,也是一个猜测值
odefun:描述边值问题微分方程的函数句柄

bcfun:边值函数,一般是双边值(x 的上下限即认为两个边界),但也支持多边值(具体看帮助)
bc(y(a),y(b))=0
举个例子,y(0)=0,y(4)=-2 ---bcfun可写成 res =@(ya,yb) [ ya(1) ; yb(1) + 2];
y'(0)=y'(pi)=0,y(0)=1-----------bcfun可写成res = @(ya,yb) [  ya(2); yb(2);ya(1)-1 ];
solinit:由bvpinit生成的初始化网格
solinit = bvpinit(linspace(pa,pb,10),[1 0]);
bvpinit的第一个参数表示求解域及中心节点,第二个参数表示猜测初始值,基本都写成[1 0],它的变化一般对解无影响
options:BVP解算器优化参数,可以通过bvpset设置,具体参数查看帮助

降阶法表达二阶的常微分方程,ya(1)表示函数在求解域[a,b]的左边界a上的值,ya(2)表示函数的一阶导数在a上的值,“ya(1)-5”实际上是“ya(1)-5=0”的简写,表示y(x=a)=5,即函数在左边界上的值为5。yb是右边界,其他与ya相同。
用bvp4c求得的解sol是一个结构体,其中的子项y是一个2行多列的矩阵,第一行表示函数值,第二行表示函数的导数。另一个子项yp也是一个2行多列的矩阵,第一行表示函数一阶导数值,第二行表示函数二阶导数值。用deval求出的y与sol.y相同
The more you learn, the more you know, the more you know, and the more you forget. The more you forget, the less you know. So why bother to learn.
2楼2014-05-09 19:47:44
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

匿名

用户注销 (小有名气)

本帖仅楼主可见
3楼2014-05-09 21:24:53
已阅   申请计算强帖   回复此楼   编辑   查看我的主页

dbb627

荣誉版主 (著名写手)

【答案】应助回帖

★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ...
478107371: 金币+60, ★★★★★最佳答案, 大神,请接受我的膝盖,分全是你一人儿的 2014-05-10 00:11:25
fegg7502: 金币+2, 应助指数+1, 专家考核, 3ks 2014-05-13 09:16:54
举个例子吧
y''-3y'+2y=x, y‘(0)=1,y’(1)=2
CODE:
%解析解
yy=dsolve('D2y-3*Dy+2*y=x','Dy(0)=1','Dy(1)=2','x');
x=0:0.01:1;hold on;plot(x,eval(yy),'bo')
%bvp 数值解
f1=@(x,y)[y(2);x-2*y(1)+3*y(2)];
solinit = bvpinit(linspace(0,1,20),[-1 1]);
f2=@(ya,yb)[ya(2)-1;yb(2)-2];
sol = bvp4c(f1,f2,solinit);
xint = linspace(0,1,25);
yint = deval(sol,xint);
hold on; plot(xint,yint(1,:),'rp-');

The more you learn, the more you know, the more you know, and the more you forget. The more you forget, the less you know. So why bother to learn.
4楼2014-05-09 21:51:36
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

匿名

用户注销 (小有名气)

本帖仅楼主可见
5楼2014-05-10 01:25:56
已阅   申请计算强帖   回复此楼   编辑   查看我的主页

匿名

用户注销 (小有名气)

本帖仅楼主可见
7楼2014-05-12 10:39:14
已阅   申请计算强帖   回复此楼   编辑   查看我的主页

xcenxcen

银虫 (小有名气)


fegg7502: 金币+1, 鼓励交流 2014-05-13 09:17:18
引用回帖:
7楼: Originally posted by 478107371 at 2014-05-12 10:39:14
大神,你这个是用什么方法写的代码,能不能稍微解释一下子...

内部网格用的二阶中心差分
(y(j+1)-2*y(j)+y(j-1))/(dx^2)-q1j*(y(j+1)-y(j-1))/(2*dx)-q2j*yj-q3=0
j=1,....,N-1
边界条件用的二阶中心差分,引入虚网格点
左边边界条件y1-y(-1))/(2.0*dx)=alpha
y(-1)=y1-2*alpha*dx
利用方程
(y(1)-2*y(0)+y(-1))/(dx^2)-q10*alpha-q20*y0-q3=0
把y(-1)带入到上式
每个网格点都有一个方程
然后形成一个(N+1)×(N+1)的方程组
Dy=f
解出来就完了
待我长发及腰,遮住一身肥膘。纵然虎背熊腰,也要高冷傲娇。
8楼2014-05-12 12:49:14
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

匿名

用户注销 (小有名气)

本帖仅楼主可见
9楼2014-05-12 19:05:12
已阅   申请计算强帖   回复此楼   编辑   查看我的主页

xcenxcen

银虫 (小有名气)

【答案】应助回帖


fegg7502: 金币+1, 应助指数+1, 3ks 2014-05-13 09:17:28
引用回帖:
9楼: Originally posted by 478107371 at 2014-05-12 19:05:12
边界条件也是二阶差分吗,是不是一阶差分?另外迭代过程呢?思路是不是用有限差分将二阶方程变成线性方程组,然后用的牛顿迭代法求解?...

边界条件也可以用二阶的差分啊,当然你也可以用一阶的。
这是个线性方程组吧,直接消元就可以解了。你这个方程规模也不大,还是一维的问题。
真要迭代可以考虑用Jacobi迭代什么的。
牛顿迭代法不是解非线性方程的吗?
待我长发及腰,遮住一身肥膘。纵然虎背熊腰,也要高冷傲娇。
10楼2014-05-13 08:31:02
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
相关版块跳转 我要订阅楼主 478107371 的主题更新
最具人气热帖推荐 [查看全部] 作者 回/看 最后发表
[考研] 0703化学 +18 妮妮ninicgb 2026-04-04 19/950 2026-04-06 12:51 by zllcz
[考研] 计算机11408,286分求调剂 +7 木子念晞 2026-04-05 7/350 2026-04-05 19:02 by chy09050039
[考研] 调剂 +3 李广火 2026-04-05 3/150 2026-04-05 18:57 by 蓝云思雨
[考研] 080200学硕,277分,数一104,求带走! +7 瓶子PZ 2026-03-31 7/350 2026-04-05 17:49 by liucky
[考研] 一志愿上海海洋大学083200食品学硕,求调剂,接受其他专业083200 +4 what张 2026-04-04 5/250 2026-04-05 14:07 by chw1980_0
[考研] 081700学硕,323分,一志愿中国海洋大学求调剂学校 +16 披星河 2026-04-04 16/800 2026-04-05 11:27 by 猪会飞
[考研] 341求调剂 +3 学无止境,冲 2026-04-05 3/150 2026-04-05 09:40 by lbsjt
[考研] 一志愿武理材料工程302调剂环化或化工 +19 Doleres 2026-03-31 20/1000 2026-04-04 16:44 by 啊俊!
[考研] 一志愿0817化学工程与技术,求调剂 +24 我不是只因 2026-04-02 28/1400 2026-04-04 15:15 by dongzh2009
[考研] 怎么删帖子啊 +3 缝曦1000 2026-04-04 3/150 2026-04-04 14:20 by 土木硕士招生
[考研] 考研调剂 +5 小sun要好运 2026-04-03 5/250 2026-04-03 21:43 by 啵啵啵0119
[考研] 调剂 +5 asdasdassda 2026-04-03 6/300 2026-04-03 20:27 by 岸上的一条鱼
[考研] 材料与化工调剂一志愿大连海事085600,349 +11 吃的不少 2026-03-30 11/550 2026-04-03 18:05 by Jimmyandyou
[考研] 282求调剂 不挑专业 求收留 +7 Yam. 2026-03-30 8/400 2026-04-03 14:12 by zhangdingwa
[考研] 262求调剂 +6 励志一定发文章 2026-04-02 7/350 2026-04-03 09:54 by linyelide
[考研] 0710生物学求调剂 +9 manman511 2026-04-01 9/450 2026-04-02 10:00 by zxl830724
[考研] 一志愿北京科技,085601总分305求调剂 +9 半生瓜! 2026-04-01 11/550 2026-04-02 08:28 by Wang200018
[考研] 304求调剂 +12 素年祭语 2026-03-31 15/750 2026-04-01 22:41 by peike
[考研] 求0861交通运输专硕or材料专硕调剂 +4 勒布朗@ 2026-03-31 4/200 2026-04-01 09:54 by 一只好果子?
[考研] 085601一志愿西北工业大学初试346 +4 085601初试346 2026-03-30 4/200 2026-03-31 07:47 by jp9609
信息提示
请填处理意见