
不需要用循环,直接使用逻辑数组运算更快。
我假设你的x和x(1)--x(n)是不同的变量,那么我用a来表示你的x,用x数组代表你的x(1)--x(n)
我随便给这些数赋值
a=10;
x=1:3:30;
k=5;
temp = true(size(x));
temp(k) = false;
y = prod(a - x) / prod(x(k) - x(temp));
a-x是生成数组[a-x(1), a-x(2), , a-x(n)],prod()是吧这个数组相乘
temp是一个逻辑数组,和x相同大小,并且只有第k个数是false。x(temp)就是生成[x(1), x(2),, x(k-1), x(k+1), , x(n)]
其他的应该容易理解
补充:拉格朗日插值多项式可也这么写:
%x0,y0是已知各点坐标,共n点
x0 = [1, 2, 3];
y0 = [1, 8, 27];
n = length(x0);
%x是要求的点
x = 4;
y = 0;
for k = 1:n
temp = true(size(x0));
temp(k) = false;
y = y + y0(k) prod(x - x0(temp)) / prod(x0(k) - x0(temp));
end
虽然我不懂你的程序,但是你里边有几个问题。首先,我复制粘贴到MATLAB之后字母Ф都是现实红色的(红色是有问题咯)。我随便用个字母Q代替了下。还有就是输出图像plot(Ia,n1,n2,n3,'k')这一行中n2,n3,这两个,都是在中文输入法下打出来的。当然也不行,这些符号仅能在英文状态下输入。然后运行有输出。图像在附件中。希望对你有帮助。
>> %直流电动机转速特性曲线
%以n=f(Ia)关系画出曲线
%--------------------------------
%当改变
%下面输入电机的基本数据:
q=1;Ce=1;Ra=00161;
%规定变量变化范围:
Ia=0:100:2000;U1=750;U2=800;U3=700;
%带入公式,计算出直流电动机转速特性曲线:
n1=(U1/(Ceq))-(RaIa)/(Ceq);
n2=(U2/(Ceq))-(RaIa)/(Ceq);
n3=(U3/(Ceq))-(RaIa)/(Ceq);
plot(Ia,n1,n2,n3,'k')
xlabel('Ia')
ylabel('n')
grid on
y1==y2
条件不会严格满足,可以考虑在容差范围内认为是相等,同时循环步长要减小即:
abs(y1-y2)<1e-2
这段程序可以用:
solve('x=cos(x)')
clear all
clc
x=[1,2,3];
y=[2,3,4];
plot(x,y) % 二维图像
z=[3,4,5];
plot3(x,y,z) % 三维图像
可以用help plot来看一下相关的其他命令,例如figure, mesh 等
以上就是关于问一下大神matlab应该怎么编程全部的内容,包括:问一下大神matlab应该怎么编程、简单的MATLAB程序,我不会matlab、一个简单的matlab程序等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)