matlab 一个入门菜鸟级编程(求根公式)

作者&投稿:豆晏 (若有异议请与网页底部的电邮联系)
matlab菜鸟级问题。。。求会matlab的。。。~

>> A = [1:8]'
A =
1
2
3
4
5
6
7
8
>> b = reshape(A,2,4)'
b =
1 2
3 4
5 6
7 8
上面是过程,需要注意的是,matlab里面矩阵元素在内存中是按列排的,而你要的b是1~8按行排的4*2的矩阵,那么就只能先把Areshape成2*4的矩阵,然后再转置,才能够得到想要b。

如果数字很多,也类似做。
比如:
>> A=[1:10]'
A =
1
2
3
4
5
6
7
8
9
10
>> r = size(A,1)
r =
10
>> b = reshape(A,2,r/2)'
b =
1 2
3 4
5 6
7 8
9 10
注意得到r的时候必须用size(A,1),也就是得到A的第一维的size,即A的行数!这才是A数组的大小。实际上,size(A)=[10,1]。

地球可是真小啊,
看来老师布置作业都一样啊!
前段时间刚做过这道题!
给你个正确的程序!
采用不动点迭代法计算非线性方程x3+4x2-10=0,在区间[1,2]上的一个根。
不动点迭代法程序:
function
[y,n]=BDD(x,eps)
if
nargin==1
eps=1.0e-6;
elseif
nargin<1
error
return
end
x1=gg(x);
n=1;
while
(norm(x1-x)>=1e-6)&&(n<=10000)
x=x1;
x1=gg(x);
n=n+1;
end
y=x;
M函数:
function
f=gg(x)
f(1)=sqrt(2.5-(x^3)/4);
结果如下:
>>
BDD(1)
n
=
21
ans
=
1.3652
PS
不会一个学校的吧?哈哈!

disp('方程形式:a*x^2+b*x+c=0');
a=input('a=');
b=input('b=');
c=input('c=');

deta=b*b-4*a*c;
x=[(-b+sqrt(deta))/2/a;(-b-sqrt(deta))/2/a]

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%上面已经达到你的要求了
%%由于matlab在计算sqrt,就是根号的时候,自己会误别根号下的数,
%%如果是负数的话,Matlab会自动生成复数.
%%你如果想自己写这个开根号的号,可以这样

disp('方程形式:a*x^2+b*x+c=0');
a=input('a=');
b=input('b=');
c=input('c=');

a=1
b=2
c=3
deta=b*b-4*a*c;
if deta>=0
x=[(-b+sqrt(deta))/2/a;(-b-sqrt(deta))/2/a]
else
real=-b/2/a;
image=sqrt(-deta)/2/a;
x=[real+image*i;real-image*i]
end

当a小于0时sqrt(a)返回的就是复数啊。没问题啊

mathlab啊,我也想学呐!听说它无比强大···