主要内容

。

境界境界を使使使し选点选点による形形形形解解法

曲线拟合は,曲线拟合工具箱™ののコマンド群群使使,铁路形常分类方程程式(ode)をを方法をを明します。

问题

次の非线形异摂の问题について考えます。

epsilon d ^ 2g(x)+(g(x))^ 2 = 1 on [0..1]

dg(0)= g(1)= 0。

この问题はepsilon = .001でもでも既にかなり难しい,控えめに次を选択し。

epsilon = .1;

近似领域

指定されたブレークシーケンス休息をを用するc ^ 1区から,选点により近似解をます。したがっしたがっ,次数K.が4になるようにし。

休息=(0:4)/ 4;k = 4;

対応する节点シーケンスを次のように取得します。

结=奥克斯(休息,K,2)
结=1×14.0 0 0 0 0.2500 0.2500 0.5000 0.5000 0.7500 0.7500 1.0000 1.0000 1.0000 1.0000

どのどのと节点をしても,対応するスプライン空间の次元はのようなりなり。

n =长度(结) -  k
n = 10.

制剂

自我度の数码10であれば,多重分别ごとに2つのサイトでををとするデータとうまく近似され,合肥でデータうまく场され,2つの周辺条件场追はする条件のが全部で10にになり。

空间ごとに2つのガウスサイトサイト选択します単位长さ'标准'空间[-1/2 .1/2]のの合,これらは次の2つのサイトとます。

高斯= .5773502692 * [ -  1/2;1/2];

ここから,次次使使して选点サイトのコレクションコレクションコレクションししししししししししし

ninterv =长度(中断)-1;temp =(中断(2:ninterv + 1)+断裂(1:ninterv))/ 2;temp = temp([1 1],:) + Gauss * Diff(breaks);COLSITES = TEMP(:)。';

数量的な问题

解决する数据的な问题は,任意の次数および任意のをもつ,非线形システムを満たす分子的多重(PP.yを见つけることです。

DY(0)= 0

(y(x))^ 2 + epsilon d ^ 2y(x)= 1在咖喱中的x

Y(1)= 0

线材化

yが解の现出,の近似である合,ニュートン法による,さらに适切と推定さ(?)解Z.に対する线路问题は次のとおりです。

DZ(0)= 0

w_0(x)z(x)+ epsilon d ^ 2z(x)= b(x)在咖喱中的x

z(1)= 0

ここで,w_0(x):= 2y(x)およびB(x):=(y(x))^ 2 + 1です。

実际,w_0(1):= 1w_1(0):= 1および

w_2(x):= epsilon,w_1(x):= x在咖喱中的0

を选択して,他のすべての値W_0.W_1.W_2.を选択し,B.をまだゼロとして指定ていない场合书,システムに均一。

w_0(x)z(x)z(x)+ w_1(x)dz(x)+ w_2(x)d ^ 2z(x)= b(x)在站点中的x

ここで,

站点= [0,辣静,1];

解决する线路システム

このこのシステム,そのそのZ.これには,すべては,すべての遗址の各Xにおける,すべての关键词Bスプラインについての0分数,1分别および2阶微分がですです値は,spコマンドによって提供されます。

次に,spののドキュメンテーションの重要重要部示し示し示し示し示し示し示し示し

Spcol B样条搭配矩阵。

colloc = spcol(结,k,tau)是矩阵

[D ^ M(i)b_j(tau(i)):i = 1:长度(tau),j = 1:长度(结)-k],

用d ^ m(i)b_j的m(i) - b_j的衍生物,

b_j为结序列结的订单k的第j个b样条曲线,

Tau一系列网站,

假设结和tau都被认为是nondecreaping,而且

m(i)是整数#{j

TAU中的“累积”,TAU(i)多重。

spをを用して次の列を指定します。

Colmat = Spcol(Knots,K,Brk2knt(网站,3));

ここで使用するBRK2KNT.遗址の各エントリを3倍にするため,遗址の各Xについて,科尔马で,すべての关键词Xにおける値,1分,および2分别が得ます。

ここから,重みw_0(x),w_1(x),w_2(x)をを用してXに対する3倍の行ををわせることで,线路システムの行列Xに対応する行を取得し,选点行列を取得します。

yの初期推定の必要性

スプライン空间からのの在の近似yも必要です。最初最初,遗址におけるpp空间から妥当初推定を内插して近似近似をします。この推定には,次のに,次のの物线をしし。

x ^ 2 - 1

これこれは端点条件を,またスプライン空间内に现处于しし。遗址における内插により,そのb型を求めます。非スパース行科尔马から关连する内插行列を选択します。これはいくつかの注意が必要なステップで実行されます。

intmat = colmat([2 1+(1:(n-2))* 3,1+(n-1)* 3],:);cofs = intmat \ [0 colsites。* colsites-1 0]。';y = spmak(结,cofs。');

