matlab练习2(多项式插值,数值积分,数据拟合的最小二乘法,常微分方程数值解)

文章展示了多项式插值用于求解sin(π/8)的近似值及截断误差估计;接着应用复化梯形公式和复化Simpson公式进行数值积分;然后通过最小二乘法对化学反应中质量浓度与时间的数据进行拟合;最后,采用预估校正Euler法求解常微分方程的数值解并绘制图形。
摘要由CSDN通过智能技术生成

7.多项式插值: 由函数y=sin x在三点0π/4π/2处的函数值,构造二次插值多项式P2(x),计算sin(π/8)的近似值并估计截断误差

x = [0, pi/4, pi/2];
y = sin(x);
f = (y(3) - y(2)) / (x(3) - x(2)) - (y(2) - y(1)) / (x(2) - x(1));
P2 = @(x) (3 - sqrt(2))/8 * sin(x) + (sqrt(2) - 1)/8 * sin(pi/4) + (3 + sqrt(2))/8 * sin(pi/2);
approximate_value = P2(pi/8);
truncation_error = f * (pi/8 - 0) * (pi/8 - pi/4) * (pi/8 - pi/2);
fprintf('sin(pi/8)的近似值为:%.4f\n', approximate_value);
fprintf('截断误差的估计值为:%.4f\n', truncation_error);

 

8.数值积分: 已知函f(x)=\frac{sin(x)}{x}如下数据表

x

0

1/8

1/4

3/8

1/2

5/8

3/4

7/8

1

f(x)

1

0.997

3978

0.989

6158

0.976

7267

0.958

8110

0.936

1556

0.908

8517

0.877

1926

0.841

4710

分别用复化梯形公式复化Simpson公式计算积分I=\int_{0}^{1}\frac{sin(x)}{x}dx的近似值

复化梯形公式:

a = 0; 
b = 1; 
n = 100; 
h = (b - a)/n; 
x = a:h:b; 
f = zeros(1,n+1); % 初始化
for i = 1:n+1 % 计算f
    if x(i) == 0 % 处理x等于0的情况
        f(i) = 1;
    else
        f(i) = sin(x(i))/x(i);
    end
end
s = sum(f) - (f(1) + f(n+1))/2; 
I = h*s;
disp(['使用复化梯形公式计算得到I的值为:', num2str(I)]);

复化Simpson公式:

a = 0;
b = 1;
n = 100;
dx = (b-a)/n;
x = a+dx:dx:b-dx;
y = sin(x)./x;
S = dx/3 * (sin(a)/(a+eps) + sin(b)/(b-eps) + 4*sum(y(1:2:end-1)) + 2*sum(y(2:2:end-2)));
disp(['使用复化Simpson公式得到I的值为:', num2str(S)]);

9.数据拟合的最小二乘法: 在某化学反应中,生成物的质量浓度y(单位:10-3g/cm3)与时间t(单位:min)的关系为y=\frac{t}{\alpha +\beta t},现测得一组数据如下:

t1

1

2

3

4

6

8

10

12

14

16

y1

4.00

6.41

8.01

8.79

9.53

9.86

10.33

10.42

10.53

10.61

t = [1 2 3 4 6 8 10 12 14 16];
y = [4.00 6.41 8.01 8.79 9.53 9.86 10.33 10.42 10.53 10.61];
z = 1 ./ y;
p = polyfit(t, z, 1);
b_over_a = p(1);
a = 1 / p(2);
b = b_over_a * a;
disp(['a = ', num2str(a)]);
disp(['b = ', num2str(b)]);
tt = linspace(0, 16, 100);
yy = a ./ (1 + b * tt);
plot(t, y, 'o', tt, yy);
xlabel('时间t(min)');
ylabel('质量浓度y(10^-3 g/cm^3)');
legend({'原始数据', '拟合曲线'});

试用数据拟合的最小二乘法确定上述经验公式中的参数\alpha\beta,并绘制拟合曲线图。

10.常微分方程数值解: 用预估校正Euler法,求出步长h=0.1的所有点的值,并绘制图形。

\left\{\begin{matrix}y{}'=y-\frac{2x}{y},x\epsilon [0,1] \\y(0)=1 \end{matrix}\right.

f = @(x, y) y - 2*x/y;

x0 = 0;
y0 = 1;
h = 0.1;
xn = 1;
x = x0:h:xn;

for i = 1:length(x)-1
    y1 = y0 + h*f(x(i), y0);
    y2 = y0 + h/2*(f(x(i), y0) + f(x(i+1), y1));
    y0 = y2;
    y(i+1) = y0;
end

plot(x, y)
title('Solution with h=0.1')
xlabel('x')
ylabel('y')

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

不吃橘子的橘猫

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值