南京郵電大学Matlab数学実験レポート

序文

数学的実験は本当に迷惑です...

「揚子江の後ろの波が前の波を打ち負かし、前の波が浜辺で打ち負かされる」という精神に固執する

私は、将来の自分のために、自分で書いた数学実験レポートの問題解決プロセスをブログの形で記録します。

参考までに、必ずしも正しいとは限りません。

自分で考えてからこのブログに来てください。結局のところ、将来的には、数学の研究では実際にmatlabを使用するようになります(当時は操作方法を忘れていたと思いますが、このブログを書いたのはそのためです)

新旧バージョンの機能使い方には一定の違いがあります!具体的な違いはBaiduである場合もあれば、私のものと同じバージョンを直接使用する場合もあります。

  • このブログで使用されているバージョンはmatlab R2022a

練習する

注:mには特別な要件があります。詳細については、実験レポートを確認してください

1.1

IMG_20220408_105804

>> syms x
>> limit((sqrt(1+m*x^2)-cos(m*x))/x^2,x,0)

範囲が異なり、最初は0、2番目は∞に近いことに注意してください。

syms x
limit((sqrt(1+m*x^2)-cos(m*x))/x,x,inf)

1.2

IMG_20220408_105843

ここでのeは、実際に示すためにexp(1)使用するます

画像-20220408111613808

1.3

IMG_20220408_110021

>> syms x
>> f=exp(1)^(-m*x^2)
>> int(f,x,0,inf)

1.4

画像-20220408111132874

>> syms x
>> f=(m/1000)+x
>> f1=power(f,1/3)
>> taylor(f1,x,0,'Order',5)
>> pretty(ans)

1.5

画像-20220408111501248

画像-20220408112657933

1.6

画像-20220408111933112

画像-20220408112608184

1.7

IMG_20220408_105940

Mファイル

function f=func1(x)
f=x.*2.*(x>=0&x<=1/2)+(2*(1-x)).*(x>=1/2&x<=1);
end

描画コマンド

 >> x=linspace(0,1);
 >> y=func1(x);
 >> plot(x,y);

質問(2)は必要ありません

1.8

画像-20220408112244059

(1)
>> t=-m/10:0.1:m/10;
>> x=(m/20)*cos(t);
>> y=(m/20)*sin(t);
>> z=t;
>> plot3(x,y,z)

(2)
>> t=-m/10:0.1:m/10;
>> x=cos(t)+t.*sin(t);
>> y=sin(t)-t.*cos(t);
>> z=-t;
>> plot3(x,y,z)

1.9

IMG_20220408_110036

>> a=[1000/m,500/m,400/m,100/m];
col=['r','b','k','g'];
x=linspace(-0.1,1,1000);
for i=1:4
y=0.*(x<=0)+(a(i)*exp(-a(i)*x)).*(x>0);
plot(x,y,'color',col(i),'linewidth',1)
hold on;
end
>> legend('1000','500','400','100')

1.10

IMG_20220408_113906

>> syms x y;
>> f=sin(x^2+(m/1000)*y^2)-cos(x*y);
>> ezplot('f',[-6,6,-8,8])

1.11

IMG_20220408_113925

>> fmesh(@(x,y) m.*x.^2+y.^4);

1.12

画像-20220408151851822

grid on;描画された画像をグリッド化するための描画コード

fplot(@(x) exp(x)-((3*m)/(m+100))*x.^2);
grid on;

近似ルートコマンド(fsolveまたはfzero)

f=@(x) exp(x)-((3*m)/(m+100))*x.^2;
x=[-1 0 2 4];
arrayfun(@(x) fzero(f,x),x)

xの範囲は画像を見て得られ、ゼロの範囲は、、、および-1~03つの範囲に0~2あります。2~4

画像-20220408152113871


演習2

2.1

IMG_20220408_113826

>>f=inline('(x+m/x)/2');
x0=-3;
for i=1:10;
x0=f(x0);
fprintf('%g,%12.8f\n',i,x0)
end;

x0の値を変更して別の結果を取得します。数値は同じで、符号は異なります。

最後に出力される結果は同じです。Xnつまり、その値に収束します。

2.2

IMG_20220408_113830

質問1)

>> f=inline('(x-1)/(x+m)');
>> x0=1;
>> for i=1:10;
x0=f(x0);
fprintf('%g,%12.8f\n',i,x0);
end;

質問2)

蜘蛛の巣図で反復シーケンスを判断する場合はxの範囲を使用する必要があるため、質問(1)の関数ペアf2(x)を計算に使用する必要があり、最終的に書き込まれるxの範囲には計算されたf2(x)収束値を含める必要があります

計算された収束値が316.2343564の場合、最後に書き込まれた範囲は次のようになります。[250,350]

>>  f=inline('(x+m*m)/(x+m)');
x=[];
y=[];
x(1)=0.5;
y(1)=0;
x(2)=x(1);
y(2)=f(x(1));
for i=1:100
x(1+2*i)=y(2*i);
x(2+2*i)=x(1+2*i);
y(1+2*i)=x(1+2*i);
y(2+2*i)=f(x(2+2*i));
end;
plot(x,y,'r')
hold on
syms x;
ezplot(x,[250,500]);
ezplot(f(x),[250,500]);
axis([250,500,250,500]);
hold off

その結果、次の図が表示され、関数が収束していることが示されます。

画像-20220408160134776

2.3

IMG_20220408_113837

Mファイル

function y=func2(x)
if x>=0&&x<=1/2
    y=2*x;
elseif x>=1/2&&x<=1
    y=2*(1-x);
end

コマンドラインコード

x(1)=rand();
for i=1:20
x(1)=func2(x(1))
fprintf('%g,%g\n',i,x(1));
end

結果は混乱しているので、混沌としている

2.4

IMG_20220408_161530

f=inline('a*x*(1-x)');
x0=0.5;
for i=1:100
plot(i,f(x0),'.')
x0=f(x0);
hold on
end

インライン関数のaは特定の値に置き換える必要があります。そうしないと、エラーが報告されます。

a 2.8 3.43.4 3.6 3.84
シーケンス収束 収束 T = 2 混沌 T = 3

カッコウカッコウ

一部の先輩がすでに完全な実験報告書を共有していることがわかったので、私はそれを書きません!

ポータル

画像-20220409131504284

さあさあ!

おすすめ

転載: blog.csdn.net/muxuen/article/details/124042753