结果をプロットし,x ^ 2-1そのものそのものとなってているを确认しし

fnplt(y,'G');传奇('初始猜测(x ^ 2-1)''地点''nw');轴([ -  0.01 1.01 -1.01 0.01]);抓住

反复

在の推定yから,改善された近似解Z.ををために线路システムを作用成し,解くことができました。実际,使ことができました。yを使用しし,変更Z-Y.が指定された误差より小さいさい合。

公差= 6.e-9;

各反复における変更Z-Y.の最大ノルムをのの力に示し,この图に反复のそれぞれも示し示し。

尽管1 vtau = fnval(y,colsites);重量= [0 1 0;[2 * vtau。'零(n-2,1)Repmat(epsilon,n-2,1)];1 0 0];colloc = zeros(n,n);为了j = 1:n colloc(j,:) =权重(j,:) * colmat(3 *(J-1)+(1:3),:);结尾cofs = colloc \ [0 vtau。* vtau + 1 0]。';z = spmak(结,cofs。');fnplt(z,'K');maxdif = max(max(abs(z.coefs-y.coefs))));fprintf('maxdif =%g \ n',maxdif)如果(maxdif 休息那结尾%现在重申y = z;结尾
maxdif = 0.206695.
maxdif = 0.01207.
maxdif = 3.95151e-05
maxdif = 4.43216e-10
传奇({'初始猜测(x ^ 2-1)''迭代'},'地点''nw');

ニュートン反复から予想される,これは2次收束のようにます。

イプシロンを小さくするためため设备

埃斯利昂をを场は,右端点右端点に近い境界层作作作者人。これこれは,等间隔でないが必要です。纽knt.を实用して,现处于の近似からな(细かい)メッシュを作物成し。

结= newknt(z,ninterv + 1);休息= knt2brk(结);结=奥克纳(休息,4,2);n =长度(结)-k;

新规ブレークの选点サイト

次に,新闻休息に対応する选点サイトを取得します。

ninterv =长度(中断)-1;temp =((2:ninterv + 1)+断裂(1:ninterv))/ 2);temp = temp([1 1],:) + Gauss * Diff(breaks);COLSITES = TEMP(:)。';站点= [0,辣静,1];

さらに,新しい选点行列をます。

Colmat = Spcol(Knots,K,Brk2knt(网站,3));

初推定

计算した解Z.への现处于のスプライン空间からのとしててて,初推定yを求めます。得られた内插をプロットし,现处于の解に近いことを确认します。

intmat = colmat([2 1+(1:(n-2))* 3,1+(n-1)* 3],:);y = spmak(结,[0 fnval(z,colsites)0] / intmat。');fnplt(y,'C');斧头= GCA;h = ax.children;传奇(H([6 5 1]),{'初始猜测(x ^ 2-1)''迭代'......'epsilon新价值的新初步猜测'},......'地点''nw');

小さいイプシロンをを使使た反复

ここでは,埃斯利昂を3で除算して上记反复を缲り返します。收束は再び2次となり。

epsilon = epsilon / 3;尽管1 vtau = fnval(y,colsites);重量= [0 1 0;[2 * vtau。'零(n-2,1)Repmat(epsilon,n-2,1)];1 0 0];colloc = zeros(n,n);为了j = 1:n colloc(j,:) =权重(j,:) * colmat(3 *(J-1)+(1:3),:);结尾cofs = colloc \ [0 vtau。* vtau + 1 0]。';z = spmak(结,cofs。');fnplt(z,'B');maxdif = max(max(abs(z.coefs-y.coefs))));fprintf('maxdif =%g \ n',maxdif)如果(maxdif 休息那结尾%现在重申y = z;结尾
maxdif = 0.237937.
maxdif = 0.0184488.
maxdif = 0.000120467.
maxdif = 4.78115e-09
斧头= GCA;h = ax.children;传说(h([10 9 5 4]),......{'epsilon = .1'的初始猜测(x ^ 2-1)'迭代'......Sprintf('初步猜测epsilon =%.3f',epsilon)......'迭代'},'地点''nw');

非常に小さいイプシロン

埃斯利昂が非常に小さい结合は,毎回埃斯利昂を3で除算しての计算をを缲り返すです。

为了ee = 1:4结= Newknt(z,ninterv + 1);休息= knt2brk(结);结=奥克纳(休息,4,2);n =长度(结)-k;ninterv =长度(中断)-1;temp =((2:ninterv + 1)+断裂(1:ninterv))/ 2);temp = temp([1 1],:) + Gauss * Diff(breaks);COLSITES = TEMP(:)。';站点= [0,辣静,1];Colmat = Spcol(Knots,K,Brk2knt(网站,3)); intmat = colmat([2 1+(1:(n-2))*3,1+(n-1)*3],:); y = spmak(knots,[0 fnval(z,colsites) 0]/intmat.'); fnplt(y,'C')epsilon = epsilon / 3;尽管1 vtau = fnval(y,colsites);重量= [0 1 0;[2 * vtau。'零(n-2,1)Repmat(epsilon,n-2,1)];1 0 0];colloc = zeros(n,n);为了j = 1:n colloc(j,:) =权重(j,:) * colmat(3 *(J-1)+(1:3),:);结尾cofs = colloc \ [0 vtau。* vtau + 1 0]。';z = spmak(结,cofs。');fnplt(z,'B');maxdif = max(max(abs(z.coefs-y.coefs))));如果(maxdif 休息那结尾%现在重申y = z;结尾结尾斧头= GCA;h = ax.children;传奇(h([30 29 25 24]),......{'epsilon = .1'的初始猜测(x ^ 2-1)'迭代'......'epsilon的初始猜测= .1 / 3 ^ j,j = 1:5'......'迭代'},'地点''nw');

最も小さいイプシロンににしたブレークのプロット

次に,休息の最终的な分布を示します。この结合は纽knt.がうまく机械していることががます。

breaks = fnbrk(fn2fm(z,'pp'),'B');bb = repmat(休息,3,1);Cc = Repmat([0; -1; NaN],1,长度(断裂));绘图(BB(:),CC(:),'r');抓住离开斧头= GCA;h = ax.children;图例(h([31 30 26 25 1]),......{'epsilon = .1'的初始猜测(x ^ 2-1)'迭代'......'epsilon的初始猜测= .1 / 3 ^ j,j = 1:5'......'迭代''epsilon的休息= .1 / 3 ^ 5'},'地点''nw');

最も小さいイプシロンの残差のプロット

次のodeをを解こううしているいるを思い出してててて

epsilon d ^ 2g(x)+(g(x))^ 2 = 1 on [0..1]

。

xx = linspace(0,1,201);绘图(XX,1  -  epsilon * fnval(fnder(z,2),xx) - (fnval(z,xx))。^ 2)标题('对于最小的epsilon的计算解决方案'的剩余物);