在scilab用pi要%pi
求拉普拉斯反变换,D(s)无相同的根
s=%s;//定义一个变量
N=4;//分子的值
D=s*(s^2+2*s+5);//分母
p=roots(D);//求解D的根
//计算留数,D有几个根就要计算几个
D1=pdiv(D,(s-p(1)));
c1=horner(N/D1,p(1));
D2=pdiv(D,(s-p(2)));
c2=horner(N/D2,p(2));
D3=pdiv(D,(s-p(3)));
c3=horner(N/D3,p(3));
求特征值的两种方法
A=[1 3 8;-4.5 -7 -0.1;0.53 5 -2];
r1=spec(A);//直接求特征值
//以下间接求特征值
s=%s;
u=eye(A);
f=det(s*u-A);//构造一个行列式
r=roots(f);
用欧拉法解常微分方程
可以像MATLAB一样用数组的下标,注意注释要从%变成//。绘图可以直接用plot
function ds=f(x,y)
ds = y-2*x/y;
end
// 初始条件
x0 = 0;
y0 = 1;
// 欧拉方法的参数
h = 0.1; // 步长
N = 10; // 步数
wucha= zeros(1, N+1);
x = zeros(1, N+1);
y = zeros(1, N+1);
y1 = zeros(1, N+1);
// 初始值
x(1) = x0;
y(1) = y0;
wucha(1)=0;
// 使用欧拉方法进行迭代
for i = 1:N
y(i+1) = y(i) + h * f(x(i), y(i)); // 欧拉公式
x(i+1) = x(i) + h;
y1(i+1)=sqrt(2*x(i+1)+1);//计算真值
wucha(i+1)=y1(i+1)-y(i+1);
end
// 绘制结果
plot(x, y);
set(gca(),"auto_clear","off")//代替MATLAB的hold on
plot(x,y1)
xlabel('x');
ylabel('y');
title('Solution using Euler Method');
xgrid//replace grid on
set(gca(),"auto_clear","on")//replace hold off